mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【permission】【createSelectTreeStructure】初始化创建功能的方法
parent
8a1f08d9ae
commit
bad6136bc6
|
@ -3,6 +3,7 @@ package cn.stylefeng.roses.kernel.sys.modular.role.factory;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp;
|
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum;
|
import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem;
|
||||||
|
|
||||||
|
@ -43,18 +44,8 @@ public class PermissionAssignFactory {
|
||||||
ArrayList<RoleBindPermissionItem> roleBindPermissionItems = new ArrayList<>();
|
ArrayList<RoleBindPermissionItem> roleBindPermissionItems = new ArrayList<>();
|
||||||
|
|
||||||
for (SysMenu leafMenu : leafMenus) {
|
for (SysMenu leafMenu : leafMenus) {
|
||||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem();
|
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
|
||||||
|
leafMenu.getMenuId(), leafMenu.getMenuName(), PermissionNodeTypeEnum.MENU.getCode(), false);
|
||||||
// 设置节点id和名称为菜单id和菜单名称
|
|
||||||
roleBindPermissionItem.setNodeId(leafMenu.getMenuId());
|
|
||||||
roleBindPermissionItem.setNodeName(leafMenu.getMenuName());
|
|
||||||
|
|
||||||
// 设置节点类型为2-菜单
|
|
||||||
roleBindPermissionItem.setPermissionNodeType(PermissionNodeTypeEnum.MENU.getCode());
|
|
||||||
|
|
||||||
// 默认未选中
|
|
||||||
roleBindPermissionItem.setChecked(false);
|
|
||||||
|
|
||||||
roleBindPermissionItems.add(roleBindPermissionItem);
|
roleBindPermissionItems.add(roleBindPermissionItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,25 +68,34 @@ public class PermissionAssignFactory {
|
||||||
|
|
||||||
// 封装响应结果
|
// 封装响应结果
|
||||||
for (SysApp sysApp : sysApps) {
|
for (SysApp sysApp : sysApps) {
|
||||||
|
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
|
||||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem();
|
sysApp.getAppId(), sysApp.getAppName(), PermissionNodeTypeEnum.APP.getCode(), false);
|
||||||
|
|
||||||
// 设置应用id
|
|
||||||
roleBindPermissionItem.setNodeId(sysApp.getAppId());
|
|
||||||
|
|
||||||
// 设置应用名称
|
|
||||||
roleBindPermissionItem.setNodeName(sysApp.getAppName());
|
|
||||||
|
|
||||||
// 设置未选中
|
|
||||||
roleBindPermissionItem.setChecked(false);
|
|
||||||
|
|
||||||
// 设置类型为1-应用
|
|
||||||
roleBindPermissionItem.setPermissionNodeType(PermissionNodeTypeEnum.APP.getCode());
|
|
||||||
|
|
||||||
appResults.add(roleBindPermissionItem);
|
appResults.add(roleBindPermissionItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
return appResults;
|
return appResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/6/13 17:25
|
||||||
|
*/
|
||||||
|
public static List<RoleBindPermissionItem> createMenuOptions(List<SysMenuOptions> sysMenuOptionsList) {
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(sysMenuOptionsList)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<RoleBindPermissionItem> optionsResult = new ArrayList<>();
|
||||||
|
|
||||||
|
// 封装响应结果
|
||||||
|
for (SysMenuOptions sysMenuOptions : sysMenuOptionsList) {
|
||||||
|
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
|
||||||
|
sysMenuOptions.getMenuOptionId(), sysMenuOptions.getOptionName(), PermissionNodeTypeEnum.OPTIONS.getCode(), false);
|
||||||
|
optionsResult.add(roleBindPermissionItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
return optionsResult;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,4 +70,15 @@ public class RoleBindPermissionItem {
|
||||||
@ChineseDescription("子节点集合")
|
@ChineseDescription("子节点集合")
|
||||||
private List<RoleBindPermissionItem> children;
|
private List<RoleBindPermissionItem> children;
|
||||||
|
|
||||||
|
public RoleBindPermissionItem() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public RoleBindPermissionItem(Long nodeId, String nodeName, Integer permissionNodeType, Boolean checked) {
|
||||||
|
this.nodeId = nodeId;
|
||||||
|
this.nodeName = nodeName;
|
||||||
|
this.permissionNodeType = permissionNodeType;
|
||||||
|
this.checked = checked;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service.impl;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp;
|
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.factory.PermissionAssignFactory;
|
import cn.stylefeng.roses.kernel.sys.modular.role.factory.PermissionAssignFactory;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
||||||
|
@ -30,6 +32,9 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
||||||
@Resource
|
@Resource
|
||||||
private SysAppService sysAppService;
|
private SysAppService sysAppService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysMenuOptionsService sysMenuOptionsService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
// 1. 整理出一个总的响应的结构树,选择状态为空
|
// 1. 整理出一个总的响应的结构树,选择状态为空
|
||||||
|
@ -46,10 +51,6 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
||||||
@Override
|
@Override
|
||||||
public RoleBindPermissionResponse createSelectTreeStructure() {
|
public RoleBindPermissionResponse createSelectTreeStructure() {
|
||||||
|
|
||||||
// 最顶层,代表是否全选
|
|
||||||
RoleBindPermissionResponse roleBindPermissionResponse = new RoleBindPermissionResponse();
|
|
||||||
roleBindPermissionResponse.setChecked(false);
|
|
||||||
|
|
||||||
// 获取所有的菜单
|
// 获取所有的菜单
|
||||||
LambdaQueryWrapper<SysMenu> menuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysMenu> menuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
menuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuName, SysMenu::getMenuParentId, SysMenu::getAppId);
|
menuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuName, SysMenu::getMenuParentId, SysMenu::getAppId);
|
||||||
|
@ -61,23 +62,27 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
||||||
|
|
||||||
// 查询菜单对应的所有应用
|
// 查询菜单对应的所有应用
|
||||||
Set<Long> appIdList = totalMenus.stream().map(SysMenu::getAppId).collect(Collectors.toSet());
|
Set<Long> appIdList = totalMenus.stream().map(SysMenu::getAppId).collect(Collectors.toSet());
|
||||||
LambdaQueryWrapper<SysApp> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysApp> sysAppLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.in(SysApp::getAppId, appIdList);
|
sysAppLambdaQueryWrapper.in(SysApp::getAppId, appIdList);
|
||||||
queryWrapper.select(SysApp::getAppId, SysApp::getAppName);
|
sysAppLambdaQueryWrapper.select(SysApp::getAppId, SysApp::getAppName);
|
||||||
List<SysApp> totalAppList = sysAppService.list(queryWrapper);
|
List<SysApp> totalAppList = sysAppService.list(sysAppLambdaQueryWrapper);
|
||||||
|
|
||||||
// 组装所有的应用节点信息【初始化应用】
|
// 组装所有的应用节点信息【初始化应用】
|
||||||
List<RoleBindPermissionItem> totalResultApps = PermissionAssignFactory.createApps(totalAppList);
|
List<RoleBindPermissionItem> totalResultApps = PermissionAssignFactory.createApps(totalAppList);
|
||||||
|
|
||||||
|
|
||||||
// 组装所有的应用节点信息
|
|
||||||
|
|
||||||
|
|
||||||
// 获取所有的菜单上的功能
|
// 获取所有的菜单上的功能
|
||||||
|
LambdaQueryWrapper<SysMenuOptions> optionsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
optionsLambdaQueryWrapper.select(SysMenuOptions::getMenuOptionId, SysMenuOptions::getOptionName);
|
||||||
|
Set<Long> menuIds = totalResultMenus.stream().map(RoleBindPermissionItem::getNodeId).collect(Collectors.toSet());
|
||||||
|
optionsLambdaQueryWrapper.in(SysMenuOptions::getMenuId, menuIds);
|
||||||
|
List<SysMenuOptions> sysMenuOptionsList = sysMenuOptionsService.list(optionsLambdaQueryWrapper);
|
||||||
|
|
||||||
|
// 组装所有的应用节点信息【初始化菜单功能】
|
||||||
|
List<RoleBindPermissionItem> menuOptions = PermissionAssignFactory.createMenuOptions(sysMenuOptionsList);
|
||||||
|
|
||||||
// 获取菜单对应的应用
|
// 将应用、菜单、功能组成返回结果
|
||||||
|
RoleBindPermissionResponse roleBindPermissionResponse = new RoleBindPermissionResponse();
|
||||||
|
roleBindPermissionResponse.setChecked(false);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue