【7.6.0】【sys】【menu options】更新新增菜单功能的参数校验

pull/55/MERGE
fengshuonan 2023-06-15 23:31:06 +08:00
parent 35384ec146
commit 7c85d66986
3 changed files with 80 additions and 1 deletions

View File

@ -16,7 +16,17 @@ public enum SysMenuOptionsExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
SYS_MENU_OPTIONS_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在");
SYS_MENU_OPTIONS_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在"),
/**
*
*/
OPTIONS_CODE_REPEAT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10002", "同菜单下功能编码不能重复"),
/**
*
*/
OPTIONS_NAME_REPEAT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10003", "同菜单下功能名称不能重复");
/**
*

View File

@ -0,0 +1,62 @@
package cn.stylefeng.roses.kernel.sys.modular.menu.factory;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions;
import cn.stylefeng.roses.kernel.sys.modular.menu.enums.SysMenuOptionsExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.request.SysMenuOptionsRequest;
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
/**
*
*
* @author fengshuonan
* @since 2023/6/15 23:21
*/
public class MenuOptionsValidateFactory {
/**
*
*
* @author fengshuonan
* @since 2023/6/15 23:21
*/
public static void validateMenuOptionsParam(SysMenuOptionsRequest sysMenuOptionsRequest) {
SysMenuOptionsService sysMenuOptionsService = SpringUtil.getBean(SysMenuOptionsService.class);
// 1. 校验同菜单下不能编码重复
Long menuId = sysMenuOptionsRequest.getMenuId();
LambdaQueryWrapper<SysMenuOptions> codeWrapper = new LambdaQueryWrapper<>();
codeWrapper.eq(SysMenuOptions::getMenuId, menuId);
codeWrapper.eq(SysMenuOptions::getOptionCode, sysMenuOptionsRequest.getOptionCode());
// 如果是编辑菜单,则排除当前这个菜单的查询
if (sysMenuOptionsRequest.getMenuOptionId() != null) {
codeWrapper.ne(SysMenuOptions::getMenuOptionId, sysMenuOptionsRequest.getMenuOptionId());
}
long alreadyCodeCount = sysMenuOptionsService.count(codeWrapper);
if (alreadyCodeCount > 0) {
throw new ServiceException(SysMenuOptionsExceptionEnum.OPTIONS_CODE_REPEAT);
}
// 2. 校验同菜单下名称不能重复
LambdaQueryWrapper<SysMenuOptions> nameWrapper = new LambdaQueryWrapper<>();
nameWrapper.eq(SysMenuOptions::getMenuId, menuId);
nameWrapper.eq(SysMenuOptions::getOptionName, sysMenuOptionsRequest.getOptionName());
// 如果是编辑菜单,则排除当前这个菜单的查询
if (sysMenuOptionsRequest.getMenuOptionId() != null) {
nameWrapper.ne(SysMenuOptions::getMenuOptionId, sysMenuOptionsRequest.getMenuOptionId());
}
long alreadyNameCount = sysMenuOptionsService.count(nameWrapper);
if (alreadyNameCount > 0) {
throw new ServiceException(SysMenuOptionsExceptionEnum.OPTIONS_NAME_REPEAT);
}
}
}

View File

@ -9,6 +9,7 @@ import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveMenuCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions;
import cn.stylefeng.roses.kernel.sys.modular.menu.enums.SysMenuOptionsExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.menu.factory.MenuOptionsValidateFactory;
import cn.stylefeng.roses.kernel.sys.modular.menu.mapper.SysMenuOptionsMapper;
import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.request.SysMenuOptionsRequest;
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService;
@ -32,6 +33,12 @@ public class SysMenuOptionsServiceImpl extends ServiceImpl<SysMenuOptionsMapper,
@Override
public void add(SysMenuOptionsRequest sysMenuOptionsRequest) {
// 同菜单下功能名称和编码不能重复
MenuOptionsValidateFactory.validateMenuOptionsParam(sysMenuOptionsRequest);
// 获取菜单的应用id
SysMenuOptions sysMenuOptions = new SysMenuOptions();
BeanUtil.copyProperties(sysMenuOptionsRequest, sysMenuOptions);
this.save(sysMenuOptions);