mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【permission】更新完成初始化角色绑定权限结构列表
parent
dd83342aa9
commit
a7441100f3
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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> {
|
||||
|
||||
/**
|
||||
* 节点ID,可以是菜单id和按钮id
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue