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;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 节点ID,可以是菜单id和按钮id
|
* 节点ID,可以是菜单id和按钮id
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue