Răsfoiți Sursa

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

AprilWind 10 luni în urmă
părinte
comite
6886e9fd5b

+ 37 - 3
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -42,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 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();
     }
 
+    /**
+     * 通过用户ID查询用户列表
+     *
+     * @param userIds 用户ids
+     * @return 用户列表
+     */
     @Override
     public List<UserDTO> selectListByIds(List<Long> userIds) {
         if (CollUtil.isEmpty(userIds)) {
@@ -636,28 +643,55 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
         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) {
+        if (CollUtil.isEmpty(roleIds)) {
+            return List.of();
+        }
         List<SysUserRole> userRoles = userRoleMapper.selectList(
             new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds));
         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));
-        List<Long> userIds = StreamUtils.toList(userRoles, SysUserRole::getUserId);
+
+        // 获取用户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 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
         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);
     }
 }