mirror of https://gitee.com/stylefeng/roses
【7.3.4】更新校验菜单重复
parent
cbadecd3e2
commit
18743c4b99
|
@ -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;
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue