diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java index 56e3ddc61..5ea6a4f54 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java @@ -45,7 +45,6 @@ import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict; import cn.stylefeng.roses.kernel.system.api.MenuServiceApi; import cn.stylefeng.roses.kernel.system.api.ResourceServiceApi; import cn.stylefeng.roses.kernel.system.api.UserServiceApi; -import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants; import cn.stylefeng.roses.kernel.system.api.enums.AntdvFrontTypeEnum; import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException; import cn.stylefeng.roses.kernel.system.api.exception.enums.role.SysRoleExceptionEnum; @@ -77,6 +76,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import static cn.stylefeng.roses.kernel.system.api.constants.SystemConstants.SUPER_ADMIN_ROLE_CODE; + /** * 系统角色service接口实现类 @@ -143,18 +144,11 @@ public class SysRoleServiceImpl extends ServiceImpl impl public void del(SysRoleRequest sysRoleRequest) { SysRole sysRole = this.querySysRole(sysRoleRequest); - // 超级管理员不能删除,但是管理角色可以删除 - if (!YesOrNotEnum.Y.getCode().equals(sysRole.getAdminFlag())) { - if (YesOrNotEnum.Y.getCode().equals(sysRole.getRoleSystemFlag())) { - throw new ServiceException(SysRoleExceptionEnum.SYSTEM_ROLE_CANT_DELETE); - } + // 超级管理员不能删除 + if (SUPER_ADMIN_ROLE_CODE.equals(sysRole.getRoleCode())) { + throw new ServiceException(SysRoleExceptionEnum.SYSTEM_ROLE_CANT_DELETE); } - // 逻辑删除,设为删除标志 - sysRole.setDelFlag(YesOrNotEnum.Y.getCode()); - - this.updateById(sysRole); - Long roleId = sysRole.getRoleId(); // 级联删除该角色对应的角色-数据范围关联信息 @@ -171,6 +165,9 @@ public class SysRoleServiceImpl extends ServiceImpl impl // 删除角色的数据范围缓存 roleDataScopeCacheApi.remove(String.valueOf(sysRoleRequest.getRoleId())); + + // 删除角色 + this.removeById(roleId); } @Override @@ -199,7 +196,7 @@ public class SysRoleServiceImpl extends ServiceImpl impl SysRole sysRole = this.querySysRole(sysRoleRequest); // 不能修改超级管理员编码 - if (SystemConstants.SUPER_ADMIN_ROLE_CODE.equals(sysRole.getRoleCode())) { + if (SUPER_ADMIN_ROLE_CODE.equals(sysRole.getRoleCode())) { if (!sysRole.getRoleCode().equals(sysRoleRequest.getRoleCode())) { throw new SystemModularException(SysRoleExceptionEnum.SUPER_ADMIN_ROLE_CODE_ERROR); } @@ -441,6 +438,9 @@ public class SysRoleServiceImpl extends ServiceImpl impl // 只查询正常状态 queryWrapper.eq(SysRole::getStatusFlag, StatusEnum.ENABLE.getCode()).eq(SysRole::getDelFlag, YesOrNotEnum.N.getCode()); + // 只查询非管理员的角色 + queryWrapper.eq(SysRole::getAdminFlag, YesOrNotEnum.N.getCode()); + this.list(queryWrapper).forEach(sysRole -> { SimpleDict simpleDict = new SimpleDict(); simpleDict.setId(sysRole.getRoleId()); diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java index ac623c370..bfe4a421c 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java @@ -1,5 +1,6 @@ package cn.stylefeng.roses.kernel.system.modular.user.service.impl; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; @@ -122,13 +123,13 @@ public class SysUserAdminServiceImpl implements SysUserAdminService { @Override public void deleteAdminUser(SysAdminRequest sysAdminRequest) { - // 获取用户绑定的角色 - List roleIdList = this.sysUserRoleService.findRoleIdsByUserId(sysAdminRequest.getUserId()); + // 获取用户绑定的超级管理员角色 + List userRoleList = this.sysUserRoleMapper.getAdminUserRoleList(ListUtil.toList(sysAdminRequest.getUserId())); // 删除角色 - for (Long roleId : roleIdList) { + for (SysUserRole sysUserRole : userRoleList) { SysRoleRequest sysRoleRequest = new SysRoleRequest(); - sysRoleRequest.setRoleId(roleId); + sysRoleRequest.setRoleId(sysUserRole.getRoleId()); this.roleServiceApi.del(sysRoleRequest); }