From 9053616222a34382afb978421295cea8d997c85f Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Thu, 20 Jun 2024 19:41:55 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=BF=98=E5=8E=9F=E8=B6=85=E7=AE=A1m?= =?UTF-8?q?yabtis-plus=E8=87=AA=E5=8A=A8=E5=A1=9E=E5=85=A5organId=EF=BC=9B?= =?UTF-8?q?=202=E3=80=81=E4=BF=AE=E5=A4=8D=E4=BF=AE=E6=94=B9=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=9D=83=E9=99=90=EF=BC=8C=E8=A7=92=E8=89=B2=E6=9D=83?= =?UTF-8?q?=E9=99=90=EF=BC=8C=E7=94=A8=E6=88=B7=E6=9D=83=E9=99=90=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E7=AB=8B=E5=88=BB=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/db/OrganDatabaseInterceptor.java | 5 ++--- .../permission/PermissionServiceImpl.java | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java index 34a1b5cb9..a6654278b 100644 --- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java +++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java @@ -48,9 +48,8 @@ public class OrganDatabaseInterceptor implements TenantLineHandler { @Override public boolean ignoreTable(String tableName) { return OrganContextHolder.isIgnore() // 情况一,全局忽略多组织 - || CollUtil.contains(ignoreTables, tableName); // 情况二,忽略多组织的表 - //忽略超管跳过orm层面自动塞入organid,超管分库分表相关的操作只看本机构下的 -// || isAdmin(); //情况三,忽略超级管理员 + || CollUtil.contains(ignoreTables, tableName) // 情况二,忽略多组织的表 + || isAdmin(); //情况三,忽略超级管理员 } private boolean isAdmin() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); 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 6eab60a95..e1cb70387 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 @@ -192,6 +192,12 @@ public class PermissionServiceImpl implements PermissionService { // 角色菜单权限发生修改,通知刷新本地缓存 if (CollectionUtil.isNotEmpty(createMenuIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) { CompletableFuture.runAsync(() -> { + // 获取新增和删除菜单id的并集 + Collection delKeys = CollUtil.union(createMenuIds, deleteMenuIds); + delKeys.forEach(menuId -> { + // 移除redis中的缓存 + redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, menuId)); + }); redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { log.error("redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); @@ -288,7 +294,7 @@ public class PermissionServiceImpl implements PermissionService { throw new ServiceException(ErrorCodeConstants.ROLE_NOT_SUPERADMIN_NO_ORGAN_ID_OPER_ERROR); } } - + final Long finalOrganId = organId; Long roleId = reqVO.getRoleId(); // 当前用户不能操作含有自己的角色 if (CollectionUtil.isNotEmpty(userIds)) { @@ -307,7 +313,6 @@ public class PermissionServiceImpl implements PermissionService { // 筛选要新增的userRole:前端有,数据库没有 Collection createRoleUserIds = CollUtil.subtract(userIds, roleUserIds); if (!CollectionUtil.isEmpty(createRoleUserIds)) { - Long finalOrganId = organId; userRoleMapper.insertBatch(CollectionUtils.convertList(createRoleUserIds, userId -> { UserRoleDO entity = new UserRoleDO(); entity.setUserId(userId).setRoleId(roleId).setOrganId(finalOrganId); @@ -324,6 +329,12 @@ public class PermissionServiceImpl implements PermissionService { // 角色菜单权限发生修改,通知刷新本地缓存 if (CollectionUtil.isNotEmpty(createRoleUserIds) || CollectionUtil.isNotEmpty(deleteRoleUserIds)) { CompletableFuture.runAsync(() -> { + // 获取新增和删除用户id的并集 + Collection delKeys = CollUtil.union(createRoleUserIds, deleteRoleUserIds); + delKeys.forEach(userId -> { + // 移除redis中的缓存 + redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), finalOrganId, userId)); + }); redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { log.error("redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); @@ -404,9 +415,11 @@ public class PermissionServiceImpl implements PermissionService { // 角色菜单权限发生修改,通知刷新本地缓存 if (CollectionUtil.isNotEmpty(createRoleIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) { CompletableFuture.runAsync(() -> { + // 移除redis中的缓存 + redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, userId)); redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { - log.error("redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); + log.error("redis 清空user_role_ids或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); return null; }); }