|
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baiye.enums.SalesManEnum;
|
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
|
import com.baiye.system.checker.AdminUserChecker;
|
|
|
|
|
import com.baiye.system.converter.SysUserConverter;
|
|
|
|
@ -36,6 +37,7 @@ import com.baiye.system.model.vo.SysUserPageVO;
|
|
|
|
|
import com.baiye.system.service.SysRoleService;
|
|
|
|
|
import com.baiye.system.service.SysUserService;
|
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
|
import com.google.common.collect.Sets;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
@ -75,10 +77,12 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
private final FileProperties fileProperties;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据QueryObject查询分页数据
|
|
|
|
|
*
|
|
|
|
|
* @param pageParam 分页参数
|
|
|
|
|
* @param qo 查询参数对象
|
|
|
|
|
* @param qo 查询参数对象
|
|
|
|
|
* @return PageResult<SysUserVO> 分页数据
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
@ -88,7 +92,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
List<SysUser> sysUsers = baseMapper.selectList(new LambdaQueryWrapper<>());
|
|
|
|
|
List<SysUserPageVO> userAll = Convert.toList(SysUserPageVO.class, sysUsers);
|
|
|
|
|
Map<Long, List<SysUserPageVO>> userGroup = userAll.stream()
|
|
|
|
|
.collect(Collectors.groupingBy(SysUserPageVO::getWhichUserId));
|
|
|
|
|
.collect(Collectors.groupingBy(SysUserPageVO::getWhichUserId));
|
|
|
|
|
|
|
|
|
|
result.getRecords().forEach(user -> {
|
|
|
|
|
List<SysUserPageVO> byWhichUserId = userGroup.get(user.getUserId());
|
|
|
|
@ -106,6 +110,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据用户名查询用户
|
|
|
|
|
*
|
|
|
|
|
* @param username 用户名
|
|
|
|
|
* @return 系统用户
|
|
|
|
|
*/
|
|
|
|
@ -116,6 +121,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过查用户的全部信息
|
|
|
|
|
*
|
|
|
|
|
* @param sysUser 用户
|
|
|
|
|
* @return 用户信息
|
|
|
|
|
*/
|
|
|
|
@ -123,15 +129,27 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
public UserInfoDTO findUserInfo(SysUser sysUser) {
|
|
|
|
|
UserInfoDTO userInfoDTO = new UserInfoDTO();
|
|
|
|
|
userInfoDTO.setSysUser(sysUser);
|
|
|
|
|
|
|
|
|
|
userInfoDTO.setSalesmanType(0);
|
|
|
|
|
Boolean isAdmin = Boolean.FALSE;
|
|
|
|
|
// 超级管理员拥有所有角色
|
|
|
|
|
List<SysRole> roleList;
|
|
|
|
|
if (adminUserChecker.isAdminUser(sysUser)) {
|
|
|
|
|
roleList = sysRoleService.list();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
isAdmin = Boolean.TRUE;
|
|
|
|
|
} else {
|
|
|
|
|
roleList = sysUserRoleService.listRoles(sysUser.getUserId());
|
|
|
|
|
}
|
|
|
|
|
// 判断用户角色
|
|
|
|
|
Set<Long> roleIdSet = roleList.stream().map(SysRole::getId).collect(Collectors.toSet());
|
|
|
|
|
if (Boolean.FALSE.equals(isAdmin)
|
|
|
|
|
&& adminUserChecker.isSalesman(roleIdSet)) {
|
|
|
|
|
for (Long id : roleIdSet) {
|
|
|
|
|
if (SalesManEnum.find(id) > 0) {
|
|
|
|
|
userInfoDTO.setSalesmanType(SalesManEnum.find(id));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置角色标识
|
|
|
|
|
Set<String> roleCodes = new HashSet<>();
|
|
|
|
@ -148,9 +166,9 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
List<SysMenu> sysMenuList = sysMenuService.listByRoleCode(roleCode);
|
|
|
|
|
menus.addAll(sysMenuList);
|
|
|
|
|
List<String> permissionList = sysMenuList.stream()
|
|
|
|
|
.map(SysMenu::getPermission)
|
|
|
|
|
.filter(StrUtil::isNotEmpty)
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
.map(SysMenu::getPermission)
|
|
|
|
|
.filter(StrUtil::isNotEmpty)
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
permissions.addAll(permissionList);
|
|
|
|
|
}
|
|
|
|
|
userInfoDTO.setMenus(menus);
|
|
|
|
@ -161,6 +179,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增系统用户 注意添加了AOP切面类{SysUserAspect}
|
|
|
|
|
*
|
|
|
|
|
* @param sysUserDto 系统用户DTO
|
|
|
|
|
* @return 添加成功:true , 失败:false
|
|
|
|
|
*/
|
|
|
|
@ -199,6 +218,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新系统用户信息
|
|
|
|
|
*
|
|
|
|
|
* @param sysUserDTO 系统用户DTO
|
|
|
|
|
* @return 更新成功 true: 更新失败 false
|
|
|
|
|
*/
|
|
|
|
@ -227,7 +247,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
// 如果修改了组织且修改成功,则发送用户组织更新事件
|
|
|
|
|
if (isUpdateSuccess && organizationIdModified) {
|
|
|
|
|
publisher
|
|
|
|
|
.publishEvent(new UserOrganizationChangeEvent(userId, originOrganizationId, currentOrganizationId));
|
|
|
|
|
.publishEvent(new UserOrganizationChangeEvent(userId, originOrganizationId, currentOrganizationId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return isUpdateSuccess;
|
|
|
|
@ -235,7 +255,8 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新用户权限信息
|
|
|
|
|
* @param userId 用户Id
|
|
|
|
|
*
|
|
|
|
|
* @param userId 用户Id
|
|
|
|
|
* @param sysUserScope 系统用户权限范围
|
|
|
|
|
* @return 更新成功:true
|
|
|
|
|
*/
|
|
|
|
@ -248,6 +269,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据userId删除 用户
|
|
|
|
|
*
|
|
|
|
|
* @param userId 用户ID
|
|
|
|
|
* @return 删除成功:true
|
|
|
|
|
*/
|
|
|
|
@ -271,7 +293,8 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改用户密码
|
|
|
|
|
* @param userId 用户ID
|
|
|
|
|
*
|
|
|
|
|
* @param userId 用户ID
|
|
|
|
|
* @param rawPassword 明文密码
|
|
|
|
|
* @return 更新成功:true
|
|
|
|
|
*/
|
|
|
|
@ -285,6 +308,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 批量修改用户状态
|
|
|
|
|
*
|
|
|
|
|
* @param userIds 用户ID集合
|
|
|
|
|
* @return 更新成功:true
|
|
|
|
|
*/
|
|
|
|
@ -296,7 +320,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
// 移除无权限更改的用户id
|
|
|
|
|
Map<Long, SysUser> userMap = userList.stream()
|
|
|
|
|
.collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
|
|
|
|
|
.collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
|
|
|
|
|
userIds.removeIf(id -> !adminUserChecker.hasModifyPermission(userMap.get(id)));
|
|
|
|
|
Assert.notEmpty(userIds, "更新用户状态失败,无权限更新用户");
|
|
|
|
|
|
|
|
|
@ -328,6 +352,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据角色查询用户
|
|
|
|
|
*
|
|
|
|
|
* @param roleCode 角色标识
|
|
|
|
|
* @return 系统用户集合
|
|
|
|
|
*/
|
|
|
|
@ -338,6 +363,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据角色查询用户
|
|
|
|
|
*
|
|
|
|
|
* @param roleCodes 角色标识集合
|
|
|
|
|
* @return List<SysUser>
|
|
|
|
|
*/
|
|
|
|
@ -348,6 +374,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据组织机构ID查询用户
|
|
|
|
|
*
|
|
|
|
|
* @param organizationIds 组织机构id集合
|
|
|
|
|
* @return 用户集合
|
|
|
|
|
*/
|
|
|
|
@ -358,6 +385,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据用户类型查询用户
|
|
|
|
|
*
|
|
|
|
|
* @param userTypes 用户类型集合
|
|
|
|
|
* @return 用户集合
|
|
|
|
|
*/
|
|
|
|
@ -368,6 +396,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据用户Id集合查询用户
|
|
|
|
|
*
|
|
|
|
|
* @param userIds 用户Id集合
|
|
|
|
|
* @return 用户集合
|
|
|
|
|
*/
|
|
|
|
@ -379,8 +408,9 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 返回用户的select数据 name=> username value => userId
|
|
|
|
|
* @return List<SelectData>
|
|
|
|
|
*
|
|
|
|
|
* @param userTypes 用户类型
|
|
|
|
|
* @return List<SelectData>
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<SelectData<Void>> listSelectData(Collection<Integer> userTypes) {
|
|
|
|
@ -389,6 +419,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取用户的角色Code集合
|
|
|
|
|
*
|
|
|
|
|
* @param userId 用户id
|
|
|
|
|
* @return List<String>
|
|
|
|
|
*/
|
|
|
|
@ -399,6 +430,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 是否存在指定组织的用户
|
|
|
|
|
*
|
|
|
|
|
* @param organizationId 组织 id
|
|
|
|
|
* @return boolean 存在返回 true
|
|
|
|
|
*/
|
|
|
|
|