From e5e8806816f1f70bd2b4e7359a332730bd21a355 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Tue, 25 Mar 2025 16:42:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=EF=BC=9Aexecutor=E3=80=81report=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=B8=85=E7=A9=BA=E6=84=9F=E7=9F=A5=E8=A1=A5?= =?UTF-8?q?=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redis/constants/RedisKeyConstants.java | 5 +++ ...xecutorPermissionRefreshRedisListener.java | 33 +++++++++++++++++++ cf-module-report/cf-module-report-biz/pom.xml | 10 ++++++ .../ReportPermissionRefreshRedisListener.java | 33 +++++++++++++++++++ .../RedisRefreshChannelTopicConstants.java | 15 --------- .../SystemPermissionRefreshRedisListener.java | 4 +-- .../service/permission/MenuServiceImpl.java | 5 ++- .../permission/PermissionServiceImpl.java | 13 ++++---- .../service/permission/RoleServiceImpl.java | 3 +- 9 files changed, 92 insertions(+), 29 deletions(-) create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/redis/listener/ExecutorPermissionRefreshRedisListener.java create mode 100644 cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/redis/listener/ReportPermissionRefreshRedisListener.java delete mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/RedisRefreshChannelTopicConstants.java diff --git a/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/constants/RedisKeyConstants.java b/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/constants/RedisKeyConstants.java index 384f663c2..171adf40e 100644 --- a/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/constants/RedisKeyConstants.java +++ b/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/constants/RedisKeyConstants.java @@ -11,4 +11,9 @@ public class RedisKeyConstants { * 生产单导入 */ public static final String ORDER_IMPORT_LOCK_KEY = "order_import:%s"; + + /** + * 刷新权限 + */ + public static final String PERMISSION_REFRESH = "PERMISSION_REFRESH"; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/redis/listener/ExecutorPermissionRefreshRedisListener.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/redis/listener/ExecutorPermissionRefreshRedisListener.java new file mode 100644 index 000000000..981f861aa --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/redis/listener/ExecutorPermissionRefreshRedisListener.java @@ -0,0 +1,33 @@ +package com.cf.imes.module.executor.dal.redis.listener; + +import com.cf.imes.framework.mq.redis.core.pubsub.AbstractRedisSimpleMessageListener; +import com.cf.imes.framework.redis.constants.RedisKeyConstants; +import com.cf.imes.framework.security.core.service.SecurityFrameworkService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.connection.Message; +import org.springframework.data.redis.listener.ChannelTopic; +import org.springframework.stereotype.Component; + +/** + * executor PERMISSION_REFRESH redis监听器 + * + * @author Gqr + * @since 2024/6/13 10:32 + */ +@Component +@Slf4j +public class ExecutorPermissionRefreshRedisListener extends AbstractRedisSimpleMessageListener { + + private final SecurityFrameworkService securityFrameworkService; + + public ExecutorPermissionRefreshRedisListener(SecurityFrameworkService securityFrameworkService) { + super.setTopic(new ChannelTopic(RedisKeyConstants.PERMISSION_REFRESH)); + this.securityFrameworkService = securityFrameworkService; + } + + @Override + public void onMessage(Message message, byte[] bytes) { + log.info("[SystemPermissionRefreshRedisListener][onMessage][{}收到刷新本地权限缓存]", message); + securityFrameworkService.invalidateAllPermissionsCache(); + } +} diff --git a/cf-module-report/cf-module-report-biz/pom.xml b/cf-module-report/cf-module-report-biz/pom.xml index 37b870edc..d9f3efea5 100644 --- a/cf-module-report/cf-module-report-biz/pom.xml +++ b/cf-module-report/cf-module-report-biz/pom.xml @@ -166,6 +166,12 @@ ${itextpdf.version} + + + + com.cf.imes + cf-spring-boot-starter-mq + @@ -232,6 +238,10 @@ com.cf.imes cf-spring-boot-starter-web + + com.cf.imes + cf-spring-boot-starter-mq + diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/redis/listener/ReportPermissionRefreshRedisListener.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/redis/listener/ReportPermissionRefreshRedisListener.java new file mode 100644 index 000000000..232c0411e --- /dev/null +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/redis/listener/ReportPermissionRefreshRedisListener.java @@ -0,0 +1,33 @@ +package com.cf.imes.module.report.dal.redis.listener; + +import com.cf.imes.framework.mq.redis.core.pubsub.AbstractRedisSimpleMessageListener; +import com.cf.imes.framework.redis.constants.RedisKeyConstants; +import com.cf.imes.framework.security.core.service.SecurityFrameworkService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.connection.Message; +import org.springframework.data.redis.listener.ChannelTopic; +import org.springframework.stereotype.Component; + +/** + * report PERMISSION_REFRESH redis监听器 + * + * @author Gqr + * @since 2024/6/13 10:32 + */ +@Component +@Slf4j +public class ReportPermissionRefreshRedisListener extends AbstractRedisSimpleMessageListener { + + private final SecurityFrameworkService securityFrameworkService; + + public ReportPermissionRefreshRedisListener(SecurityFrameworkService securityFrameworkService) { + super.setTopic(new ChannelTopic(RedisKeyConstants.PERMISSION_REFRESH)); + this.securityFrameworkService = securityFrameworkService; + } + + @Override + public void onMessage(Message message, byte[] bytes) { + log.info("[SystemPermissionRefreshRedisListener][onMessage][{}收到刷新本地权限缓存]", message); + securityFrameworkService.invalidateAllPermissionsCache(); + } +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/RedisRefreshChannelTopicConstants.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/RedisRefreshChannelTopicConstants.java deleted file mode 100644 index c594812db..000000000 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/RedisRefreshChannelTopicConstants.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.cf.imes.module.system.dal.redis; - -/** - * system redis监听刷新通道名称 常量 - * - * @author Gqr - * @since 2024/6/13 14:55 - */ -public class RedisRefreshChannelTopicConstants { - - /** - * 刷新权限 - */ - public static final String PERMISSION_REFRESH = "PERMISSION_REFRESH"; -} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java index 695f2a5de..221219737 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java @@ -1,8 +1,8 @@ package com.cf.imes.module.system.dal.redis.listener; import com.cf.imes.framework.mq.redis.core.pubsub.AbstractRedisSimpleMessageListener; +import com.cf.imes.framework.redis.constants.RedisKeyConstants; import com.cf.imes.framework.security.core.service.SecurityFrameworkService; -import com.cf.imes.module.system.dal.redis.RedisRefreshChannelTopicConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.listener.ChannelTopic; @@ -21,7 +21,7 @@ public class SystemPermissionRefreshRedisListener extends AbstractRedisSimpleMes private final SecurityFrameworkService securityFrameworkService; public SystemPermissionRefreshRedisListener(SecurityFrameworkService securityFrameworkService) { - super.setTopic(new ChannelTopic(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH)); + super.setTopic(new ChannelTopic(RedisKeyConstants.PERMISSION_REFRESH)); this.securityFrameworkService = securityFrameworkService; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java index 65f105df0..4f64880ef 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java @@ -9,7 +9,6 @@ import com.cf.imes.module.system.controller.admin.permission.vo.menu.MenuSaveVO; import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; import com.cf.imes.module.system.dal.mysql.permission.MenuMapper; import com.cf.imes.module.system.dal.redis.RedisKeyConstants; -import com.cf.imes.module.system.dal.redis.RedisRefreshChannelTopicConstants; import com.cf.imes.module.system.enums.permission.MenuTypeEnum; import com.cf.imes.module.system.service.organ.OrganService; import com.google.common.annotations.VisibleForTesting; @@ -160,9 +159,9 @@ public class MenuServiceImpl implements MenuService { } // 清空本地缓存 - redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + redisTemplate.convertAndSend(com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { - log.error("[deleteMenu] redis 清空PERMISSION_MENU_ID_LIST或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); + log.error("[deleteMenu] redis 清空PERMISSION_MENU_ID_LIST或message发送失败, topic:{}, 异常:{}", com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, e); return null; }); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java index 042028b87..32f8f2574 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java @@ -29,7 +29,6 @@ import com.cf.imes.module.system.dal.dataobject.user.AdminUserDO; import com.cf.imes.module.system.dal.mysql.permission.RoleMenuMapper; import com.cf.imes.module.system.dal.mysql.permission.UserRoleMapper; import com.cf.imes.module.system.dal.redis.RedisKeyConstants; -import com.cf.imes.module.system.dal.redis.RedisRefreshChannelTopicConstants; import com.cf.imes.module.system.enums.ErrorCodeConstants; import com.cf.imes.module.system.enums.permission.DataScopeEnum; import com.cf.imes.module.system.service.dept.DeptService; @@ -255,7 +254,7 @@ public class PermissionServiceImpl implements PermissionService { log.info("[assignRoleMenu] 批量删除redis[{}]数量:{}", patternKey, batchDelNum); }); } - stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + stringRedisTemplate.convertAndSend(com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, ""); }) .thenRunAsync(() -> { // 清空角色下用户的token缓存 @@ -508,9 +507,9 @@ public class PermissionServiceImpl implements PermissionService { log.info("[batchAssignRoleUsers] 批量删除redis[{}]数量:{}", patternKey, batchDelNum); }); } - stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + stringRedisTemplate.convertAndSend(com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { - log.error("[batchAssignRoleUsers] redis 清空USER_ROLE_ID_LIST或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); + log.error("[batchAssignRoleUsers] redis 清空USER_ROLE_ID_LIST或message发送失败, topic:{}, 异常:{}", com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, e); return null; }); } @@ -590,9 +589,9 @@ public class PermissionServiceImpl implements PermissionService { CompletableFuture.runAsync(() -> { // 移除redis中的缓存 stringRedisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, userId)); - stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + stringRedisTemplate.convertAndSend(com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { - log.error("[assignUserRole] redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); + log.error("[assignUserRole] redis message发送失败, topic:{}, 异常:{}", com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, e); return null; }); } @@ -764,7 +763,7 @@ public class PermissionServiceImpl implements PermissionService { }) .thenRunAsync(() -> { //通知刷新本地权限缓存 - stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + stringRedisTemplate.convertAndSend(com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, ""); }) .exceptionally(e -> { log.error("[PermissionService][flushCacheWhenTenantPackageChange]失败, 异常:{}", e); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java index 2f23e1831..abb3123f2 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java @@ -19,7 +19,6 @@ import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReq import com.cf.imes.module.system.dal.dataobject.permission.RoleDO; import com.cf.imes.module.system.dal.mysql.permission.RoleMapper; import com.cf.imes.module.system.dal.redis.RedisKeyConstants; -import com.cf.imes.module.system.dal.redis.RedisRefreshChannelTopicConstants; import com.cf.imes.module.system.enums.ErrorCodeConstants; import com.cf.imes.module.system.enums.permission.DataScopeEnum; import com.cf.imes.module.system.enums.permission.RoleCodeEnum; @@ -178,7 +177,7 @@ public class RoleServiceImpl implements RoleService { } } // 通知刷新本地缓存 - stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + stringRedisTemplate.convertAndSend(com.cf.imes.framework.redis.constants.RedisKeyConstants.PERMISSION_REFRESH, ""); } /**