diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/cache/RoleMenuClearListener.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/cache/RoleMenuClearListener.java index ee28e977e..ade623624 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/cache/RoleMenuClearListener.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/cache/RoleMenuClearListener.java @@ -21,6 +21,9 @@ public class RoleMenuClearListener { @Resource(name = "roleMenuCache") private CacheOperatorApi> roleMenuCache; + @Resource(name = "roleMenuOptionsCache") + private CacheOperatorApi> roleMenuOptionsCache; + /** * 监听角色绑定权限的事件 * @@ -34,4 +37,17 @@ public class RoleMenuClearListener { } } + /** + * 角色绑定功能的事件 + * + * @author fengshuonan + * @since 2023/7/14 23:44 + */ + @BusinessListener(businessCode = RoleConstants.ROLE_BIND_MENU_OPTIONS_EVENT) + public void roleBindMenuOptionsEvent(Long roleId) { + if (ObjectUtil.isNotEmpty(roleId)) { + roleMenuOptionsCache.remove(roleId.toString()); + } + } + } diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/cache/package-info.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/cache/package-info.java deleted file mode 100644 index cde9dc9aa..000000000 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/cache/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.stylefeng.roses.kernel.sys.modular.role.cache; \ No newline at end of file diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/constants/RoleConstants.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/constants/RoleConstants.java index 44958c34e..732d238a8 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/constants/RoleConstants.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/constants/RoleConstants.java @@ -23,4 +23,9 @@ public interface RoleConstants { */ String ROLE_MENU_OPTIONS_CACHE_PREFIX = "ROLE:MENU_OPTIONS:"; + /** + * 角色绑定菜单功能的事件 + */ + String ROLE_BIND_MENU_OPTIONS_EVENT = "ROLE_BIND_MENU_OPTIONS_EVENT"; + } diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java index 2a5518be1..40caa43e1 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service.impl; import cn.hutool.extra.spring.SpringUtil; +import cn.stylefeng.roses.kernel.event.sdk.publish.BusinessEventPublisher; import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp; import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService; import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu; @@ -8,6 +9,7 @@ import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions; import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService; import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService; import cn.stylefeng.roses.kernel.sys.modular.role.action.RoleAssignOperateAction; +import cn.stylefeng.roses.kernel.sys.modular.role.constants.RoleConstants; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenu; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenuOptions; import cn.stylefeng.roses.kernel.sys.modular.role.factory.PermissionAssignFactory; @@ -73,6 +75,10 @@ public class PermissionAssignServiceImpl implements PermissionAssignService { return; } } + + // 更新角色绑定权限的缓存 + BusinessEventPublisher.publishEvent(RoleConstants.ROLE_BIND_MENU_EVENT, roleBindPermissionRequest.getRoleId()); + BusinessEventPublisher.publishEvent(RoleConstants.ROLE_BIND_MENU_OPTIONS_EVENT, roleBindPermissionRequest.getRoleId()); } @Override diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java index 5ea251cd0..5d7449492 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java @@ -3,7 +3,6 @@ package cn.stylefeng.roses.kernel.sys.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.event.sdk.publish.BusinessEventPublisher; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveMenuCallbackApi; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi; import cn.stylefeng.roses.kernel.sys.api.constants.SysConstants; @@ -12,7 +11,6 @@ import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions; import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService; import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService; import cn.stylefeng.roses.kernel.sys.modular.role.action.RoleAssignOperateAction; -import cn.stylefeng.roses.kernel.sys.modular.role.constants.RoleConstants; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenu; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenuOptions; import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum; @@ -197,9 +195,6 @@ public class SysRoleMenuServiceImpl extends ServiceImpl