Commit d0baa54b authored by 施翔轲's avatar 施翔轲

保证每个用户至少有一个角色

parent 08652550
...@@ -7,26 +7,21 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -7,26 +7,21 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.common.constant.TenantConstants; import com.dsk.common.constant.TenantConstants;
import com.dsk.system.mapper.SysRoleDeptMapper; import com.dsk.system.domain.*;
import com.dsk.system.mapper.SysRoleMapper; import com.dsk.system.mapper.*;
import com.dsk.system.mapper.SysRoleMenuMapper;
import com.dsk.system.mapper.SysUserRoleMapper;
import com.dsk.system.service.ISysRoleService; import com.dsk.system.service.ISysRoleService;
import com.dsk.common.constant.UserConstants; import com.dsk.common.constant.UserConstants;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.system.domain.SysRole;
import com.dsk.common.core.domain.model.LoginUser; import com.dsk.common.core.domain.model.LoginUser;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.LoginHelper; import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.StreamUtils; import com.dsk.common.utils.StreamUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.system.domain.SysRoleDept;
import com.dsk.system.domain.SysRoleMenu;
import com.dsk.system.domain.SysUserRole;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -46,6 +41,7 @@ public class SysRoleServiceImpl implements ISysRoleService { ...@@ -46,6 +41,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
private final SysRoleMenuMapper roleMenuMapper; private final SysRoleMenuMapper roleMenuMapper;
private final SysUserRoleMapper userRoleMapper; private final SysUserRoleMapper userRoleMapper;
private final SysRoleDeptMapper roleDeptMapper; private final SysRoleDeptMapper roleDeptMapper;
private final SysUserMapper userMapper;
@Override @Override
public TableDataInfo<SysRole> selectPageRoleList(SysRole role, PageQuery pageQuery) { public TableDataInfo<SysRole> selectPageRoleList(SysRole role, PageQuery pageQuery) {
...@@ -410,6 +406,12 @@ public class SysRoleServiceImpl implements ISysRoleService { ...@@ -410,6 +406,12 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
public int deleteAuthUser(SysUserRole userRole) { public int deleteAuthUser(SysUserRole userRole) {
//若该账号仅有一个角色,则不允许取消授权
SysUser sysUser = userMapper.selectUserById(userRole.getUserId());
if (sysUser.getRoles().size() == 1) {
throw new ServiceException("至少保留一个角色在该账号下");
}
//校验企业管理员角色下是否至少有一个账号 //校验企业管理员角色下是否至少有一个账号
checkAdminHasUsers(userRole.getRoleId()); checkAdminHasUsers(userRole.getRoleId());
...@@ -431,11 +433,23 @@ public class SysRoleServiceImpl implements ISysRoleService { ...@@ -431,11 +433,23 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
public int deleteAuthUsers(Long roleId, Long[] userIds) { public int deleteAuthUsers(Long roleId, Long[] userIds) {
//若该账号仅有一个角色,则不允许取消授权
StringBuilder lackRoleAccount = new StringBuilder();
for (Long userId : userIds) {
SysUser sysUser = userMapper.selectUserById(userId);
if (sysUser.getRoles().size() == 1) {
lackRoleAccount.append(sysUser.getUserName()).append(",");
}
}
//将缺少角色的账号返回给前端
if (lackRoleAccount.toString().contains(",")) {
throw new ServiceException(lackRoleAccount.substring(0, lackRoleAccount.length()-1));
}
//校验企业管理员角色下是否至少有一个账号 //校验企业管理员角色下是否至少有一个账号
Integer users = checkAdminHasUsers(roleId); Integer users = checkAdminHasUsers(roleId);
//如果取消授权企业管理员角色下所有账号,则抛异常 //如果取消授权企业管理员角色下所有账号,则抛异常
if (userIds.length == users) { if (users != null && userIds.length == users) {
throw new ServiceException("至少要保留一个账号在企业管理员角色下!"); throw new ServiceException("至少要保留一个账号在企业管理员角色下!");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment