【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; 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.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.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.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;
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -45,7 +48,7 @@ public class PermissionAssignFactory {
for (SysMenu leafMenu : leafMenus) { for (SysMenu leafMenu : leafMenus) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem( 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); roleBindPermissionItems.add(roleBindPermissionItem);
} }
@ -69,7 +72,7 @@ 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); sysApp.getAppId(), TreeConstants.DEFAULT_PARENT_ID, sysApp.getAppName(), PermissionNodeTypeEnum.APP.getCode(), false);
appResults.add(roleBindPermissionItem); appResults.add(roleBindPermissionItem);
} }
@ -93,11 +96,36 @@ public class PermissionAssignFactory {
// 封装响应结果 // 封装响应结果
for (SysMenuOptions sysMenuOptions : sysMenuOptionsList) { for (SysMenuOptions sysMenuOptions : sysMenuOptionsList) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem( 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); optionsResult.add(roleBindPermissionItem);
} }
return optionsResult; 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; package cn.stylefeng.roses.kernel.sys.modular.role.pojo.response;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.tree.factory.base.AbstractTreeNode;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@ -38,7 +39,7 @@ import java.util.List;
* @since 2023/6/13 13:54 * @since 2023/6/13 13:54
*/ */
@Data @Data
public class RoleBindPermissionItem { public class RoleBindPermissionItem implements AbstractTreeNode<RoleBindPermissionItem> {
/** /**
* IDidid * IDidid
@ -46,6 +47,12 @@ public class RoleBindPermissionItem {
@ChineseDescription("节点ID") @ChineseDescription("节点ID")
private Long nodeId; 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.nodeId = nodeId;
this.nodeParentId = parentId;
this.nodeName = nodeName; this.nodeName = nodeName;
this.permissionNodeType = permissionNodeType; this.permissionNodeType = permissionNodeType;
this.checked = checked; 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 @Override
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) { public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
// 1. 整理出一个总的响应的结构树,选择状态为空
// 1. 整理出一个总的响应的结构树,选择状态为空
RoleBindPermissionResponse selectTreeStructure = this.createSelectTreeStructure();
// 2. 获取角色绑定的应用,菜单,功能列表 // 2. 获取角色绑定的应用,菜单,功能列表
@ -65,6 +66,7 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
LambdaQueryWrapper<SysApp> sysAppLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysApp> sysAppLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysAppLambdaQueryWrapper.in(SysApp::getAppId, appIdList); sysAppLambdaQueryWrapper.in(SysApp::getAppId, appIdList);
sysAppLambdaQueryWrapper.select(SysApp::getAppId, SysApp::getAppName); sysAppLambdaQueryWrapper.select(SysApp::getAppId, SysApp::getAppName);
sysAppLambdaQueryWrapper.orderByAsc(SysApp::getAppSort);
List<SysApp> totalAppList = sysAppService.list(sysAppLambdaQueryWrapper); List<SysApp> totalAppList = sysAppService.list(sysAppLambdaQueryWrapper);
// 组装所有的应用节点信息【初始化应用】 // 组装所有的应用节点信息【初始化应用】
@ -72,19 +74,16 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
// 获取所有的菜单上的功能 // 获取所有的菜单上的功能
LambdaQueryWrapper<SysMenuOptions> optionsLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysMenuOptions> optionsLambdaQueryWrapper = new LambdaQueryWrapper<>();
optionsLambdaQueryWrapper.select(SysMenuOptions::getMenuOptionId, SysMenuOptions::getOptionName); optionsLambdaQueryWrapper.select(SysMenuOptions::getMenuId, SysMenuOptions::getMenuOptionId, SysMenuOptions::getOptionName);
Set<Long> menuIds = totalResultMenus.stream().map(RoleBindPermissionItem::getNodeId).collect(Collectors.toSet()); Set<String> menuIds = totalResultMenus.stream().map(RoleBindPermissionItem::getNodeId).collect(Collectors.toSet());
optionsLambdaQueryWrapper.in(SysMenuOptions::getMenuId, menuIds); optionsLambdaQueryWrapper.in(SysMenuOptions::getMenuId, menuIds);
List<SysMenuOptions> sysMenuOptionsList = sysMenuOptionsService.list(optionsLambdaQueryWrapper); List<SysMenuOptions> sysMenuOptionsList = sysMenuOptionsService.list(optionsLambdaQueryWrapper);
// 组装所有的应用节点信息【初始化菜单功能】 // 组装所有的应用节点信息【初始化菜单功能】
List<RoleBindPermissionItem> menuOptions = PermissionAssignFactory.createMenuOptions(sysMenuOptionsList); List<RoleBindPermissionItem> totalResultOptions = PermissionAssignFactory.createMenuOptions(sysMenuOptionsList);
// 将应用、菜单、功能组成返回结果 // 将应用、菜单、功能组成返回结果
RoleBindPermissionResponse roleBindPermissionResponse = new RoleBindPermissionResponse(); return PermissionAssignFactory.composeSelectStructure(totalResultApps, totalResultMenus, totalResultOptions);
roleBindPermissionResponse.setChecked(false);
return null;
} }
} }