From 6886e9fd5b195484cb67d91166e4b64639773e99 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: 星期五, 06 九月 2024 14:14:15 +0800 Subject: [PATCH] update 优化查询用户时多余重复判断以及去重 --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 44 insertions(+), 10 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 2540606..d304e38 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -42,6 +42,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 鐢ㄦ埛 涓氬姟灞傚鐞� @@ -628,6 +629,12 @@ return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail(); } + /** + * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃 + * + * @param userIds 鐢ㄦ埛ids + * @return 鐢ㄦ埛鍒楄〃 + */ @Override public List<UserDTO> selectListByIds(List<Long> userIds) { if (CollUtil.isEmpty(userIds)) { @@ -636,28 +643,55 @@ List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) .eq(SysUser::getStatus, UserConstants.USER_NORMAL) - .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); + .in(SysUser::getUserId, userIds)); return BeanUtil.copyToList(list, UserDTO.class); } + /** + * 閫氳繃瑙掕壊ID鏌ヨ鐢ㄦ埛ID + * + * @param roleIds 瑙掕壊ids + * @return 鐢ㄦ埛ids + */ @Override 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)) { return List.of(); } List<SysUserRole> userRoles = userRoleMapper.selectList( 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); } + /** + * 閫氳繃閮ㄩ棬ID鏌ヨ鐢ㄦ埛 + * + * @param deptIds 閮ㄩ棬ids + * @return 鐢ㄦ埛 + */ @Override public List<UserDTO> selectUsersByDeptIds(List<Long> deptIds) { if (CollUtil.isEmpty(deptIds)) { @@ -666,7 +700,7 @@ List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) .eq(SysUser::getStatus, UserConstants.USER_NORMAL) - .in(CollUtil.isNotEmpty(deptIds), SysUser::getDeptId, deptIds)); + .in(SysUser::getDeptId, deptIds)); return BeanUtil.copyToList(list, UserDTO.class); } } -- Gitblit v1.9.3