From bedea821032685814857fbb39e66288976322577 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Thu, 17 Nov 2022 00:05:40 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.3.2=E3=80=91=E3=80=90role=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A7=92=E8=89=B2=E8=B5=84=E6=BA=90=E7=9A=84?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/RoleResourceUpdateListener.java | 37 +++++++++++++++++++ .../role/service/SysRoleResourceService.java | 10 +++++ .../impl/SysRoleResourceServiceImpl.java | 29 +++++++++++++++ .../main/resources/META-INF/spring.factories | 3 +- 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/listener/RoleResourceUpdateListener.java diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/listener/RoleResourceUpdateListener.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/listener/RoleResourceUpdateListener.java new file mode 100644 index 000000000..c758a1824 --- /dev/null +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/listener/RoleResourceUpdateListener.java @@ -0,0 +1,37 @@ +package cn.stylefeng.roses.kernel.system.modular.role.listener; + +import cn.hutool.extra.spring.SpringUtil; +import cn.stylefeng.roses.kernel.rule.listener.ApplicationStartedListener; +import cn.stylefeng.roses.kernel.system.modular.role.service.SysRoleResourceService; +import org.springframework.boot.context.event.ApplicationStartedEvent; +import org.springframework.core.Ordered; +import org.springframework.core.env.ConfigurableEnvironment; + +/** + * 监听项目启动,进行role_resource表的资源名称前缀修改 + * + * @author fengshuonan + * @date 2022/11/16 23:05 + */ +public class RoleResourceUpdateListener extends ApplicationStartedListener implements Ordered { + + @Override + public int getOrder() { + return Ordered.LOWEST_PRECEDENCE; + } + + @Override + public void eventCallback(ApplicationStartedEvent event) { + + SysRoleResourceService roleResourceService = SpringUtil.getBean(SysRoleResourceService.class); + + // 获取environment参数 + ConfigurableEnvironment environment = event.getApplicationContext().getEnvironment(); + String springApplicationName = environment.getProperty("spring.application.name"); + + // 获取所有menu_resource表记录 + roleResourceService.updateNewAppCode(true, springApplicationName); + + } + +} diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java index 3ef4f5228..45e05538c 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java @@ -91,4 +91,14 @@ public interface SysRoleResourceService extends IService { */ void batchSaveResCodes(Long roleId, List totalResourceCode); + /** + * 更新本表的资源编码,替换为新的app编码 + * + * @param decisionFirstStart 判断是否是第一次启动,参数传true,则判断必须是第一次启动才执行update操作 + * @param newAppCode 新应用编码 + * @author fengshuonan + * @date 2022/11/16 23:37 + */ + void updateNewAppCode(Boolean decisionFirstStart, String newAppCode); + } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java index 578d5b129..d4328bb61 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java @@ -27,9 +27,11 @@ package cn.stylefeng.roses.kernel.system.modular.role.service.impl; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; +import cn.stylefeng.roses.kernel.config.api.InitConfigApi; import cn.stylefeng.roses.kernel.db.api.context.DbOperatorContext; import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum; +import cn.stylefeng.roses.kernel.rule.util.GunsResourceCodeUtil; import cn.stylefeng.roses.kernel.system.api.ResourceServiceApi; import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleResourceDTO; import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest; @@ -62,6 +64,9 @@ public class SysRoleResourceServiceImpl extends ServiceImpl list = this.list(); + + // 批量更新资源编码 + for (SysRoleResource sysRoleResource : list) { + String newResourceCode = GunsResourceCodeUtil.replace(sysRoleResource.getResourceCode(), newAppCode); + sysRoleResource.setResourceCode(newResourceCode); + } + + this.updateBatchById(list); + + } + } diff --git a/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories b/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories index f24fcb2ef..2ea9e5a28 100644 --- a/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -5,4 +5,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ cn.stylefeng.roses.kernel.system.starter.cache.GunsResourceRedisCacheAutoConfiguration,\ cn.stylefeng.roses.kernel.system.starter.GunsSystemHomeStatisticsAutoConfiguration org.springframework.context.ApplicationListener=\ - cn.stylefeng.roses.kernel.system.modular.menu.listener.MenuResourceUpdateListener \ No newline at end of file + cn.stylefeng.roses.kernel.system.modular.menu.listener.MenuResourceUpdateListener,\ + cn.stylefeng.roses.kernel.system.modular.role.listener.RoleResourceUpdateListener \ No newline at end of file