mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 优化查询用户时多余重复判断以及去重
This commit is contained in:
		@@ -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);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user