【8.3.3】【role】增加接口:获取用户指定机构下的业务角色树

pull/62/head
stylefeng 2025-01-24 15:38:54 +08:00
parent b433948449
commit a1a391f691
5 changed files with 136 additions and 1 deletions

View File

@ -75,7 +75,7 @@ public class SysRoleTreeDTO implements AbstractTreeNode<SysRoleTreeDTO> {
*
*/
@ChineseDescription("是否选中")
private Boolean checkedFlag;
private Boolean checkedFlag = false;
/**
*

View File

@ -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);
}
}

View File

@ -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);
}
}
}
}

View File

@ -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);
}

View File

@ -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;
}
}