diff --git a/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/ProjectServiceImpl.java b/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/ProjectServiceImpl.java index 2da0a696..d84d12eb 100644 --- a/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/ProjectServiceImpl.java +++ b/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/ProjectServiceImpl.java @@ -170,13 +170,16 @@ public class ProjectServiceImpl implements ProjectService { /** * 判断用户是否为超级管理员 - * 查角色列表 → hasAnySuperAdmin 判别 + * + * 注意:必须使用 FromCache 版本,本方法被 ProjectSecurityWebFilter 每次请求都会调用, + * 走无缓存的 getUserRoleIdListByUserId 会直接把 system_user_role 打爆, + * 典型症状是 /admin-api/** 接口(如 get-permission-info)大面积超时。 */ private boolean isSuperAdmin(Long userId) { if (userId == null) { return false; } - Set roleIds = permissionService.getUserRoleIdListByUserId(userId); + Set roleIds = permissionService.getUserRoleIdListByUserIdFromCache(userId); if (CollUtil.isEmpty(roleIds)) { return false; } diff --git a/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/UserProjectServiceImpl.java b/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/UserProjectServiceImpl.java index e6b5017f..c7babd40 100644 --- a/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/UserProjectServiceImpl.java +++ b/viewsh-module-system/viewsh-module-system-server/src/main/java/com/viewsh/module/system/service/project/UserProjectServiceImpl.java @@ -258,12 +258,15 @@ public class UserProjectServiceImpl implements UserProjectService { /** * 判断用户是否超管 + * + * 必须走 FromCache 版本,否则调用点(removeProjectUser / getProjectUserPage) + * 在高并发场景(比如批量移除成员)下会放大 DB 压力。 */ private boolean isSuperAdmin(Long userId) { if (userId == null) { return false; } - Set roleIds = permissionService.getUserRoleIdListByUserId(userId); + Set roleIds = permissionService.getUserRoleIdListByUserIdFromCache(userId); if (CollUtil.isEmpty(roleIds)) { return false; }