mirror of https://gitee.com/stylefeng/roses
【8.3.3】【role】增加接口:获取用户指定机构下的业务角色树
parent
b433948449
commit
a1a391f691
|
@ -75,7 +75,7 @@ public class SysRoleTreeDTO implements AbstractTreeNode<SysRoleTreeDTO> {
|
|||
* 用在用户绑定角色上,选中的则是绑定的
|
||||
*/
|
||||
@ChineseDescription("是否选中")
|
||||
private Boolean checkedFlag;
|
||||
private Boolean checkedFlag = false;
|
||||
|
||||
/**
|
||||
* 子节点
|
||||
|
|
|
@ -4,7 +4,9 @@ import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
|||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.role.SysRoleTreeDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.UserOrgDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysRoleAssignV2Service;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserOrgService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
@ -25,6 +27,9 @@ public class NewRoleAssignController {
|
|||
@Resource
|
||||
private SysUserOrgService sysUserOrgService;
|
||||
|
||||
@Resource
|
||||
private SysRoleAssignV2Service sysRoleAssignV2Service;
|
||||
|
||||
/**
|
||||
* 获取用户的所有机构列表
|
||||
*
|
||||
|
@ -37,6 +42,7 @@ public class NewRoleAssignController {
|
|||
|
||||
// 清空一些名称的返回
|
||||
for (UserOrgDTO userOrgDTO : list) {
|
||||
userOrgDTO.setCompanyId(null);
|
||||
userOrgDTO.setDeptId(null);
|
||||
userOrgDTO.setPositionId(null);
|
||||
}
|
||||
|
@ -44,4 +50,18 @@ public class NewRoleAssignController {
|
|||
return new SuccessResponseData<>(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户指定机构下的角色树(包含角色分类和角色)
|
||||
* <p>
|
||||
* 已经绑定的角色会checked
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2025/1/24 14:33
|
||||
*/
|
||||
@GetResource(name = "获取用户指定公司下的业务角色树", path = "/sysRoleAssign/v2/getCompanyBusinessRoleTree")
|
||||
public ResponseData<List<SysRoleTreeDTO>> getCompanyBusinessRoleTree(@RequestParam("userId") Long userId, @RequestParam("orgId") Long orgId) {
|
||||
List<SysRoleTreeDTO> list = sysRoleAssignV2Service.getCompanyBusinessRoleTree(userId, orgId);
|
||||
return new SuccessResponseData<>(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.user.factory;
|
||||
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.role.SysRoleTreeDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.UserRoleDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户绑定角色的工厂
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2025/1/24 15:23
|
||||
*/
|
||||
public class RoleAssignV2Factory {
|
||||
|
||||
/**
|
||||
* 在角色树上,绑定业务角色
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2025/1/24 15:27
|
||||
*/
|
||||
public static void mountBusinessRole(List<SysRoleTreeDTO> totalBusinessRoleTree, List<UserRoleDTO> userLinkedOrgRoleList) {
|
||||
|
||||
// 判断list中的角色,是否有绑定的
|
||||
for (SysRoleTreeDTO treeNode : totalBusinessRoleTree) {
|
||||
for (UserRoleDTO userRoleInfo : userLinkedOrgRoleList) {
|
||||
if (treeNode.getRoleTreeNodeId().equals(userRoleInfo.getRoleId())) {
|
||||
treeNode.setCheckedFlag(true);
|
||||
}
|
||||
}
|
||||
|
||||
// 如果有还有子集,则判断子集的列表中是否有绑定的角色
|
||||
if (treeNode.getChildren() != null && !treeNode.getChildren().isEmpty()) {
|
||||
mountBusinessRole(treeNode.getChildren(), userLinkedOrgRoleList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.user.service;
|
||||
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.role.SysRoleTreeDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 直接在用户管理界面,进行角色授权的业务
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2025/1/24 14:00
|
||||
*/
|
||||
public interface SysRoleAssignV2Service {
|
||||
|
||||
/**
|
||||
* 获取用户指定机构下的角色树(包含角色分类和角色)
|
||||
* <p>
|
||||
* 已经绑定的角色会checked
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2025/1/24 14:44
|
||||
*/
|
||||
List<SysRoleTreeDTO> getCompanyBusinessRoleTree(Long userId, Long orgId);
|
||||
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.user.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.stylefeng.roses.kernel.sys.api.SysRoleServiceApi;
|
||||
import cn.stylefeng.roses.kernel.sys.api.enums.role.RoleTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.role.SysRoleTreeDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.UserRoleDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.factory.RoleAssignV2Factory;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysRoleAssignV2Service;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserRoleService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 新的用户授权界面业务
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024/1/17 23:08
|
||||
*/
|
||||
@Service
|
||||
public class SysRoleAssignV2ServiceImpl implements SysRoleAssignV2Service {
|
||||
|
||||
@Resource
|
||||
private SysRoleServiceApi sysRoleServiceApi;
|
||||
|
||||
@Resource
|
||||
private SysUserRoleService sysUserRoleService;
|
||||
|
||||
@Override
|
||||
public List<SysRoleTreeDTO> getCompanyBusinessRoleTree(Long userId, Long orgId) {
|
||||
|
||||
// 1. 获取系统中所有业务角色的树(业务角色分类 + 业务角色)
|
||||
List<SysRoleTreeDTO> totalBusinessRoleTree = sysRoleServiceApi.roleCategoryAndRoleTreeList(RoleTypeEnum.BUSINESS_ROLE.getCode(), null);
|
||||
|
||||
// 2. 获改用户,指定的机构,已经绑定的了哪些业务角色
|
||||
List<UserRoleDTO> userLinkedOrgRoleList = sysUserRoleService.getUserLinkedOrgRoleList(userId);
|
||||
if (ObjectUtil.isEmpty(userLinkedOrgRoleList)) {
|
||||
return totalBusinessRoleTree;
|
||||
}
|
||||
userLinkedOrgRoleList = userLinkedOrgRoleList.stream().filter(item -> orgId.equals(item.getRoleOrgId())).collect(Collectors.toList());
|
||||
|
||||
// 3. 将用户绑定的角色,挂载到角色树中,赋值checked选项
|
||||
RoleAssignV2Factory.mountBusinessRole(totalBusinessRoleTree, userLinkedOrgRoleList);
|
||||
|
||||
return totalBusinessRoleTree;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue