From 9c34e9cd89aea3779a7d39669e6d8efd040bce33 Mon Sep 17 00:00:00 2001 From: lilong Date: Thu, 31 Oct 2024 17:14:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20(feature/REQ-2595)=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=9D=83=E9=99=90=E6=97=B6=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=9B=B4=E6=96=B0=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PermissionQueryServiceImpl.java | 6 +++ .../server/service/impl/RoleServiceImpl.java | 54 ++++++++++++++----- ...asPgroupPermissionRelationServiceImpl.java | 12 +++++ 3 files changed, 58 insertions(+), 14 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java index 3811c916..1aba5c12 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java @@ -130,8 +130,14 @@ public class PermissionQueryServiceImpl implements PermissionQueryService { } List featureIds = permissions.stream() .map(PermissionDO::getFeatureIds) + .filter(Objects::nonNull) .flatMap(Set::stream) .collect(Collectors.toList()); + + if (CollectionUtils.isEmpty(featureIds)) { + return Collections.emptyList(); + } + //反查资源信息-仅页面 List resourceList = featureResourceService.listNavByIds(featureIds, FeatureResourceType.pageTypes()); //查所有上级菜单 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 a31acd65..49585e4b 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 @@ -1622,6 +1622,11 @@ public class RoleServiceImpl extends ServiceImpl .collect(Collectors.toList()); Map roles = item.getRoles().stream() .collect(Collectors.toMap(FeatureRoleRelationReq.Role::getRoleId, Function.identity(), (f, s) -> f)); + + List update = saasPgroupRoleRelations.stream() + .filter(e -> existGroupIds.contains(e.getGroupId())) + .collect(Collectors.toList()); + // 记录操作日志 try { saveOperateLog(item.getFeatureId(), operatorId, roleIds, req); @@ -1630,24 +1635,45 @@ public class RoleServiceImpl extends ServiceImpl } // 新增的 if (CollectionUtils.isNotEmpty(insert)) { - List insertRelation = new ArrayList<>(); - insert.forEach(group -> { - FeatureRoleRelationReq.Role role = roles.get(group.getRoleId()); + Set insertRelation = update.stream() + .map(group -> { + FeatureRoleRelationReq.Role role = roles.get(group.getRoleId()); - SaasPgroupPermissionRelation relation = new SaasPgroupPermissionRelation(); - relation.setFeatureId(item.getFeatureId()); - relation.setGroupId(group.getGroupId()); - relation.setCreateBy(operatorId); - relation.setFeatureType(item.getFeatureType()); - relation.setType(NEW_FEATURE); - relation.setTerminal(item.getTerminal()); - relation.setTags(Optional.ofNullable(role.getTags()) - .orElseGet(() -> Sets.newHashSet(RolePermissionTagEnum.JOINED))); - insertRelation.add(relation); - }); + SaasPgroupPermissionRelation relation = new SaasPgroupPermissionRelation(); + relation.setFeatureId(item.getFeatureId()); + relation.setGroupId(group.getGroupId()); + relation.setCreateBy(operatorId); + relation.setFeatureType(item.getFeatureType()); + relation.setType(NEW_FEATURE); + relation.setTerminal(item.getTerminal()); + relation.setTags(Optional.ofNullable(role.getTags()) + .orElseGet(() -> Sets.newHashSet(RolePermissionTagEnum.JOINED))); + return relation; + }) + .collect(Collectors.toSet()); saasPgroupPermissionRelationDao.saveBatch(insertRelation); } + // 都一起更新,以后可能会新增其他字段需要更新,让代码简单。也能看到更新时间 + if (CollectionUtils.isNotEmpty(update)) { + Set updateRelation = update.stream() + .map(e -> { + FeatureRoleRelationReq.Role role = roles.get(e.getRoleId()); + SaasPgroupPermissionRelation relation = new SaasPgroupPermissionRelation(); + relation.setFeatureId(item.getFeatureId()); + relation.setGroupId(e.getGroupId()); + relation.setCreateBy(operatorId); + relation.setFeatureType(item.getFeatureType()); + relation.setType(NEW_FEATURE); + relation.setTerminal(item.getTerminal()); + relation.setTags(Optional.ofNullable(role.getTags()) + .orElseGet(() -> Sets.newHashSet(RolePermissionTagEnum.JOINED))); + return relation; + }) + .collect(Collectors.toSet()); + saasPgroupPermissionRelationDao.saveBatch(updateRelation); + } + // 删除的 if (CollectionUtils.isNotEmpty(deleteGroupIds)) { saasPgroupPermissionRelationDao.removeByFeatureIdAndGroupIds(item.getFeatureId(), deleteGroupIds, operatorId); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationServiceImpl.java index 4b71e09f..bac4c60b 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationServiceImpl.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -71,6 +72,17 @@ public class SaasPgroupPermissionRelationServiceImpl if (CollectionUtils.isNotEmpty(deleteList)) { saasPgroupPermissionRelationDao.removeByIds(deleteList.stream().map(SaasPgroupPermissionRelation::getId).sorted().collect(Collectors.toList())); } + + Set existFeatureIdGroupIds = exists.stream() + .map(e -> e.getFeatureId() + "_" + e.getGroupId()) + .collect(Collectors.toSet()); + + List updates = relations.stream() + .filter(e -> existFeatureIdGroupIds.contains(e.getFeatureId() + "_" + e.getGroupId())) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(updates)) { + saasPgroupPermissionRelationDao.saveBatch(updates); + } } @Override