diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/v2/UserPermissionController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/v2/UserPermissionController.java index aa901f15..489f10f6 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/v2/UserPermissionController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/v2/UserPermissionController.java @@ -72,7 +72,7 @@ public class UserPermissionController implements UserPermissionApi { @Override public ApiResult> listPermissionUser(ListPermissionUserReq req) { - return null; + return ApiResult.success(permissionService.listPermissionUser(req)); } private void check(ListUserPermissionReq req) { diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionServiceImpl.java index 36c82444..17455748 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionServiceImpl.java @@ -1,5 +1,7 @@ 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.RolePermissionTagEnum; 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.RolePermissionCacheService; 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.util.FeatureCodeUtil; import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.Lists; @@ -42,6 +46,8 @@ public class PermissionServiceImpl implements PermissionService { private SaasFeatureResourceService saasFeatureResourceService; @Autowired private FeatureCodeUtil featureCodeUtil; + @Autowired + private TyrSaasAuthService tyrSaasAuthService; /** * 1、查询用户的角色 @@ -138,8 +144,8 @@ public class PermissionServiceImpl implements PermissionService { /** * 1、根据权限code及相关条件查询项目的权限 - * 2、查询单位、项目的所有role - * 3、根据所有role查询角色信息 + * 2、根据项目查询所有role + * 3、根据权限code查询有权限的角色信息 * 4、根据项目的权限和role查询角色的权限信息 * 5、解析有权限的admin role * 6、解析有权限的非admin role @@ -152,7 +158,28 @@ public class PermissionServiceImpl implements PermissionService { */ @Override public List listPermissionUser(ListPermissionUserReq param) { - return null; + // 使用原来接口,因为目前没有做用户维度的权限缓存,对源代码优化成本高,效果不显著,没有多大意义, + List list = param.getPermissionUsers().stream() + .map(e -> JSONObject.parseObject(JSONObject.toJSONString(e), ListIdentityFromPermissionReq.class)) + .collect(Collectors.toList()); + List 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))); } +// private Map> 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 listAllSaasFeature(Map> workspacePermissions) { Set terminals = workspacePermissions.values().stream()