Commit fd1d97cb8b99c9b3bc98fd8ff06230bd1a4fc5de

Authored by YunaiV
1 parent 383d45f1

fix(system): 修复按部门查询用户精简列表返回禁用用户

yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
... ... @@ -134,13 +134,8 @@ public class UserController {
134 134 @Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项")
135 135 public CommonResult<List<UserSimpleRespVO>> getSimpleUserList(
136 136 @RequestParam(value = "deptId", required = false) Long deptId) {
137   - List<AdminUserDO> list;
138   - if (deptId != null) {
139   - List<Long> deptIds = Collections.singletonList(deptId);
140   - list = userService.getDeptUsers(deptIds);
141   - } else {
142   - list = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus());
143   - }
  137 + List<AdminUserDO> list = userService.getUserListByStatus(
  138 + CommonStatusEnum.ENABLE.getStatus(), deptId);
144 139  
145 140 // 拼接数据
146 141 Map<Long, DeptDO> deptMap = deptService.getDeptMap(
... ...
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
... ... @@ -41,7 +41,13 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; {
41 41 }
42 42  
43 43 default List<AdminUserDO> selectListByStatus(Integer status) {
44   - return selectList(AdminUserDO::getStatus, status);
  44 + return selectListByStatusAndDeptId(status, null);
  45 + }
  46 +
  47 + default List<AdminUserDO> selectListByStatusAndDeptId(Integer status, Long deptId) {
  48 + return selectList(new LambdaQueryWrapperX<AdminUserDO>()
  49 + .eq(AdminUserDO::getStatus, status)
  50 + .eqIfPresent(AdminUserDO::getDeptId, deptId));
45 51 }
46 52  
47 53 default List<AdminUserDO> selectListByDeptIds(Collection<Long> deptIds) {
... ...
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
... ... @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
12 12 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
13 13 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
14 14 import jakarta.validation.Valid;
  15 +import org.springframework.lang.Nullable;
15 16  
16 17 import java.util.Collection;
17 18 import java.util.HashMap;
... ... @@ -214,11 +215,13 @@ public interface AdminUserService {
214 215 List<AdminUserDO> getUserListByStatus(Integer status);
215 216  
216 217 /**
217   - * 获得指定部门的用户
218   - * @param deptIds
219   - * @return
  218 + * 获得指定状态和部门的用户们
  219 + *
  220 + * @param status 状态
  221 + * @param deptId 部门编号,{@code null} 表示不筛选部门
  222 + * @return 用户们
220 223 */
221   - List<AdminUserDO> getDeptUsers(Collection<Long> deptIds);
  224 + List<AdminUserDO> getUserListByStatus(Integer status, @Nullable Long deptId);
222 225  
223 226 /**
224 227 * 判断密码是否匹配
... ...
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
... ... @@ -560,12 +560,12 @@ public class AdminUserServiceImpl implements AdminUserService {
560 560  
561 561 @Override
562 562 public List<AdminUserDO> getUserListByStatus(Integer status) {
563   - return userMapper.selectListByStatus(status);
  563 + return getUserListByStatus(status, null);
564 564 }
565 565  
566 566 @Override
567   - public List<AdminUserDO> getDeptUsers(Collection<Long> deptIds) {
568   - return userMapper.selectListByDeptIds(deptIds);
  567 + public List<AdminUserDO> getUserListByStatus(Integer status, Long deptId) {
  568 + return userMapper.selectListByStatusAndDeptId(status, deptId);
569 569 }
570 570  
571 571 @Override
... ...
yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
... ... @@ -722,6 +722,23 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
722 722 }
723 723  
724 724 @Test
  725 + public void testGetUserListByStatusAndDeptId() {
  726 + // mock 数据
  727 + AdminUserDO user = randomAdminUserDO(o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus()).setDeptId(1L));
  728 + userMapper.insert(user);
  729 + // 测试 status 不匹配
  730 + userMapper.insert(cloneIgnoreId(user, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
  731 + // 测试 deptId 不匹配
  732 + userMapper.insert(cloneIgnoreId(user, o -> o.setDeptId(2L)));
  733 +
  734 + // 调用
  735 + List<AdminUserDO> result = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus(), 1L);
  736 + // 断言
  737 + assertEquals(1, result.size());
  738 + assertEquals(user, result.get(0));
  739 + }
  740 +
  741 + @Test
725 742 public void testValidateUserList_success() {
726 743 // mock 数据
727 744 AdminUserDO userDO = randomAdminUserDO().setStatus(CommonStatusEnum.ENABLE.getStatus());
... ...