From a023d3960796d264ea3dc58614bbe1ff4fda1a90 Mon Sep 17 00:00:00 2001 From: lilong Date: Fri, 2 Aug 2024 14:36:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:(REQ-2720)=20=E9=A1=B5=E9=9D=A2=E5=85=83?= =?UTF-8?q?=E7=B4=A0=E7=BB=91=E5=AE=9A=E5=85=B3=E7=B3=BB=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E8=A7=A6=E5=8F=91=E6=9B=B4=E6=96=B0=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E3=80=81=E8=A7=92=E8=89=B2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inner/CacheProductPermissionHandler.java | 57 ++++++++++----- ...acheProductSaasFeatureResourceHandler.java | 64 +++++++++++------ .../inner/CacheRolePermissionHandler.java | 69 ++++++++++++------ .../CacheRoleSaasFeatureResourceHandler.java | 72 +++++++++++-------- .../tyr/server/event/inner/EventTypeEnum.java | 1 + ...geElementFeatureResourceUpsertPayload.java | 19 +++++ .../job/CacheProductFeatureResourceJob.java | 2 +- .../server/job/CacheProductPermissionJob.java | 2 +- .../impl/SaasPageElementServiceImpl.java | 52 ++++++++++---- 9 files changed, 234 insertions(+), 104 deletions(-) create mode 100644 tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/PageElementFeatureResourceUpsertPayload.java 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 c6f33fa8..35df0b47 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 @@ -2,10 +2,10 @@ package cn.axzo.tyr.server.event.inner; 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.PageProductFeatureRelationReq; import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp; +import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload; import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload; import cn.axzo.tyr.server.repository.dao.SaasFeatureDao; import cn.axzo.tyr.server.repository.entity.SaasFeature; @@ -39,7 +39,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation. */ @Slf4j @Component -public class CacheProductPermissionHandler implements EventHandler, InitializingBean { +public class CacheProductPermissionHandler implements InitializingBean { @Autowired private EventConsumer eventConsumer; @@ -52,19 +52,7 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing @Autowired private SaasFeatureDao saasFeatureDao; - @Override - public void onEvent(Event event, EventConsumer.Context context) { - log.info("begin cached product permission handler rocketmq event: {}", event); - ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class); - - if (CollectionUtils.isEmpty(payload.getProductModuleIds())) { - return; - } - - PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder() - .productModuleIds(payload.getProductModuleIds()) - .build(); - List productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq); + private void storeProductPermission(List productFeatures) { if (CollectionUtils.isEmpty(productFeatures)) { return; @@ -80,13 +68,44 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing .productPermissions(productPermissions) .build(); productPermissionCacheService.store(storeProductPermissionParam); + } + public void onProductPermissionUpsert(Event event, EventConsumer.Context context) { + log.info("begin cached product permission handler rocketmq event: {}", event); + ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class); + + if (CollectionUtils.isEmpty(payload.getProductModuleIds())) { + return; + } + PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder() + .productModuleIds(payload.getProductModuleIds()) + .build(); + List productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq); + + storeProductPermission(productFeatures); + log.info("end cached product permission handler rocketmq event: {}", event); + } + + public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) { + log.info("begin cached product permission handler rocketmq event: {}", event); + PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class); + + if (CollectionUtils.isEmpty(payload.getRelations())) { + return; + } + + PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder() + .build(); + List productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq); + + storeProductPermission(productFeatures); log.info("end cached product permission handler rocketmq event: {}", event); } @Override public void afterPropertiesSet() throws Exception { - eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this); + eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this::onProductPermissionUpsert); + eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert); } public List resolveProductPermissions(List productPermissions) { @@ -208,10 +227,10 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing return parentFeatureCodes.stream() .map(featureCode -> ProductPermissionCacheService.PermissionDTO.builder() - .featureId(featureResource.getId()) + .featureId(f.getId()) .featureCode(featureCode) - .featureType(featureResource.getFeatureType()) - .terminal(featureResource.getTerminal()) + .featureType(f.getFeatureType()) + .terminal(f.getTerminal()) .cooperateType(relation.getDictCode()) .build()) .collect(Collectors.toList()); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductSaasFeatureResourceHandler.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductSaasFeatureResourceHandler.java index 6fe8b0dc..8e6a65fc 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductSaasFeatureResourceHandler.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheProductSaasFeatureResourceHandler.java @@ -7,6 +7,7 @@ import cn.axzo.tyr.client.common.enums.FeatureResourceType; import cn.axzo.tyr.client.model.req.PageProductFeatureRelationReq; import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp; +import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload; import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload; import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation; import cn.axzo.tyr.server.service.ProductFeatureRelationService; @@ -35,7 +36,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation. @Slf4j @Component -public class CacheProductSaasFeatureResourceHandler implements EventHandler, InitializingBean { +public class CacheProductSaasFeatureResourceHandler implements InitializingBean { @Autowired private EventConsumer eventConsumer; @@ -52,20 +53,7 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini FeatureResourceType.GROUP.getCode(), FeatureResourceType.APP_ENTRY.getCode()); - @Override - public void onEvent(Event event, EventConsumer.Context context) { - log.info("begin cached product featureResource handler rocketmq event: {}", event); - ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class); - - if (CollectionUtils.isEmpty(payload.getProductModuleIds())) { - return; - } - - PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder() - .productModuleIds(payload.getProductModuleIds()) - .type(NEW_FEATURE) - .build(); - List productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq); + private void storeProductFeatureResource(List productFeatures) { if (CollectionUtils.isEmpty(productFeatures)) { return; @@ -82,12 +70,48 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini .build(); productSaasFeatureResourceCacheService.store(storeProductFeatureResourceParam); + } + + public void onProductPermissionUpsert(Event event, EventConsumer.Context context) { + log.info("begin cached product featureResource handler rocketmq event: {}", event); + ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class); + + if (CollectionUtils.isEmpty(payload.getProductModuleIds())) { + return; + } + + PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder() + .productModuleIds(payload.getProductModuleIds()) + .type(NEW_FEATURE) + .build(); + List productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq); + + storeProductFeatureResource(productFeatures); + log.info("end cached product featureResource handler rocketmq event: {}", event); + } + + public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) { + log.info("begin cached product featureResource handler rocketmq event: {}", event); + PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class); + + if (CollectionUtils.isEmpty(payload.getRelations())) { + return; + } + + PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder() + .type(NEW_FEATURE) + .build(); + List productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq); + + storeProductFeatureResource(productFeatures); log.info("end cached product featureResource handler rocketmq event: {}", event); } @Override public void afterPropertiesSet() throws Exception { - eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this); + eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this::onProductPermissionUpsert); + eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert); + } public List resolveProductFeatureResources(List productPermissions) { @@ -134,10 +158,10 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini } return ProductSaasFeatureResourceCacheService.FeatureResourceDTO.builder() - .featureId(featureResource.getId()) - .featureType(featureResource.getFeatureType()) - .terminal(featureResource.getTerminal()) - .uniCode(featureResource.getUniCode()) + .featureId(f.getId()) + .featureType(f.getFeatureType()) + .terminal(f.getTerminal()) + .uniCode(f.getUniCode()) .cooperateType(relation.getDictCode()) .build(); }) 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 d3e4d17e..70703d25 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 @@ -3,13 +3,16 @@ package cn.axzo.tyr.server.event.inner; 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.PageProductFeatureRelationReq; import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; 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.server.event.payload.PageElementFeatureResourceUpsertPayload; 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.repository.entity.SaasProductModuleFeatureRelation; import cn.axzo.tyr.server.service.RolePermissionCacheService; import cn.axzo.tyr.server.service.RoleService; import cn.axzo.tyr.server.service.SaasFeatureResourceService; @@ -39,7 +42,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation. */ @Slf4j @Component -public class CacheRolePermissionHandler implements EventHandler, InitializingBean { +public class CacheRolePermissionHandler implements InitializingBean { @Autowired private EventConsumer eventConsumer; @@ -52,20 +55,7 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea @Autowired private SaasFeatureDao saasFeatureDao; - @Override - public void onEvent(Event event, EventConsumer.Context context) { - log.info("begin cached role permission handler rocketmq event: {}", event); - RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class); - - if (CollectionUtils.isEmpty(payload.getRoleIds())) { - return; - } - - RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder() - .roleIds(Lists.newArrayList(payload.getRoleIds())) - .needPermissionRelation(true) - .build(); - List roles = roleService.list(listSaasRoleParam); + private void storeRolePermission(List roles) { if (CollectionUtils.isEmpty(roles)) { return; @@ -81,12 +71,45 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea .rolePermissions(rolePermissions) .build(); rolePermissionCacheService.store(storeRolePermissionParam); + } + + public void onRolePermissionUpsert(Event event, EventConsumer.Context context) { + log.info("begin cached role permission handler rocketmq event: {}", event); + RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class); + + if (CollectionUtils.isEmpty(payload.getRoleIds())) { + return; + } + + RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder() + .roleIds(Lists.newArrayList(payload.getRoleIds())) + .needPermissionRelation(true) + .build(); + List roles = roleService.list(listSaasRoleParam); + + storeRolePermission(roles); log.info("end cached role permission handler rocketmq event: {}", event); } + public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) { + PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class); + + if (CollectionUtils.isEmpty(payload.getRelations())) { + return; + } + + RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder() + .needPermissionRelation(true) + .build(); + List roles = roleService.list(listSaasRoleParam); + + storeRolePermission(roles); + } + @Override public void afterPropertiesSet() throws Exception { - eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this); + eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this::onRolePermissionUpsert); + eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert); } public List resolveRolePermission(List roles) { @@ -151,10 +174,10 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea .map(parentSaasFeatures::get) .filter(Objects::nonNull) .map(f -> RolePermissionCacheService.PermissionDTO.builder() - .featureId(saasFeature.getId()) - .featureCode(saasFeature.getFeatureCode()) - .featureType(saasFeature.getFeatureType()) - .terminal(saasFeature.getTerminal()) + .featureId(f.getId()) + .featureCode(f.getFeatureCode()) + .featureType(f.getFeatureType()) + .terminal(f.getTerminal()) .build()) .collect(Collectors.toList()); @@ -197,10 +220,10 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea return parentFeatureCodes.stream() .map(featureCode -> RolePermissionCacheService.PermissionDTO.builder() - .featureId(featureResource.getId()) + .featureId(f.getId()) .featureCode(featureCode) - .featureType(featureResource.getFeatureType()) - .terminal(featureResource.getTerminal()) + .featureType(f.getFeatureType()) + .terminal(f.getTerminal()) .build()) .collect(Collectors.toList()); }) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRoleSaasFeatureResourceHandler.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRoleSaasFeatureResourceHandler.java index e55aaeee..ca7c4fc1 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRoleSaasFeatureResourceHandler.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/CacheRoleSaasFeatureResourceHandler.java @@ -2,12 +2,11 @@ package cn.axzo.tyr.server.event.inner; import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; -import cn.axzo.framework.rocketmq.EventHandler; -import cn.axzo.tyr.client.common.enums.FeatureResourceType; import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; 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.server.event.payload.PageElementFeatureResourceUpsertPayload; import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload; import cn.axzo.tyr.server.service.RoleSaasFeatureResourceCacheService; import cn.axzo.tyr.server.service.RoleService; @@ -37,7 +36,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation. */ @Slf4j @Component -public class CacheRoleSaasFeatureResourceHandler implements EventHandler, InitializingBean { +public class CacheRoleSaasFeatureResourceHandler implements InitializingBean { @Autowired private EventConsumer eventConsumer; @@ -48,26 +47,7 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia @Autowired private RoleSaasFeatureResourceCacheService roleSaasFeatureResourceCacheService; - @Override - public void onEvent(Event event, EventConsumer.Context context) { - log.info("begin cached role saasFeatureResource handler rocketmq event: {}", event); - RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class); - - if (CollectionUtils.isEmpty(payload.getRoleIds())) { - return; - } - - RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder() - .roleIds(Lists.newArrayList(payload.getRoleIds())) - .needPermissionRelation(true) - .type(NEW_FEATURE) - .featureResourceTypes(Lists.newArrayList(FeatureResourceType.MENU, - FeatureResourceType.PAGE, - FeatureResourceType.MENU_PARTITION_GROUP, - FeatureResourceType.GROUP, - FeatureResourceType.APP_ENTRY)) - .build(); - List roles = roleService.list(listSaasRoleParam); + private void storeRoleFeatureResource(List roles) { if (CollectionUtils.isEmpty(roles)) { return; @@ -83,12 +63,48 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia .roleSaasFeatureResources(rolePermissions) .build(); roleSaasFeatureResourceCacheService.store(storeRoleFeatureResourceParam); + } + public void onRolePermissionUpsert(Event event, EventConsumer.Context context) { + log.info("begin cached role saasFeatureResource handler rocketmq event: {}", event); + RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class); + + if (CollectionUtils.isEmpty(payload.getRoleIds())) { + return; + } + + RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder() + .roleIds(Lists.newArrayList(payload.getRoleIds())) + .needPermissionRelation(true) + .type(NEW_FEATURE) + .build(); + List roles = roleService.list(listSaasRoleParam); + + storeRoleFeatureResource(roles); + log.info("end cached role saasFeatureResource handler rocketmq event: {}", event); } + public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) { + PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class); + + if (CollectionUtils.isEmpty(payload.getRelations())) { + return; + } + + RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder() + .needPermissionRelation(true) + .type(NEW_FEATURE) + .build(); + List roles = roleService.list(listSaasRoleParam); + + storeRoleFeatureResource(roles); + } + @Override public void afterPropertiesSet() throws Exception { - eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this); + eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this::onRolePermissionUpsert); + eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert); + } public List resolveRoleFeatureResource(List roles) { @@ -127,10 +143,10 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia } return RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO.builder() - .featureId(featureResource.getId()) - .featureType(featureResource.getFeatureType()) - .terminal(featureResource.getTerminal()) - .uniCode(featureResource.getUniCode()) + .featureId(f.getId()) + .featureType(f.getFeatureType()) + .terminal(f.getTerminal()) + .uniCode(f.getUniCode()) .build(); }) .filter(Objects::nonNull) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java index b6074238..3883080e 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java @@ -10,6 +10,7 @@ public enum EventTypeEnum { ROLE_PERMISSION_CREATED("role-permission", "role-permission-created", "角色权限添加"), SAAS_FEATURE_UPSERT("saas-feature", "saas-feature-upsert", "旧菜单树更新"), SAAS_FEATURE_RESOURCE_UPSERT("saas-feature-resource", "saas-feature-resource-upsert", "新菜单树更新"), + PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT("page-element-feature-resource", "page-element-feature-resource-upsert", "菜单-页面元素绑定关系更新"), ; EventTypeEnum(String model, String name, String desc) { diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/PageElementFeatureResourceUpsertPayload.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/PageElementFeatureResourceUpsertPayload.java new file mode 100644 index 00000000..78332c19 --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/PageElementFeatureResourceUpsertPayload.java @@ -0,0 +1,19 @@ +package cn.axzo.tyr.server.event.payload; + +import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageElementFeatureResourceUpsertPayload implements Serializable { + + private List relations; +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductFeatureResourceJob.java b/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductFeatureResourceJob.java index e70074f7..2a4c602e 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductFeatureResourceJob.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductFeatureResourceJob.java @@ -48,7 +48,7 @@ public class CacheProductFeatureResourceJob extends IJobHandler { Event event = Event.builder() .data(payload) .build(); - cacheProductSaasFeatureResourceHandler.onEvent(event, null); + cacheProductSaasFeatureResourceHandler.onProductPermissionUpsert(event, null); return ReturnT.SUCCESS; } } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductPermissionJob.java b/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductPermissionJob.java index 299f47f3..b05d63a3 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductPermissionJob.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/job/CacheProductPermissionJob.java @@ -48,7 +48,7 @@ public class CacheProductPermissionJob extends IJobHandler { Event event = Event.builder() .data(payload) .build(); - cacheProductPermissionHandler.onEvent(event, null); + cacheProductPermissionHandler.onProductPermissionUpsert(event, null); return ReturnT.SUCCESS; } } 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 6d32e0d7..4471eafe 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 @@ -4,22 +4,29 @@ import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.StopWatchUtil; import cn.axzo.framework.domain.page.PageResp; +import cn.axzo.framework.rocketmq.Event; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.tyr.client.common.enums.FeatureResourceType; import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum; import cn.axzo.tyr.client.common.enums.PageElementTypeEnum; -import cn.axzo.tyr.client.model.req.*; +import cn.axzo.tyr.client.model.req.GetPageElementReq; +import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq; +import cn.axzo.tyr.client.model.req.IdentityAuthReq; +import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO; +import cn.axzo.tyr.client.model.req.PageElementReportReq; +import cn.axzo.tyr.client.model.req.PageQueryElementReq; import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp; import cn.axzo.tyr.client.model.res.IdentityAuthRes; import cn.axzo.tyr.client.model.res.PageElementBasicDTO; import cn.axzo.tyr.client.model.res.PageElementResp; +import cn.axzo.tyr.server.config.MqProducer; +import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload; import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao; import cn.axzo.tyr.server.repository.dao.SaasPageElementDao; import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao; import cn.axzo.tyr.server.repository.entity.SaasFeatureResource; import cn.axzo.tyr.server.repository.entity.SaasPageElement; import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation; -import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation; import cn.axzo.tyr.server.service.SaasPageElementService; import cn.axzo.tyr.server.service.TyrSaasAuthService; import cn.hutool.json.JSONUtil; @@ -38,12 +45,18 @@ import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.function.Function; import java.util.stream.Collectors; +import static cn.axzo.tyr.server.event.inner.EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT; + /** * @author likunpeng * @version 1.0 @@ -59,6 +72,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService { private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao; private final SaasFeatureResourceDao saasFeatureResourceDao; private final TyrSaasAuthService tyrSaasAuthService; + private final MqProducer mqProducer; @Qualifier("asyncExecutor") @Autowired @@ -66,6 +80,8 @@ public class SaasPageElementServiceImpl implements SaasPageElementService { @Value("${not.auth.featureCodes:}") private Set notAuthFeatureCodes; + private static final String TARGET_TYPE = "pageElementFeatureResourceId"; + @Override @Transactional(rollbackFor = Exception.class) public void report(PageElementReportReq request) { @@ -153,16 +169,28 @@ public class SaasPageElementServiceImpl implements SaasPageElementService { Lists.newArrayList(modifyPageElementRelation.getFeatureResourceUniCode()), Lists.newArrayList(modifyPageElementRelation.getRelationType()), modifyPageElementRelation.getOperatorId()); // 保存新的绑定关系 - if (CollectionUtils.isNotEmpty(modifyPageElementRelation.getPageElementCodes())) { - List relations = modifyPageElementRelation.getPageElementCodes().stream().map(e -> SaasPageElementFeatureResourceRelation.builder() - .pageElementCode(e) - .featureResourceUniCode(modifyPageElementRelation.getFeatureResourceUniCode()) - .terminal(modifyPageElementRelation.getTerminal()) - .type(modifyPageElementRelation.getRelationType()) - .createBy(modifyPageElementRelation.getOperatorId()) - .build()).collect(Collectors.toList()); - saasPageElementFeatureResourceRelationDao.saveBatch(relations); + if (CollectionUtils.isEmpty(modifyPageElementRelation.getPageElementCodes())) { + return; } + + // 保存新的绑定关系 + List relations = modifyPageElementRelation.getPageElementCodes().stream().map(e -> SaasPageElementFeatureResourceRelation.builder() + .pageElementCode(e) + .featureResourceUniCode(modifyPageElementRelation.getFeatureResourceUniCode()) + .terminal(modifyPageElementRelation.getTerminal()) + .type(modifyPageElementRelation.getRelationType()) + .createBy(modifyPageElementRelation.getOperatorId()) + .build()).collect(Collectors.toList()); + saasPageElementFeatureResourceRelationDao.saveBatch(relations); + + Event event = Event.builder() + .targetType(TARGET_TYPE) + .eventCode(PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode()) + .data(PageElementFeatureResourceUpsertPayload.builder() + .relations(relations) + .build()) + .build(); + mqProducer.send(event); } @Override