From 95bb9744c1ae6854532de24a251e0285ac87f62e Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 23 Feb 2022 19:28:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E8=A7=92=E8=89=B2=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=EF=BC=8C=E4=B8=8D=E5=85=81=E8=AE=B8=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=20ADMIN=20=E6=A0=87=E8=AF=86=E7=9A=84=E8=A7=92?= =?UTF-8?q?=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yudao/module/system/enums/ErrorCodeConstants.java | 3 ++- .../module/system/enums/permission/RoleCodeEnum.java | 5 +++++ .../system/service/permission/RoleServiceImpl.java | 10 +++++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index d34bf364..0ffecd5f 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -31,7 +31,8 @@ public interface ErrorCodeConstants { ErrorCode ROLE_NAME_DUPLICATE = new ErrorCode(1002003001, "已经存在名为【{}】的角色"); ErrorCode ROLE_CODE_DUPLICATE = new ErrorCode(1002003002, "已经存在编码为【{}】的角色"); ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1002003004, "不能操作类型为系统内置的角色"); - ErrorCode ROLE_IS_DISABLE = new ErrorCode(1002003004, "名字为【{}】的角色已被禁用"); + ErrorCode ROLE_IS_DISABLE = new ErrorCode(1002003005, "名字为【{}】的角色已被禁用"); + ErrorCode ROLE_ADMIN_CODE_ERROR = new ErrorCode(1002003006, "编码【{}】不能使用"); // ========== 用户模块 1002004000 ========== ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1002004000, "用户账号已经存在"); diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java index b501e268..b13b3b71 100644 --- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java +++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.enums.permission; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import lombok.AllArgsConstructor; import lombok.Getter; @@ -23,4 +24,8 @@ public enum RoleCodeEnum { */ private final String name; + public static boolean isSuperAdmin(String code) { + return ObjectUtils.equalsAny(code, SUPER_ADMIN.getCode()); + } + } diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java index d27ba900..c915f4d7 100644 --- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java +++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java @@ -136,7 +136,7 @@ public class RoleServiceImpl implements RoleService { @Override public void updateRole(RoleUpdateReqVO reqVO) { // 校验是否可以更新 - this.checkUpdateRole(reqVO.getId()); + checkUpdateRole(reqVO.getId()); // 校验角色的唯一字段是否重复 checkDuplicateRole(reqVO.getName(), reqVO.getCode(), reqVO.getId()); // 更新到数据库 @@ -149,7 +149,7 @@ public class RoleServiceImpl implements RoleService { @Override public void updateRoleStatus(Long id, Integer status) { // 校验是否可以更新 - this.checkUpdateRole(id); + checkUpdateRole(id); // 更新状态 RoleDO updateObject = new RoleDO(); updateObject.setId(id); @@ -217,7 +217,7 @@ public class RoleServiceImpl implements RoleService { if (CollectionUtil.isEmpty(roleList)) { return false; } - return roleList.stream().anyMatch(roleDO -> RoleCodeEnum.SUPER_ADMIN.getCode().equals(roleDO.getCode())); + return roleList.stream().anyMatch(role -> RoleCodeEnum.isSuperAdmin(role.getCode())); } @Override @@ -247,6 +247,10 @@ public class RoleServiceImpl implements RoleService { */ @VisibleForTesting public void checkDuplicateRole(String name, String code, Long id) { + // 0. 超级管理员,不允许创建 + if (RoleCodeEnum.isSuperAdmin(code)) { + throw exception(ROLE_ADMIN_CODE_ERROR, code); + } // 1. 该 name 名字被其它角色所使用 RoleDO role = roleMapper.selectByName(name); if (role != null && !role.getId().equals(id)) { -- GitLab