From 1d880951b1974317b2bb573f7d602be7bc53c904 Mon Sep 17 00:00:00 2001 From: OpenCode Date: Thu, 16 Jul 2026 20:22:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B6=85=E7=AE=A1=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E4=BB=8E=E7=A1=AC=E7=BC=96=E7=A0=81admin=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=90=8D=E6=94=B9=E4=B8=BA=E5=9F=BA=E4=BA=8E=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=88=A4=E6=96=AD=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E8=B6=85=E7=AE=A1=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/core/util/CoolSecurityUtil.java | 23 ++++++++++++++++++- .../admin/sys/AdminBaseSysRoleController.java | 3 ++- .../impl/BaseSysDepartmentServiceImpl.java | 2 +- .../sys/impl/BaseSysPermsServiceImpl.java | 15 +++++++----- .../sys/impl/BaseSysRoleServiceImpl.java | 2 +- .../sys/impl/BaseSysUserServiceImpl.java | 14 ++++++++--- 6 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/cool/core/util/CoolSecurityUtil.java b/src/main/java/com/cool/core/util/CoolSecurityUtil.java index 2dc6576..51e2265 100644 --- a/src/main/java/com/cool/core/util/CoolSecurityUtil.java +++ b/src/main/java/com/cool/core/util/CoolSecurityUtil.java @@ -7,10 +7,16 @@ import com.cool.core.enums.UserTypeEnum; import com.cool.core.exception.CoolPreconditions; import com.cool.core.security.jwt.JwtUser; import com.cool.modules.base.entity.sys.BaseSysUserEntity; +import com.cool.modules.base.entity.sys.BaseSysUserRoleEntity; +import com.cool.modules.base.mapper.sys.BaseSysUserMapper; +import com.cool.modules.base.mapper.sys.BaseSysUserRoleMapper; +import com.mybatisflex.core.query.QueryWrapper; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; +import java.util.List; + /** * Security 工具类 */ @@ -30,7 +36,22 @@ public class CoolSecurityUtil { * 是否为超级管理员 */ public static boolean isSuperAdmin() { - return "admin".equals(getAdminUsername()); + return isSuperAdmin(getAdminUsername()); + } + + public static boolean isSuperAdmin(String username) { + BaseSysUserEntity userEntity = SpringUtil.getBean(BaseSysUserMapper.class) + .selectOneByQuery(com.mybatisflex.core.query.QueryWrapper.create() + .eq(BaseSysUserEntity::getUsername, username)); + if (userEntity == null) { + return false; + } + BaseSysUserRoleMapper userRoleMapper = SpringUtil.getBean(BaseSysUserRoleMapper.class); + List userRoles = userRoleMapper + .selectListByQuery(com.mybatisflex.core.query.QueryWrapper.create() + .eq(BaseSysUserRoleEntity::getUserId, userEntity.getId()) + .eq(BaseSysUserRoleEntity::getRoleId, 1L)); + return !userRoles.isEmpty(); } /** * 获得jwt中的信息 diff --git a/src/main/java/com/cool/modules/base/controller/admin/sys/AdminBaseSysRoleController.java b/src/main/java/com/cool/modules/base/controller/admin/sys/AdminBaseSysRoleController.java index 51f0993..cf760c8 100644 --- a/src/main/java/com/cool/modules/base/controller/admin/sys/AdminBaseSysRoleController.java +++ b/src/main/java/com/cool/modules/base/controller/admin/sys/AdminBaseSysRoleController.java @@ -6,6 +6,7 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.cool.core.annotation.CoolRestController; import com.cool.core.base.BaseController; +import com.cool.core.util.CoolSecurityUtil; import com.cool.modules.base.entity.sys.BaseSysRoleEntity; import com.cool.modules.base.service.sys.BaseSysRoleService; import com.mybatisflex.core.query.QueryWrapper; @@ -22,7 +23,7 @@ public class AdminBaseSysRoleController extends BaseController { qw.eq(BASE_SYS_ROLE_ENTITY.USER_ID.getName(), tokenInfo.getLong("userId")).or(w -> { diff --git a/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysDepartmentServiceImpl.java b/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysDepartmentServiceImpl.java index 6f20ab2..4d059e9 100644 --- a/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysDepartmentServiceImpl.java +++ b/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysDepartmentServiceImpl.java @@ -49,7 +49,7 @@ public class BaseSysDepartmentServiceImpl extends } List list = this.list( QueryWrapper.create() - .in(BaseSysDepartmentEntity::getId, loginDepartmentIds, !username.equals("admin")) + .in(BaseSysDepartmentEntity::getId, loginDepartmentIds, !CoolSecurityUtil.isSuperAdmin(username)) .orderBy(BaseSysDepartmentEntity::getOrderNum, false)); list.forEach(e -> { List parentDepartment = list.stream() diff --git a/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysPermsServiceImpl.java b/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysPermsServiceImpl.java index 1240d97..041f44d 100644 --- a/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysPermsServiceImpl.java +++ b/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysPermsServiceImpl.java @@ -49,7 +49,7 @@ public class BaseSysPermsServiceImpl implements BaseSysPermsService { @Override public Long[] loginDepartmentIds() { String username = CoolSecurityUtil.getAdminUsername(); - if (username.equals("admin")) { + if (CoolSecurityUtil.isSuperAdmin(username)) { return baseSysDepartmentMapper.selectAll().stream().map(BaseSysDepartmentEntity::getId) .toArray(Long[]::new); } else { @@ -113,7 +113,7 @@ public class BaseSysPermsServiceImpl implements BaseSysPermsService { @Override public Long[] getRoles(BaseSysUserEntity userEntity) { Long[] roleIds = null; - if (!userEntity.getUsername().equals("admin")) { + if (!CoolSecurityUtil.isSuperAdmin(userEntity.getUsername())) { List list = baseSysUserRoleMapper .selectListByQuery(QueryWrapper.create().eq(BaseSysUserRoleEntity::getUserId, userEntity.getId())); List activeRoleIds = new ArrayList<>(); @@ -124,7 +124,7 @@ public class BaseSysPermsServiceImpl implements BaseSysPermsService { } } roleIds = activeRoleIds.toArray(Long[]::new); - if (Arrays.asList(roleIds).contains(1L)) { + if (roleIds.length > 0 && Arrays.asList(roleIds).contains(1L)) { roleIds = null; } } @@ -253,9 +253,12 @@ public class BaseSysPermsServiceImpl implements BaseSysPermsService { @Override public void refreshPermsByMenuId(Long menuId) { // 刷新超管权限、 找出这个菜单的所有用户、 刷新用户权限 - BaseSysUserEntity admin = baseSysUserMapper - .selectOneByQuery(QueryWrapper.create().eq(BaseSysUserEntity::getUsername, "admin")); - refreshPerms(admin.getId()); + List superAdmins = baseSysUserMapper + .selectListByQuery(QueryWrapper.create() + .eq(BaseSysUserEntity::getUsername, "admin")); + for (BaseSysUserEntity admin : superAdmins) { + refreshPerms(admin.getId()); + } List list = baseSysRoleMenuMapper.selectRowsByQuery(QueryWrapper.create().select(BASE_SYS_USER_ROLE_ENTITY.USER_ID) .from(BASE_SYS_ROLE_MENU_ENTITY).leftJoin(BASE_SYS_USER_ROLE_ENTITY) .on(BASE_SYS_ROLE_MENU_ENTITY.ROLE_ID.eq(BASE_SYS_USER_ROLE_ENTITY.ROLE_ID)).and(BASE_SYS_ROLE_MENU_ENTITY.MENU_ID.eq(menuId, ObjectUtil.isNotEmpty(menuId))).groupBy(BASE_SYS_USER_ROLE_ENTITY.USER_ID)); diff --git a/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysRoleServiceImpl.java b/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysRoleServiceImpl.java index 0f79977..affa507 100644 --- a/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysRoleServiceImpl.java +++ b/src/main/java/com/cool/modules/base/service/sys/impl/BaseSysRoleServiceImpl.java @@ -96,6 +96,6 @@ public class BaseSysRoleServiceImpl extends BaseServiceImpl page, QueryWrapper qw) { String keyWord = requestParams.getStr("keyWord"); @@ -87,8 +91,12 @@ public class BaseSysUserServiceImpl extends BaseServiceImpl