diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindOptionImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindOptionImpl.java index 334f43104..d9e68e9bb 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindOptionImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindOptionImpl.java @@ -3,8 +3,10 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.sys.api.SysUserRoleServiceApi; +import cn.stylefeng.roses.kernel.sys.api.entity.SysMenuOptions; import cn.stylefeng.roses.kernel.sys.api.enums.PermissionNodeTypeEnum; import cn.stylefeng.roses.kernel.sys.api.pojo.role.request.RoleBindPermissionRequest; +import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService; import cn.stylefeng.roses.kernel.sys.modular.role.action.RoleAssignOperateAction; import cn.stylefeng.roses.kernel.sys.modular.role.action.RoleBindLimitAction; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleLimit; @@ -38,6 +40,9 @@ public class RoleBindOptionImpl implements RoleAssignOperateAction, RoleBindLimi @Resource private SysUserRoleServiceApi sysUserRoleServiceApi; + @Resource + private SysMenuOptionsService sysMenuOptionsService; + @Override public PermissionNodeTypeEnum getNodeType() { return PermissionNodeTypeEnum.OPTIONS; @@ -55,10 +60,16 @@ public class RoleBindOptionImpl implements RoleAssignOperateAction, RoleBindLimi } if (roleBindPermissionRequest.getChecked()) { - SysRoleMenuOptions sysRoleMenuOptions = new SysRoleMenuOptions(); - sysRoleMenuOptions.setRoleId(roleId); - sysRoleMenuOptions.setMenuOptionId(menuOptionId); - this.sysRoleMenuOptionsService.save(sysRoleMenuOptions); + // 获取菜单功能的信息 + SysMenuOptions sysMenuOptions = sysMenuOptionsService.getById(menuOptionId); + if (sysMenuOptions != null) { + SysRoleMenuOptions sysRoleMenuOptions = new SysRoleMenuOptions(); + sysRoleMenuOptions.setRoleId(roleId); + sysRoleMenuOptions.setAppId(sysMenuOptions.getAppId()); + sysRoleMenuOptions.setMenuId(sysMenuOptions.getMenuId()); + sysRoleMenuOptions.setMenuOptionId(menuOptionId); + this.sysRoleMenuOptionsService.save(sysRoleMenuOptions); + } } else { // 当前正在进行的角色,不能禁用掉自己的权限