From 784db6f298bc186ed382ea2507dc245e086fc4c5 Mon Sep 17 00:00:00 2001 From: lilong Date: Fri, 25 Oct 2024 11:01:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20(feature/REQ-2750)=201=E3=80=81?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E7=BB=84=E4=BB=B6=E8=B5=84=E6=BA=90=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=97=B6groupCode=E8=A2=AB=E8=A6=86=E7=9B=96=E6=88=90?= =?UTF-8?q?code=E7=9A=84=E9=97=AE=E9=A2=98=202=E3=80=81=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=A1=B9=E7=9B=AE=E4=B8=8B=E6=9C=89=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=9A=84=E4=BA=BA=E6=97=A0=E6=B3=95=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=87=BAadmin=E8=A7=92=E8=89=B2=E7=9A=84=E4=BA=BA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SaasPageElementServiceImpl.java | 5 ++ .../service/impl/TyrSaasAuthServiceImpl.java | 52 +++++++++---------- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java index b18a6b40..a9a68965 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java @@ -604,6 +604,11 @@ public class SaasPageElementServiceImpl extends ServiceImpl listAdminRole(ListPermissionUser req) { - //超管和管理员 - ListRoleReq listSaasRoleParam = ListRoleReq.builder() - .workspaceId(req.getWorkspaceId()) - .ouId(req.getOuId()) - .roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue(), RoleTypeEnum.ADMIN.getValue())) - .build(); - return roleService.list(listSaasRoleParam); - } - private Set resolvePermissionAdminRole(List adminRoles, List productPermissions) { Set cooperateTypes = productPermissions.stream() @@ -585,21 +575,12 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { private Set resolvePermissionNormalRole(ListPermissionUser req, List productPermissions, - Set featureIds) { + Set featureIds, + List allRoles) { - // 因为通过权限id找对应的角色数据量巨大,所以通过找项目的角色,再找有权限的角色比较快 - Set allRoleIds = saasRoleUserRelationMapper.listRoleIds(SaasRoleUserRelationMapper.ListRole.builder() - .ouId(req.getOuId()) - .workspaceId(req.getWorkspaceId()) - .build()); - if (CollectionUtils.isEmpty(allRoleIds)) { - return Collections.emptySet(); - } - - List normalRoles = roleService.list(RoleService.ListSaasRoleParam.builder() - .roleIds(Lists.newArrayList(allRoleIds)) - .roleTypes(RoleTypeEnum.listNormal()) - .build()); + List normalRoles = allRoles.stream() + .filter(e -> !RoleTypeEnum.isAdmin(e.getRoleType())) + .collect(Collectors.toList()); if (CollectionUtils.isEmpty(normalRoles)) { return Collections.emptySet(); @@ -653,11 +634,30 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { List productPermissions, Set featureIds) { + // 因为通过权限id找对应的角色数据量巨大,所以通过找项目的角色,再找有权限的角色比较快 + Set allRoleIds = saasRoleUserRelationMapper.listRoleIds(SaasRoleUserRelationMapper.ListRole.builder() + .ouId(req.getOuId()) + .workspaceId(req.getWorkspaceId()) + .build()); + if (CollectionUtils.isEmpty(allRoleIds)) { + return Collections.emptyList(); + } + + List allRoles = roleService.list(ListRoleReq.builder() + .roleIds(Lists.newArrayList(allRoleIds)) + .build()); + + if (CollectionUtils.isEmpty(allRoles)) { + return Collections.emptyList(); + } + //超管和管理员 - List adminRoles = listAdminRole(req); + List adminRoles = allRoles.stream() + .filter(e -> RoleTypeEnum.isAdmin(e.getRoleType())) + .collect(Collectors.toList()); Set adminPermissionRoleIds = resolvePermissionAdminRole(adminRoles, productPermissions); - Set normalPermissionRoleIds = resolvePermissionNormalRole(req, productPermissions, featureIds); + Set normalPermissionRoleIds = resolvePermissionNormalRole(req, productPermissions, featureIds, allRoles); Set roleIds = Sets.newHashSet(); roleIds.addAll(adminPermissionRoleIds);