【7.6.0】【sys】【permission】更新完成初始化角色绑定权限结构列表

pull/55/MERGE
fengshuonan 2023-06-13 18:03:05 +08:00
parent dd83342aa9
commit a7441100f3
3 changed files with 68 additions and 13 deletions

View File

@ -1,11 +1,14 @@
package cn.stylefeng.roses.kernel.sys.modular.role.factory;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.roses.kernel.rule.constants.TreeConstants;
import cn.stylefeng.roses.kernel.rule.tree.factory.DefaultTreeBuildFactory;
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;
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
import java.util.ArrayList;
import java.util.List;
@ -45,7 +48,7 @@ public class PermissionAssignFactory {
for (SysMenu leafMenu : leafMenus) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
leafMenu.getMenuId(), leafMenu.getMenuName(), PermissionNodeTypeEnum.MENU.getCode(), false);
leafMenu.getMenuId(), leafMenu.getAppId(), leafMenu.getMenuName(), PermissionNodeTypeEnum.MENU.getCode(), false);
roleBindPermissionItems.add(roleBindPermissionItem);
}
@ -69,7 +72,7 @@ public class PermissionAssignFactory {
// 封装响应结果
for (SysApp sysApp : sysApps) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
sysApp.getAppId(), sysApp.getAppName(), PermissionNodeTypeEnum.APP.getCode(), false);
sysApp.getAppId(), TreeConstants.DEFAULT_PARENT_ID, sysApp.getAppName(), PermissionNodeTypeEnum.APP.getCode(), false);
appResults.add(roleBindPermissionItem);
}
@ -93,11 +96,36 @@ public class PermissionAssignFactory {
// 封装响应结果
for (SysMenuOptions sysMenuOptions : sysMenuOptionsList) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(
sysMenuOptions.getMenuOptionId(), sysMenuOptions.getOptionName(), PermissionNodeTypeEnum.OPTIONS.getCode(), false);
sysMenuOptions.getMenuOptionId(), sysMenuOptions.getMenuId(), sysMenuOptions.getOptionName(), PermissionNodeTypeEnum.OPTIONS.getCode(), false);
optionsResult.add(roleBindPermissionItem);
}
return optionsResult;
}
/**
*
*
* @param apps
* @param menus
* @param options
* @author fengshuonan
* @since 2023/6/13 17:43
*/
public static RoleBindPermissionResponse composeSelectStructure(List<RoleBindPermissionItem> apps, List<RoleBindPermissionItem> menus, List<RoleBindPermissionItem> options) {
// 定义全选属性
RoleBindPermissionResponse roleBindPermissionResponse = new RoleBindPermissionResponse();
roleBindPermissionResponse.setChecked(false);
// 合并应用菜单和功能,并构建树形结构
apps.addAll(menus);
apps.addAll(options);
List<RoleBindPermissionItem> roleBindPermissionItems = new DefaultTreeBuildFactory<RoleBindPermissionItem>().doTreeBuild(apps);
roleBindPermissionResponse.setAppPermissionList(roleBindPermissionItems);
return roleBindPermissionResponse;
}
}

View File

@ -25,6 +25,7 @@
package cn.stylefeng.roses.kernel.sys.modular.role.pojo.response;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.tree.factory.base.AbstractTreeNode;
import lombok.Data;
import java.util.List;
@ -38,7 +39,7 @@ import java.util.List;
* @since 2023/6/13 13:54
*/
@Data
public class RoleBindPermissionItem {
public class RoleBindPermissionItem implements AbstractTreeNode<RoleBindPermissionItem> {
/**
* IDidid
@ -46,6 +47,12 @@ public class RoleBindPermissionItem {
@ChineseDescription("节点ID")
private Long nodeId;
/**
* id
*/
@ChineseDescription("父级节点id")
private Long nodeParentId;
/**
*
*/
@ -74,11 +81,32 @@ public class RoleBindPermissionItem {
}
public RoleBindPermissionItem(Long nodeId, String nodeName, Integer permissionNodeType, Boolean checked) {
public RoleBindPermissionItem(Long nodeId, Long parentId, String nodeName, Integer permissionNodeType, Boolean checked) {
this.nodeId = nodeId;
this.nodeParentId = parentId;
this.nodeName = nodeName;
this.permissionNodeType = permissionNodeType;
this.checked = checked;
}
@Override
public String getNodeId() {
if (this.nodeId == null) {
return "";
}
return this.nodeId.toString();
}
@Override
public String getNodeParentId() {
if (this.nodeParentId == null) {
return "";
}
return this.nodeParentId.toString();
}
@Override
public void setChildrenNodes(List<RoleBindPermissionItem> childrenNodes) {
this.children = childrenNodes;
}
}

View File

@ -37,8 +37,9 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
@Override
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
// 1. 整理出一个总的响应的结构树,选择状态为空
// 1. 整理出一个总的响应的结构树,选择状态为空
RoleBindPermissionResponse selectTreeStructure = this.createSelectTreeStructure();
// 2. 获取角色绑定的应用,菜单,功能列表
@ -65,6 +66,7 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
LambdaQueryWrapper<SysApp> sysAppLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysAppLambdaQueryWrapper.in(SysApp::getAppId, appIdList);
sysAppLambdaQueryWrapper.select(SysApp::getAppId, SysApp::getAppName);
sysAppLambdaQueryWrapper.orderByAsc(SysApp::getAppSort);
List<SysApp> totalAppList = sysAppService.list(sysAppLambdaQueryWrapper);
// 组装所有的应用节点信息【初始化应用】
@ -72,19 +74,16 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
// 获取所有的菜单上的功能
LambdaQueryWrapper<SysMenuOptions> optionsLambdaQueryWrapper = new LambdaQueryWrapper<>();
optionsLambdaQueryWrapper.select(SysMenuOptions::getMenuOptionId, SysMenuOptions::getOptionName);
Set<Long> menuIds = totalResultMenus.stream().map(RoleBindPermissionItem::getNodeId).collect(Collectors.toSet());
optionsLambdaQueryWrapper.select(SysMenuOptions::getMenuId, SysMenuOptions::getMenuOptionId, SysMenuOptions::getOptionName);
Set<String> 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);
List<RoleBindPermissionItem> totalResultOptions = PermissionAssignFactory.createMenuOptions(sysMenuOptionsList);
// 将应用、菜单、功能组成返回结果
RoleBindPermissionResponse roleBindPermissionResponse = new RoleBindPermissionResponse();
roleBindPermissionResponse.setChecked(false);
return null;
return PermissionAssignFactory.composeSelectStructure(totalResultApps, totalResultMenus, totalResultOptions);
}
}