update 优化查询用户时多余重复判断以及去重

This commit is contained in:
AprilWind 2024-09-06 14:14:15 +08:00
parent f20130d3db
commit 6886e9fd5b

View File

@ -42,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 用户 业务层处理 * 用户 业务层处理
@ -628,6 +629,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail(); return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail();
} }
/**
* 通过用户ID查询用户列表
*
* @param userIds 用户ids
* @return 用户列表
*/
@Override @Override
public List<UserDTO> selectListByIds(List<Long> userIds) { public List<UserDTO> selectListByIds(List<Long> userIds) {
if (CollUtil.isEmpty(userIds)) { if (CollUtil.isEmpty(userIds)) {
@ -636,28 +643,55 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>() List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber)
.eq(SysUser::getStatus, UserConstants.USER_NORMAL) .eq(SysUser::getStatus, UserConstants.USER_NORMAL)
.in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); .in(SysUser::getUserId, userIds));
return BeanUtil.copyToList(list, UserDTO.class); return BeanUtil.copyToList(list, UserDTO.class);
} }
/**
* 通过角色ID查询用户ID
*
* @param roleIds 角色ids
* @return 用户ids
*/
@Override @Override
public List<Long> selectUserIdsByRoleIds(List<Long> roleIds) { public List<Long> selectUserIdsByRoleIds(List<Long> roleIds) {
List<SysUserRole> userRoles = userRoleMapper.selectList(
new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds));
return StreamUtils.toList(userRoles, SysUserRole::getUserId);
}
@Override
public List<UserDTO> selectUsersByRoleIds(List<Long> roleIds) {
if (CollUtil.isEmpty(roleIds)) { if (CollUtil.isEmpty(roleIds)) {
return List.of(); return List.of();
} }
List<SysUserRole> userRoles = userRoleMapper.selectList( List<SysUserRole> userRoles = userRoleMapper.selectList(
new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds)); new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds));
List<Long> userIds = StreamUtils.toList(userRoles, SysUserRole::getUserId); return StreamUtils.toList(userRoles, SysUserRole::getUserId);
}
/**
* 通过角色ID查询用户
*
* @param roleIds 角色ids
* @return 用户
*/
@Override
public List<UserDTO> selectUsersByRoleIds(List<Long> roleIds) {
if (CollUtil.isEmpty(roleIds)) {
return List.of();
}
// 通过角色ID获取用户角色信息
List<SysUserRole> userRoles = userRoleMapper.selectList(
new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds));
// 获取用户ID列表
List<Long> userIds = userRoles.stream()
.map(SysUserRole::getUserId).distinct().collect(Collectors.toList());
return selectListByIds(userIds); return selectListByIds(userIds);
} }
/**
* 通过部门ID查询用户
*
* @param deptIds 部门ids
* @return 用户
*/
@Override @Override
public List<UserDTO> selectUsersByDeptIds(List<Long> deptIds) { public List<UserDTO> selectUsersByDeptIds(List<Long> deptIds) {
if (CollUtil.isEmpty(deptIds)) { if (CollUtil.isEmpty(deptIds)) {
@ -666,7 +700,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>() List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber)
.eq(SysUser::getStatus, UserConstants.USER_NORMAL) .eq(SysUser::getStatus, UserConstants.USER_NORMAL)
.in(CollUtil.isNotEmpty(deptIds), SysUser::getDeptId, deptIds)); .in(SysUser::getDeptId, deptIds));
return BeanUtil.copyToList(list, UserDTO.class); return BeanUtil.copyToList(list, UserDTO.class);
} }
} }