【7.2.5】【role】更新角色管理相关业务

pull/37/head
fengshuonan 2022-09-30 17:52:36 +08:00
parent a2b283d379
commit 904b86a4df
2 changed files with 17 additions and 16 deletions

View File

@ -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<SysRoleMapper, SysRole> 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<SysRoleMapper, SysRole> impl
// 删除角色的数据范围缓存
roleDataScopeCacheApi.remove(String.valueOf(sysRoleRequest.getRoleId()));
// 删除角色
this.removeById(roleId);
}
@Override
@ -199,7 +196,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> 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<SysRoleMapper, SysRole> 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());

View File

@ -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<Long> roleIdList = this.sysUserRoleService.findRoleIdsByUserId(sysAdminRequest.getUserId());
// 获取用户绑定的超级管理员角色
List<SysUserRole> 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);
}