From 5983c18767bef2f62e5ea6a6dba764e6ef91db5f Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Fri, 14 Jul 2023 18:41:45 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.0=E3=80=91=E3=80=90org=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0org=E7=9A=84=E7=BC=93=E5=AD=98=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modular/org/constants/OrgConstants.java | 10 +++++ .../org/listener/OrgOperateListener.java | 41 +++++++++++++++++-- .../impl/HrOrganizationServiceImpl.java | 16 +++++++- .../org/OrgMemoryCacheAutoConfiguration.java | 3 +- 4 files changed, 63 insertions(+), 7 deletions(-) diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/constants/OrgConstants.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/constants/OrgConstants.java index bd24783d3..61c7c840a 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/constants/OrgConstants.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/constants/OrgConstants.java @@ -42,4 +42,14 @@ public interface OrgConstants { */ String ADD_ORG_EVENT = "ADD_ORG_EVENT"; + /** + * 修改组织机构的事件监听 + */ + String EDIT_ORG_EVENT = "EDIT_ORG_EVENT"; + + /** + * 删除组织机构的事件监听 + */ + String DELETE_ORG_EVENT = "DELETE_ORG_EVENT"; + } diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/listener/OrgOperateListener.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/listener/OrgOperateListener.java index 7a374692d..c88603423 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/listener/OrgOperateListener.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/listener/OrgOperateListener.java @@ -8,6 +8,7 @@ import cn.stylefeng.roses.kernel.sys.modular.org.entity.HrOrganization; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collection; /** * 添加组织机构的事件监听器 @@ -22,21 +23,53 @@ public class OrgOperateListener { private CacheOperatorApi sysOrgSubFlagCache; /** - * 监听新增组织机构,删除相关的缓存 + * 监听添加组织机构 + *

+ * 清空组织机构下级标识 * * @author fengshuonan - * @since 2023/7/14 16:22 + * @since 2023/7/14 18:38 */ @BusinessListener(businessCode = OrgConstants.ADD_ORG_EVENT) public void addOrgCallback(HrOrganization businessObject) { - if (ObjectUtil.isNotEmpty(businessObject.getOrgId())) { sysOrgSubFlagCache.remove(String.valueOf(businessObject.getOrgId())); } - if (ObjectUtil.isNotEmpty(businessObject.getOrgParentId())) { sysOrgSubFlagCache.remove(String.valueOf(businessObject.getOrgParentId())); } + } + + /** + * 监听编辑组织机构 + * + * @author fengshuonan + * @since 2023/7/14 18:40 + */ + @BusinessListener(businessCode = OrgConstants.EDIT_ORG_EVENT) + public void editOrgCallback(HrOrganization businessObject) { + if (ObjectUtil.isNotEmpty(businessObject.getOrgId())) { + sysOrgSubFlagCache.remove(String.valueOf(businessObject.getOrgId())); + } + if (ObjectUtil.isNotEmpty(businessObject.getOrgParentId())) { + sysOrgSubFlagCache.remove(String.valueOf(businessObject.getOrgParentId())); + } + } + + /** + * 监听删除组织机构的事件 + * + * @author fengshuonan + * @since 2023/7/14 18:40 + */ + @BusinessListener(businessCode = OrgConstants.DELETE_ORG_EVENT) + public void deleteOrgCallback() { + + // 获取所有主键 + Collection allKeys = sysOrgSubFlagCache.getAllKeys(); + + // 删除所有子集标识 + sysOrgSubFlagCache.remove(allKeys); } diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java index a4b3b0b69..9ddd62da7 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java @@ -93,6 +93,9 @@ public class HrOrganizationServiceImpl extends ServiceImpl 0) { - sysOrgSubFlagCache.put(orgId.toString(), true); + // 过期时间3600秒 + sysOrgSubFlagCache.put(orgId.toString(), true, 3600L); return true; } else { - sysOrgSubFlagCache.put(orgId.toString(), false); + // 过期时间3600秒 + sysOrgSubFlagCache.put(orgId.toString(), false, 3600L); return false; } } diff --git a/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/org/OrgMemoryCacheAutoConfiguration.java b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/org/OrgMemoryCacheAutoConfiguration.java index 59b948de2..c0c4ad587 100644 --- a/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/org/OrgMemoryCacheAutoConfiguration.java +++ b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/org/OrgMemoryCacheAutoConfiguration.java @@ -50,7 +50,8 @@ public class OrgMemoryCacheAutoConfiguration { */ @Bean public CacheOperatorApi sysOrgSubFlagCache() { - TimedCache themeCache = CacheUtil.newTimedCache(Long.MAX_VALUE); + // 1小时过期 + TimedCache themeCache = CacheUtil.newTimedCache(1000 * 3600); return new SysOrgSubFlagMemoryCache(themeCache); }