From f414070272c727ab8843759578c665ca25a03e80 Mon Sep 17 00:00:00 2001 From: lilong Date: Sat, 12 Oct 2024 11:40:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20(feature/REQ-3068)=20=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96=EF=BC=8C=E5=8E=9F?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=95=E7=94=A8=E5=9C=B0=E6=96=B9=E5=A4=AA?= =?UTF-8?q?=E5=A4=9A=EF=BC=8C=E9=9C=80=E8=A6=81=E5=9B=9E=E5=BD=92=E7=9A=84?= =?UTF-8?q?=E5=9C=B0=E6=96=B9=E5=A4=AA=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/tyr/client/feign/TyrSaasRoleApi.java | 4 +++ .../controller/role/SaasRoleController.java | 5 +++ .../axzo/tyr/server/service/RoleService.java | 3 ++ .../server/service/impl/RoleServiceImpl.java | 32 +++++++++++++++++++ 4 files changed, 44 insertions(+) diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleApi.java index 9e351c72..013ac1e8 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleApi.java @@ -107,9 +107,13 @@ public interface TyrSaasRoleApi { * * @return */ + @Deprecated @PostMapping("/api/saasRole/queryBatchByIdentityIdType") ApiResult> queryBatchByIdentityIdType(@RequestBody List req); + @PostMapping("/api/saasRole/queryBatchByIdentityIdType/v2") + ApiResult> queryBatchByIdentityIdTypeV2(@RequestBody List req); + /** * 根据身份id身份类型查询是否为超管 * diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java index c2f8cabb..d380b81b 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java @@ -173,6 +173,11 @@ public class SaasRoleController implements TyrSaasRoleApi { return ApiResult.ok(roleService.queryBatchByIdentityIdType(req)); } + @Override + public ApiResult> queryBatchByIdentityIdTypeV2(List req) { + return ApiResult.ok(roleService.queryBatchByIdentityIdTypeV2(req)); + } + @Override public ApiResult> isSuperAdmin(List req) { return ApiResult.ok(roleService.isSuperAdmin(req)); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java index 2274e702..3174d2f0 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java @@ -55,8 +55,11 @@ public interface RoleService extends IService { List query(QuerySaasRoleReq req); + @Deprecated List queryBatchByIdentityIdType(List req); + List queryBatchByIdentityIdTypeV2(List req); + Long saveOrUpdate(SaveOrUpdateRoleVO saveOrUpdateRole); List isSuperAdmin(List req); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java index 435befac..65366659 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java @@ -333,6 +333,38 @@ public class RoleServiceImpl extends ServiceImpl @Override public List queryBatchByIdentityIdType(List req) { + List result = new ArrayList<>(); + req.stream().distinct().forEach(e -> { + if (e.getPersonId() != null) { + List roleIds = roleUserRelationDao.queryByPersonId(e.getPersonId(), e.getWorkspaceId(), e.getOuId()) + .stream() + .map(SaasRoleUserRelation::getRoleId) + .collect(Collectors.toList()); + List saasRoles = getByIds(roleIds, null, null, null, false, null); + result.add(QueryBatchByIdentityIdTypeRes.builder() + .identityId(e.getIdentityId()) + .identityType(e.getIdentityType()) + .workspaceId(e.getWorkspaceId()) + .ouId(e.getOuId()) + .personId(e.getPersonId()) + .role(saasRoles) + .build()); + } else { + result.add(QueryBatchByIdentityIdTypeRes.builder() + .identityId(e.getIdentityId()) + .identityType(e.getIdentityType()) + .workspaceId(e.getWorkspaceId()) + .ouId(e.getOuId()) + .role(queryByIdentityIdType(e.getIdentityId(), e.getIdentityType(), e.getWorkspaceId(), e.getOuId(), false)) + .build()); + } + + }); + return result; + } + + @Override + public List queryBatchByIdentityIdTypeV2(List req) { // 一起查询,减少数据库io,原来入参过多时,接口性能很差 List batchPersons = req.stream() .distinct()