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

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

parent 08652550
......@@ -7,26 +7,21 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.extension.plugins.pagination.Page;
import com.dsk.common.constant.TenantConstants;
import com.dsk.system.mapper.SysRoleDeptMapper;
import com.dsk.system.mapper.SysRoleMapper;
import com.dsk.system.mapper.SysRoleMenuMapper;
import com.dsk.system.mapper.SysUserRoleMapper;
import com.dsk.system.domain.*;
import com.dsk.system.mapper.*;
import com.dsk.system.service.ISysRoleService;
import com.dsk.common.constant.UserConstants;
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.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.StreamUtils;
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 org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -46,6 +41,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
private final SysRoleMenuMapper roleMenuMapper;
private final SysUserRoleMapper userRoleMapper;
private final SysRoleDeptMapper roleDeptMapper;
private final SysUserMapper userMapper;
@Override
public TableDataInfo<SysRole> selectPageRoleList(SysRole role, PageQuery pageQuery) {
......@@ -410,6 +406,12 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
public int deleteAuthUser(SysUserRole userRole) {
//若该账号仅有一个角色,则不允许取消授权
SysUser sysUser = userMapper.selectUserById(userRole.getUserId());
if (sysUser.getRoles().size() == 1) {
throw new ServiceException("至少保留一个角色在该账号下");
}
//校验企业管理员角色下是否至少有一个账号
checkAdminHasUsers(userRole.getRoleId());
......@@ -431,11 +433,23 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
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);
//如果取消授权企业管理员角色下所有账号,则抛异常
if (userIds.length == users) {
if (users != null && userIds.length == users) {
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