From 0f1c07253096b9d4e4db4766264a931848bbdc4d Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sat, 15 Jul 2023 00:21:38 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.0=E3=80=91=E3=80=90sys=E3=80=91?= =?UTF-8?q?=E3=80=90menu=E3=80=91=E8=8F=9C=E5=8D=95=E7=9A=84=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BA=8B=E4=BB=B6=E5=AF=B9=E7=BC=93=E5=AD=98=E5=88=A0?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/modular/menu/cache/MenuClearListener.java | 15 +++++++++++++++ .../sys/modular/menu/constants/MenuConstants.java | 5 +++++ .../menu/service/impl/SysMenuServiceImpl.java | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/cache/MenuClearListener.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/cache/MenuClearListener.java index 6b5369339..2b4b39d7e 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/cache/MenuClearListener.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/cache/MenuClearListener.java @@ -1,6 +1,9 @@ package cn.stylefeng.roses.kernel.sys.modular.menu.cache; +import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; +import cn.stylefeng.roses.kernel.event.api.annotation.BusinessListener; +import cn.stylefeng.roses.kernel.sys.modular.menu.constants.MenuConstants; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -17,5 +20,17 @@ public class MenuClearListener { @Resource(name = "menuCodeCache") private CacheOperatorApi menuCodeCache; + /** + * 监听菜单的更新,清除缓存 + * + * @author fengshuonan + * @since 2023/7/15 0:21 + */ + @BusinessListener(businessCode = MenuConstants.MENU_UPDATE_EVENT) + public void updateMenuCodeCache(Long menuId) { + if (ObjectUtil.isNotEmpty(menuId)) { + menuCodeCache.remove(menuId.toString()); + } + } } diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/constants/MenuConstants.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/constants/MenuConstants.java index d1f5923d2..871abbb57 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/constants/MenuConstants.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/constants/MenuConstants.java @@ -13,4 +13,9 @@ public interface MenuConstants { */ String MENU_CODE_CACHE_PREFIX = "MENU:CODE:"; + /** + * 菜单更新的事件 + */ + String MENU_UPDATE_EVENT = "MENU_UPDATE_EVENT"; + } diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java index e5ab03719..c93125e22 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.db.api.DbOperatorApi; +import cn.stylefeng.roses.kernel.event.sdk.publish.BusinessEventPublisher; import cn.stylefeng.roses.kernel.rule.constants.SymbolConstant; import cn.stylefeng.roses.kernel.rule.constants.TreeConstants; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; @@ -14,6 +15,7 @@ import cn.stylefeng.roses.kernel.sys.api.callback.RemoveMenuCallbackApi; import cn.stylefeng.roses.kernel.sys.api.constants.SysConstants; import cn.stylefeng.roses.kernel.sys.api.pojo.menu.UserAppMenuInfo; import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService; +import cn.stylefeng.roses.kernel.sys.modular.menu.constants.MenuConstants; import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu; import cn.stylefeng.roses.kernel.sys.modular.menu.enums.SysMenuExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.menu.factory.MenuFactory; @@ -84,6 +86,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl for (RemoveMenuCallbackApi removeMenuCallbackApi : removeMenuCallbackApiMap.values()) { removeMenuCallbackApi.removeMenuAction(totalMenuIds); } + + // 发布菜单删除事件 + BusinessEventPublisher.publishEvent(MenuConstants.MENU_UPDATE_EVENT, menuId); + } @Override @@ -102,6 +108,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl BeanUtil.copyProperties(sysMenuRequest, sysMenu); this.updateById(sysMenu); + + // 发布菜单删除事件 + BusinessEventPublisher.publishEvent(MenuConstants.MENU_UPDATE_EVENT, sysMenu.getMenuId()); + } @Override