【7.3.4】更新校验菜单重复

pull/52/MERGE
fengshuonan 2023-03-14 15:06:07 +08:00
parent cbadecd3e2
commit 18743c4b99
2 changed files with 39 additions and 7 deletions

View File

@ -63,13 +63,6 @@ public class SysMenuRequest extends BaseRequest {
*
*/
@NotBlank(message = "菜单名称不能为空", groups = {add.class, edit.class})
@TableUniqueValue(
message = "菜单名称存在重复",
groups = {add.class, edit.class},
tableName = "sys_menu",
columnName = "menu_name",
idFieldName = "menu_id",
excludeLogicDeleteItems = true)
@ChineseDescription("菜单名称")
private String menuName;

View File

@ -68,6 +68,8 @@ import cn.stylefeng.roses.kernel.system.modular.menu.mapper.SysMenuMapper;
import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuButtonService;
import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuResourceService;
import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuService;
import cn.stylefeng.roses.kernel.validator.api.exception.ParamValidateException;
import cn.stylefeng.roses.kernel.validator.api.exception.enums.ValidatorExceptionEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -106,6 +108,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override
public void add(SysMenuRequest sysMenuRequest) {
// 校验菜单名称是否重复
validateMenu(sysMenuRequest);
// 如果父节点为空则填充为默认的父节点id
if (sysMenuRequest.getMenuParentId() == null) {
sysMenuRequest.setMenuParentId(TreeConstants.DEFAULT_PARENT_ID);
@ -165,6 +170,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Transactional(rollbackFor = Exception.class)
public void edit(SysMenuRequest sysMenuRequest) {
// 校验菜单名称是否重复
validateMenu(sysMenuRequest);
// 获取库中的菜单信息
SysMenu oldMenu = this.querySysMenu(sysMenuRequest);
@ -929,4 +937,35 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return ListUtil.toList(firstLevelMenus.values());
}
/**
*
*
* @author fengshuonan
* @date 2023/3/14 14:37
*/
private void validateMenu(SysMenuRequest request) {
SysMenuRequest param = new SysMenuRequest();
param.setAppCode(request.getAppCode());
param.setMenuName(request.getMenuName());
// 查询应用编码下是否存在该名称的菜单
List<SysMenu> list = findList(param);
if (ObjectUtil.isNotEmpty(list)) {
boolean haveSameFlag = true;
// 如果请求参数中有菜单id则为编辑菜单操作可以和本菜单重复
for (SysMenu sysMenu : list) {
if (sysMenu.getMenuId().equals(request.getMenuId())) {
haveSameFlag = false;
break;
}
}
if (haveSameFlag) {
throw new ParamValidateException(ValidatorExceptionEnum.TABLE_UNIQUE_VALIDATE_ERROR, request.getMenuName());
}
}
}
}