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.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.SysMenuOptions;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem;
|
||||
|
||||
|
@ -43,18 +44,8 @@ public class PermissionAssignFactory {
|
|||
ArrayList<RoleBindPermissionItem> roleBindPermissionItems = new ArrayList<>();
|
||||
|
||||
for (SysMenu leafMenu : leafMenus) {
|
||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem();
|
||||
|
||||
// 设置节点id和名称为菜单id和菜单名称
|
||||
roleBindPermissionItem.setNodeId(leafMenu.getMenuId());
|
||||
roleBindPermissionItem.setNodeName(leafMenu.getMenuName());
|
||||
|
||||
// 设置节点类型为2-菜单
|
||||
roleBindPermissionItem.setPermissionNodeType(PermissionNodeTypeEnum.MENU.getCode());
|
||||
|
||||
// 默认未选中
|
||||
roleBindPermissionItem.setChecked(false);
|
||||
|
||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
|
||||
leafMenu.getMenuId(), leafMenu.getMenuName(), PermissionNodeTypeEnum.MENU.getCode(), false);
|
||||
roleBindPermissionItems.add(roleBindPermissionItem);
|
||||
}
|
||||
|
||||
|
@ -77,25 +68,34 @@ public class PermissionAssignFactory {
|
|||
|
||||
// 封装响应结果
|
||||
for (SysApp sysApp : sysApps) {
|
||||
|
||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem();
|
||||
|
||||
// 设置应用id
|
||||
roleBindPermissionItem.setNodeId(sysApp.getAppId());
|
||||
|
||||
// 设置应用名称
|
||||
roleBindPermissionItem.setNodeName(sysApp.getAppName());
|
||||
|
||||
// 设置未选中
|
||||
roleBindPermissionItem.setChecked(false);
|
||||
|
||||
// 设置类型为1-应用
|
||||
roleBindPermissionItem.setPermissionNodeType(PermissionNodeTypeEnum.APP.getCode());
|
||||
|
||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
|
||||
sysApp.getAppId(), sysApp.getAppName(), PermissionNodeTypeEnum.APP.getCode(), false);
|
||||
appResults.add(roleBindPermissionItem);
|
||||
}
|
||||
|
||||
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("子节点集合")
|
||||
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.service.SysAppService;
|
||||
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.role.factory.PermissionAssignFactory;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
||||
|
@ -30,6 +32,9 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
|||
@Resource
|
||||
private SysAppService sysAppService;
|
||||
|
||||
@Resource
|
||||
private SysMenuOptionsService sysMenuOptionsService;
|
||||
|
||||
@Override
|
||||
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||
// 1. 整理出一个总的响应的结构树,选择状态为空
|
||||
|
@ -46,10 +51,6 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
|||
@Override
|
||||
public RoleBindPermissionResponse createSelectTreeStructure() {
|
||||
|
||||
// 最顶层,代表是否全选
|
||||
RoleBindPermissionResponse roleBindPermissionResponse = new RoleBindPermissionResponse();
|
||||
roleBindPermissionResponse.setChecked(false);
|
||||
|
||||
// 获取所有的菜单
|
||||
LambdaQueryWrapper<SysMenu> menuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
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());
|
||||
LambdaQueryWrapper<SysApp> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(SysApp::getAppId, appIdList);
|
||||
queryWrapper.select(SysApp::getAppId, SysApp::getAppName);
|
||||
List<SysApp> totalAppList = sysAppService.list(queryWrapper);
|
||||
LambdaQueryWrapper<SysApp> sysAppLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
sysAppLambdaQueryWrapper.in(SysApp::getAppId, appIdList);
|
||||
sysAppLambdaQueryWrapper.select(SysApp::getAppId, SysApp::getAppName);
|
||||
List<SysApp> totalAppList = sysAppService.list(sysAppLambdaQueryWrapper);
|
||||
|
||||
// 组装所有的应用节点信息【初始化应用】
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue