菜单相关优化

v1.4.1
hiparker 4 years ago
parent 0c80573913
commit d71f4883a8

@ -36,7 +36,7 @@ public enum SystemMsg implements BaseMsg {
* *
*/ */
EXCEPTION_MENU_PERMISSIONS_UNIQUE(20050,"权限重复,该权限编号已存在"), EXCEPTION_MENU_PERMISSIONS_UNIQUE(20050,"权限重复,该权限编号已存在"),
EXCEPTION_MENU_HANDLE_SELF(20051,"不可操作自身"),
/** /**
* *

@ -60,8 +60,8 @@ import java.util.Set;
@Service @Service
public class MenuServiceImpl extends CrudServiceImpl<MenuMapper, SysMenu, MenuModel> implements IMenuService { public class MenuServiceImpl extends CrudServiceImpl<MenuMapper, SysMenu, MenuModel> implements IMenuService {
/** 按钮类型 */ /** 菜单管理ID */
private static final String BUTTON_TYPE = "2"; private static final String MENU_ID = "2";
@Autowired(required = false) @Autowired(required = false)
private MenuMapper mapper; private MenuMapper mapper;
@ -138,6 +138,15 @@ public class MenuServiceImpl extends CrudServiceImpl<MenuMapper, SysMenu, MenuMo
return null; return null;
} }
// 如果开启 隐藏功能
if(DictType.NO_YES_YES.getValue().equals(model.getHidden())){
// 需要判断是否直接隐藏掉 菜单管理功能 (防止直接隐藏掉后 无法管理菜单)
if(MENU_ID.equals(model.getId())){
// 不可操作自身
throw new ServiceException(SystemMsg.EXCEPTION_MENU_HANDLE_SELF);
}
}
// 容错处理 // 容错处理
// 如果根结点为0 且 为菜单类型 判断首位是否为 / 如果没有则自动加 / // 如果根结点为0 且 为菜单类型 判断首位是否为 / 如果没有则自动加 /
if(MenuConstants.GEN_ID.equals(model.getParentId())){ if(MenuConstants.GEN_ID.equals(model.getParentId())){
@ -207,6 +216,12 @@ public class MenuServiceImpl extends CrudServiceImpl<MenuMapper, SysMenu, MenuMo
return false; return false;
} }
// 需要判断是否直接删 菜单管理功能 (防止直接删除掉后 无法管理菜单)
if(MENU_ID.equals(menuModel.getId())){
// 不可操作自身
throw new ServiceException(SystemMsg.EXCEPTION_MENU_HANDLE_SELF);
}
// 清除缓存 // 清除缓存
this.clearCache(menuModel); this.clearCache(menuModel);
@ -229,14 +244,19 @@ public class MenuServiceImpl extends CrudServiceImpl<MenuMapper, SysMenu, MenuMo
super.findList(queryWrapper) super.findList(queryWrapper)
); );
// 清除缓存 // 循环处理
for (MenuModel menuModel : menuList) { for (MenuModel menuModel : menuList) {
this.clearCache(menuModel); // 需要判断是否直接删 菜单管理功能 (防止直接删除掉后 无法管理菜单)
if(MENU_ID.equals(menuModel.getId())){
// 不可操作自身
throw new ServiceException(SystemMsg.EXCEPTION_MENU_HANDLE_SELF);
} }
// 先删除子数据 // 清除缓存
for (String id : ids) { this.clearCache(menuModel);
this.deleteByParentId(id);
// 先删子数据
this.deleteByParentId(menuModel.getId());
} }
// 移除权限数据 // 移除权限数据
@ -320,7 +340,7 @@ public class MenuServiceImpl extends CrudServiceImpl<MenuMapper, SysMenu, MenuMo
if(model == null){ if(model == null){
return null; return null;
} }
if(!BUTTON_TYPE.equals(model.getType())){ if(!MenuConstants.BUTTON.equals(model.getType())){
return null; return null;
} }
@ -329,7 +349,7 @@ public class MenuServiceImpl extends CrudServiceImpl<MenuMapper, SysMenu, MenuMo
// code 唯一 // code 唯一
wrapper.eq(MyBatisConstants.FIELD_DELETE_LOGIC, DictType.NO_YES_NO.getValue()) wrapper.eq(MyBatisConstants.FIELD_DELETE_LOGIC, DictType.NO_YES_NO.getValue())
.eq("permissions", model.getPermissions()) .eq("permissions", model.getPermissions())
.eq("type", BUTTON_TYPE); .eq("type", MenuConstants.BUTTON);
// 重复校验排除自身 // 重复校验排除自身
if(StringUtils.isNotEmpty(model.getId())){ if(StringUtils.isNotEmpty(model.getId())){

@ -98,6 +98,7 @@
c.icon, c.icon,
c.url, c.url,
c.component, c.component,
c.always_show,
c.sort_no c.sort_no
from from
sys_user_role_ref a, sys_user_role_ref a,
@ -128,6 +129,7 @@
c.icon, c.icon,
c.url, c.url,
c.component, c.component,
c.always_show,
c.sort_no c.sort_no
from from
sys_user_role_ref a, sys_user_role_ref a,

Loading…
Cancel
Save