From 6e45898d3b8fd471179eeb51344d7e4ed8aeb463 Mon Sep 17 00:00:00 2001 From: lilong Date: Thu, 1 Aug 2024 16:11:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:(REQ-2720)=20=E4=BF=AE=E6=94=B9=E6=97=A7?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=A0=91=E7=BC=93=E5=AD=98=EF=BC=8C=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E6=B2=A1=E6=9C=89=E6=8A=8A=E7=88=B6=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E7=9A=84=E6=9D=83=E9=99=90=E5=AD=98=E5=82=A8=E8=B5=B7=E6=9D=A5?= =?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AF=E5=AE=9E=E9=99=85=E6=9C=89=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/res/SimplePermissionPointResp.java | 5 +++ .../inner/CacheProductPermissionHandler.java | 31 ++++++++++++------- .../inner/CacheRolePermissionHandler.java | 29 ++++++++++------- .../impl/PermissionPointServiceImpl.java | 4 ++- .../service/impl/TyrSaasAuthServiceImpl.java | 2 +- 5 files changed, 45 insertions(+), 26 deletions(-) diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/SimplePermissionPointResp.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/SimplePermissionPointResp.java index afe9bd03..bb57fc9f 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/SimplePermissionPointResp.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/SimplePermissionPointResp.java @@ -37,6 +37,11 @@ public class SimplePermissionPointResp implements IBaseTree children; diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductPermissionHandler.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductPermissionHandler.java index 28742366..22813a94 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductPermissionHandler.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductPermissionHandler.java @@ -5,11 +5,12 @@ import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventHandler; import cn.axzo.tyr.client.model.req.PageProductFeatureRelationReq; import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; +import cn.axzo.tyr.client.model.req.QueryPermissionByIdsReq; import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp; +import cn.axzo.tyr.client.model.res.SimplePermissionPointResp; import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload; -import cn.axzo.tyr.server.repository.dao.SaasFeatureDao; -import cn.axzo.tyr.server.repository.entity.SaasFeature; import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation; +import cn.axzo.tyr.server.service.PermissionPointService; import cn.axzo.tyr.server.service.ProductFeatureRelationService; import cn.axzo.tyr.server.service.ProductPermissionCacheService; import cn.axzo.tyr.server.service.SaasFeatureResourceService; @@ -50,7 +51,7 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing @Autowired private SaasFeatureResourceService saasFeatureResourceService; @Autowired - private SaasFeatureDao saasFeatureDao; + private PermissionPointService permissionPointService; @Override public void onEvent(Event event, EventConsumer.Context context) { @@ -94,9 +95,11 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing return Collections.emptyList(); } + // 新的菜单树是是把有权限点的父节点也存进去了,所以直接解析 Map featureResources = listSaasFeatureResource(productPermissions); - Map saasFeatures = listSaasFeature(productPermissions); + // 旧的菜单树只存储了权限点信息,没有把父节点存进去,需要解析父节点进行存储 + Map saasFeatures = listSaasFeature(productPermissions); return productPermissions.stream() .collect(Collectors.groupingBy(SaasProductModuleFeatureRelation::getProductModuleId)) @@ -135,14 +138,14 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing .collect(Collectors.toList()); } - SaasFeature saasFeature = saasFeatures.get(relation.getFeatureId()); + SimplePermissionPointResp saasFeature = saasFeatures.get(relation.getFeatureId()); if (Objects.isNull(saasFeature)) { return null; } return Lists.newArrayList(ProductPermissionCacheService.PermissionDTO.builder() .featureId(saasFeature.getId()) - .featureCode(saasFeature.getFeatureCode()) + .featureCode(saasFeature.getCode()) .featureType(saasFeature.getFeatureType()) .terminal(saasFeature.getTerminal()) .cooperateType(relation.getDictCode()) @@ -187,19 +190,23 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing .collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity())); } - private Map listSaasFeature(List productPermissions) { + private Map listSaasFeature(List productPermissions) { - List featureIds = productPermissions.stream() + Set featureIds = productPermissions.stream() .filter(e -> Objects.equals(e.getType(), OLD_FEATURE)) .map(SaasProductModuleFeatureRelation::getFeatureId) - .distinct() - .collect(Collectors.toList()); + .collect(Collectors.toSet()); if (CollectionUtils.isEmpty(featureIds)) { return Collections.emptyMap(); } - return saasFeatureDao.listByIds(featureIds).stream() - .collect(Collectors.toMap(SaasFeature::getId, Function.identity())); + return permissionPointService.listPermissionByIds( + QueryPermissionByIdsReq.builder() + .ids(featureIds) + .includeParent(true) + .build()) + .stream() + .collect(Collectors.toMap(SimplePermissionPointResp::getId, Function.identity())); } } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRolePermissionHandler.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRolePermissionHandler.java index 8f115601..c2b24650 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRolePermissionHandler.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRolePermissionHandler.java @@ -4,12 +4,13 @@ import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventHandler; import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; +import cn.axzo.tyr.client.model.req.QueryPermissionByIdsReq; import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp; import cn.axzo.tyr.client.model.res.SaasPermissionRelationRes; import cn.axzo.tyr.client.model.res.SaasRoleRes; +import cn.axzo.tyr.client.model.res.SimplePermissionPointResp; import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload; -import cn.axzo.tyr.server.repository.dao.SaasFeatureDao; -import cn.axzo.tyr.server.repository.entity.SaasFeature; +import cn.axzo.tyr.server.service.PermissionPointService; import cn.axzo.tyr.server.service.RolePermissionCacheService; import cn.axzo.tyr.server.service.RoleService; import cn.axzo.tyr.server.service.SaasFeatureResourceService; @@ -50,7 +51,7 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea @Autowired private SaasFeatureResourceService saasFeatureResourceService; @Autowired - private SaasFeatureDao saasFeatureDao; + private PermissionPointService permissionPointService; @Override public void onEvent(Event event, EventConsumer.Context context) { @@ -94,7 +95,7 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea Map featureResources = listSaasFeatureResource(roles); - Map saasFeatures = listSaasFeature(roles); + Map saasFeatures = listSaasFeature(roles); return roles.stream() .map(e -> { @@ -127,13 +128,13 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea .build()) .collect(Collectors.toList()); } - SaasFeature saasFeature = saasFeatures.get(permissionRelation.getFeatureId()); + SimplePermissionPointResp saasFeature = saasFeatures.get(permissionRelation.getFeatureId()); if (Objects.isNull(saasFeature)) { return null; } return Lists.newArrayList(RolePermissionCacheService.PermissionDTO.builder() .featureId(saasFeature.getId()) - .featureCode(saasFeature.getFeatureCode()) + .featureCode(saasFeature.getCode()) .featureType(saasFeature.getFeatureType()) .terminal(saasFeature.getTerminal()) .build()); @@ -180,22 +181,26 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea .collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity())); } - private Map listSaasFeature(List roles) { + private Map listSaasFeature(List roles) { - List featureIds = roles.stream() + Set featureIds = roles.stream() .filter(e -> !CollectionUtils.isEmpty(e.getPermissionRelations())) .map(SaasRoleRes::getPermissionRelations) .flatMap(Collection::stream) .filter(e -> Objects.equals(e.getType(), OLD_FEATURE)) .map(SaasPermissionRelationRes::getFeatureId) - .distinct() - .collect(Collectors.toList()); + .collect(Collectors.toSet()); if (CollectionUtils.isEmpty(featureIds)) { return Collections.emptyMap(); } - return saasFeatureDao.listByIds(featureIds).stream() - .collect(Collectors.toMap(SaasFeature::getId, Function.identity())); + return permissionPointService.listPermissionByIds( + QueryPermissionByIdsReq.builder() + .ids(featureIds) + .includeParent(true) + .build()) + .stream() + .collect(Collectors.toMap(SimplePermissionPointResp::getId, Function.identity())); } } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java index 86c81b8d..31b42688 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java @@ -634,7 +634,8 @@ public class PermissionPointServiceImpl implements PermissionPointService { SaasFeature::getFeatureName, SaasFeature::getParentId, SaasFeature::getPath, - SaasFeature::getTerminal)); + SaasFeature::getTerminal, + SaasFeature::getFeatureType)); Set parentIds = new HashSet<>(); for (SaasFeature permission : allPermissions) { @@ -672,6 +673,7 @@ public class PermissionPointServiceImpl implements PermissionPointService { .name(permission.getFeatureName()) .parentId(permission.getParentId()) .terminal(permission.getTerminal()) + .featureType(permission.getFeatureType()) .build(); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java index d5177650..1f87811b 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java @@ -159,7 +159,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { private final RolePermissionCacheService rolePermissionCacheService; private final SaasRoleUserRelationMapper saasRoleUserRelationMapper; - @Value("${permission.from.db:false}") + @Value("${permission.from.db:true}") private boolean PERMISSION_FROM_DB; @Override