From 538a17e8077010d4e7e35841e5cfffdf9b61f0f6 Mon Sep 17 00:00:00 2001 From: chenweiwei Date: Tue, 12 Sep 2023 23:14:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=A7=92=E8=89=B2=E6=9D=83?= =?UTF-8?q?=E9=99=90=E9=9B=86=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E6=9D=83=E9=99=90=E4=BD=9C=E7=94=A8=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../req/QuerySaasPermissionGroupReq.java | 10 +++++ .../client/model/req/QuerySaasRoleReq.java | 10 +++++ .../model/vo/SaasPermissionGroupVO.java | 1 + .../service/impl/PermissionGroupImpl.java | 45 +++++++++++++++++-- .../server/service/impl/RoleServiceImpl.java | 15 ++++--- 5 files changed, 71 insertions(+), 10 deletions(-) diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java index 8735d0ae..893ef00f 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java @@ -35,6 +35,16 @@ public class QuerySaasPermissionGroupReq extends PageRequest { */ private Integer isCommon; + /** + * 工作台id(过滤权限集作用范围) + */ + private List workspaceId; + + /** + * 单位id(过滤权限集作用范围) + */ + private List ouId; + /** * 创建者 */ diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java index 2527491b..94bc2937 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java @@ -33,6 +33,16 @@ public class QuerySaasRoleReq { */ private List ouTypeCode; + /** + * 工作台id(过滤权限集作用范围) + */ + private List workspaceId; + + /** + * 单位id(过滤权限集作用范围) + */ + private List ouId; + /** * 分组id */ diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java index 97102097..bc7b72c4 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java @@ -55,6 +55,7 @@ public class SaasPermissionGroupVO { * 权限 */ private List feature; + /** * 权限范围 */ diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java index 777362cc..a1a132d1 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java @@ -4,6 +4,7 @@ import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; import cn.axzo.framework.domain.page.PageResp; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import cn.axzo.tyr.client.model.enums.PermissionScopeType; import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq; import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO; @@ -99,10 +100,28 @@ public class PermissionGroupImpl implements PermissionGroupService { // 查询featureCode feature = featureService.listNodesByIds(permissionList.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList())); } - List saasPermissionGroupScopes = saasPermissionGroupScopeDao.lambdaQuery() + List saasPermissionGroupScopesSource = saasPermissionGroupScopeDao.lambdaQuery() .in(SaasPermissionGroupScope::getPgroupId, groupIds) .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) .list(); + // 过滤权限集作用范围 + List saasPermissionGroupScopes = saasPermissionGroupScopesSource.stream().filter(e -> { + // 过滤出选中的工作台 + if (CollectionUtils.isNotEmpty(req.getWorkspaceId()) + && PermissionScopeType.WORKSPACE.getCode().equals(e.getScopeType()) + && req.getWorkspaceId().contains(e.getScopeId())) { + req.getWorkspaceId().contains(e.getScopeId()); + return true; + } + // 过滤出选中的单位 + if (CollectionUtils.isNotEmpty(req.getOuId()) + && PermissionScopeType.OU.getCode().equals(e.getScopeType()) + && req.getOuId().contains(e.getScopeId())) { + req.getWorkspaceId().contains(e.getScopeId()); + return true; + } + return false; + }).collect(Collectors.toList()); // 组装填充字段 List finalFeature = feature; return groupList.stream().map(group -> @@ -110,7 +129,7 @@ public class PermissionGroupImpl implements PermissionGroupService { .id(group.getId()) .name(group.getName()) .feature(finalFeature) - .scopes(saasPermissionGroupScopes.stream().map(e -> BeanMapper.copyBean(e, SaasRolePermissionScopeVO.class)).collect(Collectors.toList())) + .scopes(saasPermissionGroupScopes.stream().filter(e -> e.getPgroupId().equals(group.getId())).map(e -> BeanMapper.copyBean(e, SaasRolePermissionScopeVO.class)).collect(Collectors.toList())) .createBy(group.getCreateBy()) .updateBy(group.getUpdateBy()) .type(group.getType()) @@ -167,10 +186,28 @@ public class PermissionGroupImpl implements PermissionGroupService { // 查询featureCode feature = featureService.listNodesByIds(permissionList.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList())); } - List saasPermissionGroupScopes = saasPermissionGroupScopeDao.lambdaQuery() + List saasPermissionGroupScopesSource = saasPermissionGroupScopeDao.lambdaQuery() .in(SaasPermissionGroupScope::getPgroupId, groupIds) .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) .list(); + // 过滤权限集作用范围 + List saasPermissionGroupScopes = saasPermissionGroupScopesSource.stream().filter(e -> { + // 过滤出选中的工作台 + if (CollectionUtils.isNotEmpty(req.getWorkspaceId()) + && PermissionScopeType.WORKSPACE.getCode().equals(e.getScopeType()) + && req.getWorkspaceId().contains(e.getScopeId())) { + req.getWorkspaceId().contains(e.getScopeId()); + return true; + } + // 过滤出选中的单位 + if (CollectionUtils.isNotEmpty(req.getOuId()) + && PermissionScopeType.OU.getCode().equals(e.getScopeType()) + && req.getOuId().contains(e.getScopeId())) { + req.getWorkspaceId().contains(e.getScopeId()); + return true; + } + return false; + }).collect(Collectors.toList()); // 组装填充字段 List finalFeature = feature; List pageList = groupList.stream().map(group -> @@ -178,7 +215,7 @@ public class PermissionGroupImpl implements PermissionGroupService { .id(group.getId()) .name(group.getName()) .feature(finalFeature) - .scopes(saasPermissionGroupScopes.stream().map(e -> BeanMapper.copyBean(e, SaasRolePermissionScopeVO.class)).collect(Collectors.toList())) + .scopes(saasPermissionGroupScopes.stream().filter(e -> e.getPgroupId().equals(group.getId())).map(e -> BeanMapper.copyBean(e, SaasRolePermissionScopeVO.class)).collect(Collectors.toList())) .createBy(group.getCreateBy()) .updateBy(group.getUpdateBy()) .type(group.getType()) 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 4450c7b9..5274ab9b 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 @@ -56,7 +56,7 @@ public class RoleServiceImpl implements RoleService { if (CollectionUtils.isEmpty(roleIds)) { return new ArrayList<>(); } - return getByIds(roleIds, null); + return getByIds(roleIds, null, null,null); } /** @@ -64,7 +64,7 @@ public class RoleServiceImpl implements RoleService { * * @return */ - public List getByIds(List roleIds, Integer isCommon) { + public List getByIds(List roleIds, Integer isCommon, List workspaceId, List ouId) { if (CollectionUtils.isEmpty(roleIds)) { return new ArrayList<>(); } @@ -79,9 +79,12 @@ public class RoleServiceImpl implements RoleService { // 转map pgrouRelationMap = saasPgroupRoleRelations.stream().collect(Collectors.groupingBy(SaasPgroupRoleRelation::getRoleId)); // 查询权限集 - pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder().isCommon(isCommon) - .ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())) - .build()) + pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder() + .isCommon(isCommon) + .ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())) + .workspaceId(workspaceId) + .ouId(ouId) + .build()) // 转map .stream().collect(Collectors.groupingBy(SaasPermissionGroupVO::getId)); } @@ -142,7 +145,7 @@ public class RoleServiceImpl implements RoleService { .eq(StringUtils.isNotBlank(req.getRoleType()), SaasRole::getRoleType, req.getRoleType()) .orderByDesc(BaseEntity::getId) .list(); - return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon()); + return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon(),req.getWorkspaceId(),req.getOuId()); } @Override