diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuOptionsService.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuOptionsService.java index cf2e604d3..0272efcb1 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuOptionsService.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuOptionsService.java @@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.request.SysMenuOptionsReq import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Set; /** * 菜单下的功能操作 服务类 @@ -81,6 +82,17 @@ public interface SysMenuOptionsService extends IService { */ List getTotalMenuOptionsList(); + /** + * 获取所有的菜单功能id + *

+ * 一般用在项目启动管理员角色绑定所有的菜单功能 + * + * @param roleLimitMenuIdsAndOptionIds 角色限制的菜单id和功能id集合 + * @author fengshuonan + * @since 2023/6/18 20:37 + */ + List getTotalMenuOptionsList(Set roleLimitMenuIdsAndOptionIds); + /** * 获取功能编码集合,通过功能id集合 * diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java index 9e8def446..6ea45aaab 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java @@ -117,8 +117,17 @@ public class SysMenuOptionsServiceImpl extends ServiceImpl getTotalMenuOptionsList() { + return this.getTotalMenuOptionsList(null); + } + + @Override + public List getTotalMenuOptionsList(Set roleLimitMenuIdsAndOptionIds) { LambdaQueryWrapper sysMenuOptionsLambdaQueryWrapper = new LambdaQueryWrapper<>(); - sysMenuOptionsLambdaQueryWrapper.select(SysMenuOptions::getMenuOptionId, SysMenuOptions::getMenuId, SysMenuOptions::getAppId, SysMenuOptions::getOptionName); + sysMenuOptionsLambdaQueryWrapper.select(SysMenuOptions::getMenuOptionId, SysMenuOptions::getMenuId, SysMenuOptions::getAppId, + SysMenuOptions::getOptionName); + if (ObjectUtil.isNotEmpty(roleLimitMenuIdsAndOptionIds)) { + sysMenuOptionsLambdaQueryWrapper.in(SysMenuOptions::getMenuOptionId, roleLimitMenuIdsAndOptionIds); + } return this.list(sysMenuOptionsLambdaQueryWrapper); } diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindTotalImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindTotalImpl.java index 0b9f90d0b..1c3fb2ac5 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindTotalImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/RoleBindTotalImpl.java @@ -21,6 +21,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Set; /** * 角色绑定权限,点击绑定所有时候的业务处理 @@ -52,7 +53,7 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction, RoleBindLimit } @Override - public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) { + public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest, Set roleLimitMenuIdsAndOptionIds) { Long roleId = roleBindPermissionRequest.getRoleId(); @@ -69,7 +70,7 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction, RoleBindLimit if (roleBindPermissionRequest.getChecked()) { // 获取所有的菜单 - List totalMenus = this.sysMenuService.getTotalMenus(); + List totalMenus = this.sysMenuService.getTotalMenus(roleLimitMenuIdsAndOptionIds); // 绑定角色的所有菜单 List sysRoleMenuList = new ArrayList<>(); @@ -83,7 +84,7 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction, RoleBindLimit this.sysRoleMenuService.saveBatch(sysRoleMenuList); // 获取所有的功能 - List sysMenuOptionsList = sysMenuOptionsService.getTotalMenuOptionsList(); + List sysMenuOptionsList = sysMenuOptionsService.getTotalMenuOptionsList(roleLimitMenuIdsAndOptionIds); // 绑定角色的所有功能 List sysRoleMenuOptionsList = new ArrayList<>();