【7.6.0】【sys】【permission】【createSelectTreeStructure】初始化创建功能的方法

pull/55/MERGE
fengshuonan 2023-06-13 17:38:54 +08:00
parent 8a1f08d9ae
commit bad6136bc6
3 changed files with 57 additions and 41 deletions

View File

@ -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;
}
} }

View File

@ -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;
}
} }

View File

@ -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;
} }