feat:(REQ-3282) 实现通过权限查询有权限的用户列表接口

This commit is contained in:
李龙 2024-12-20 15:32:02 +08:00
parent 346837150b
commit 3c12051105
2 changed files with 54 additions and 4 deletions

View File

@ -72,7 +72,7 @@ public class UserPermissionController implements UserPermissionApi {
@Override @Override
public ApiResult<List<PermissionUserResp>> listPermissionUser(ListPermissionUserReq req) { public ApiResult<List<PermissionUserResp>> listPermissionUser(ListPermissionUserReq req) {
return null; return ApiResult.success(permissionService.listPermissionUser(req));
} }
private void check(ListUserPermissionReq req) { private void check(ListUserPermissionReq req) {

View File

@ -1,5 +1,7 @@
package cn.axzo.tyr.server.service.impl; package cn.axzo.tyr.server.service.impl;
import cn.axzo.tyr.client.model.req.ListIdentityFromPermissionReq;
import cn.axzo.tyr.client.model.res.ListIdentityFromPermissionResp;
import cn.axzo.tyr.feign.enums.IdentityTypeEnum; import cn.axzo.tyr.feign.enums.IdentityTypeEnum;
import cn.axzo.tyr.feign.enums.RolePermissionTagEnum; import cn.axzo.tyr.feign.enums.RolePermissionTagEnum;
import cn.axzo.tyr.feign.enums.RoleTypeEnum; import cn.axzo.tyr.feign.enums.RoleTypeEnum;
@ -11,9 +13,11 @@ import cn.axzo.tyr.server.service.PermissionService;
import cn.axzo.tyr.server.service.ProductPermissionCacheService; import cn.axzo.tyr.server.service.ProductPermissionCacheService;
import cn.axzo.tyr.server.service.RolePermissionCacheService; import cn.axzo.tyr.server.service.RolePermissionCacheService;
import cn.axzo.tyr.server.service.SaasFeatureResourceService; import cn.axzo.tyr.server.service.SaasFeatureResourceService;
import cn.axzo.tyr.server.service.TyrSaasAuthService;
import cn.axzo.tyr.server.service.WorkspaceProductService; import cn.axzo.tyr.server.service.WorkspaceProductService;
import cn.axzo.tyr.server.util.FeatureCodeUtil; import cn.axzo.tyr.server.util.FeatureCodeUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists; import org.apache.commons.compress.utils.Lists;
@ -42,6 +46,8 @@ public class PermissionServiceImpl implements PermissionService {
private SaasFeatureResourceService saasFeatureResourceService; private SaasFeatureResourceService saasFeatureResourceService;
@Autowired @Autowired
private FeatureCodeUtil featureCodeUtil; private FeatureCodeUtil featureCodeUtil;
@Autowired
private TyrSaasAuthService tyrSaasAuthService;
/** /**
* 1查询用户的角色 * 1查询用户的角色
@ -138,8 +144,8 @@ public class PermissionServiceImpl implements PermissionService {
/** /**
* 1根据权限code及相关条件查询项目的权限 * 1根据权限code及相关条件查询项目的权限
* 2查询单位项目的所有role * 2根据项目查询所有role
* 3根据所有role查询角色信息 * 3根据权限code查询有权限的角色信息
* 4根据项目的权限和role查询角色的权限信息 * 4根据项目的权限和role查询角色的权限信息
* 5解析有权限的admin role * 5解析有权限的admin role
* 6解析有权限的非admin role * 6解析有权限的非admin role
@ -152,7 +158,28 @@ public class PermissionServiceImpl implements PermissionService {
*/ */
@Override @Override
public List<PermissionUserResp> listPermissionUser(ListPermissionUserReq param) { public List<PermissionUserResp> listPermissionUser(ListPermissionUserReq param) {
return null; // 使用原来接口因为目前没有做用户维度的权限缓存对源代码优化成本高,效果不显著没有多大意义
List<ListIdentityFromPermissionReq> list = param.getPermissionUsers().stream()
.map(e -> JSONObject.parseObject(JSONObject.toJSONString(e), ListIdentityFromPermissionReq.class))
.collect(Collectors.toList());
List<ListIdentityFromPermissionResp> listIdentityFromPermissions = tyrSaasAuthService.batchListIdentityFromPermission(list);
return listIdentityFromPermissions.stream()
.map(e -> PermissionUserResp.builder()
.workspaceId(e.getWorkspaceId())
.ouId(e.getOuId())
.users(Optional.ofNullable(e.getUsers())
.map(users -> users.stream()
.map(user -> PermissionUserResp.User.builder()
.identityId(user.getIdentityId())
.identityType(user.getIdentityType())
.personId(user.getPersonalId())
.isSuperAdmin(user.isSuperAdmin())
.build())
.collect(Collectors.toSet()))
.orElseGet(Sets::newHashSet))
.build())
.collect(Collectors.toList());
} }
/** /**
@ -345,6 +372,29 @@ public class PermissionServiceImpl implements PermissionService {
.orElseGet(Lists::newArrayList))); .orElseGet(Lists::newArrayList)));
} }
// private Map<Long, List<ProductPermissionCacheService.PermissionDTO>> listWorkspacePermission(ListPermissionUserReq param) {
//
// WorkspaceProductService.ListWorkspacePermissionCacheParam listWorkspacePermissionCacheParam = WorkspaceProductService.ListWorkspacePermissionCacheParam.builder()
// .workspacePermissions(param.getPermissionUsers().stream()
// .map(e -> WorkspaceProductService.WorkspacePermission.builder()
// .workspaceId(e.getWorkspaceId())
// .featureCodes(Sets.newHashSet(e.getFeatureCode()))
// .terminal(e.getTerminal())
// .build())
// .collect(Collectors.toList()))
// .build();
// return workspaceProductService.listWorkspacePermissionCached(listWorkspacePermissionCacheParam)
// .stream()
// .collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId,
// e -> Optional.ofNullable(e.getProductPermissions())
// .map(productPermissions -> productPermissions.stream()
// .map(WorkspaceProductService.ProductPermission::getPermissions)
// .filter(Objects::nonNull)
// .flatMap(Collection::stream)
// .collect(Collectors.toList()))
// .orElseGet(Lists::newArrayList)));
// }
private List<SaasFeatureResourceService.SaasFeatureResourceCache> listAllSaasFeature(Map<Long, List<ProductPermissionCacheService.PermissionDTO>> workspacePermissions) { private List<SaasFeatureResourceService.SaasFeatureResourceCache> listAllSaasFeature(Map<Long, List<ProductPermissionCacheService.PermissionDTO>> workspacePermissions) {
Set<String> terminals = workspacePermissions.values().stream() Set<String> terminals = workspacePermissions.values().stream()