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,13 +134,8 @@ public class UserController {
134 @Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项") 134 @Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项")
135 public CommonResult<List<UserSimpleRespVO>> getSimpleUserList( 135 public CommonResult<List<UserSimpleRespVO>> getSimpleUserList(
136 @RequestParam(value = "deptId", required = false) Long deptId) { 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 Map<Long, DeptDO> deptMap = deptService.getDeptMap( 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,7 +41,13 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; {
41 } 41 }
42 42
43 default List<AdminUserDO> selectListByStatus(Integer status) { 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 default List<AdminUserDO> selectListByDeptIds(Collection<Long> deptIds) { 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,6 +12,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
12 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO; 12 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
13 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 13 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
14 import jakarta.validation.Valid; 14 import jakarta.validation.Valid;
  15 +import org.springframework.lang.Nullable;
15 16
16 import java.util.Collection; 17 import java.util.Collection;
17 import java.util.HashMap; 18 import java.util.HashMap;
@@ -214,11 +215,13 @@ public interface AdminUserService { @@ -214,11 +215,13 @@ public interface AdminUserService {
214 List<AdminUserDO> getUserListByStatus(Integer status); 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,12 +560,12 @@ public class AdminUserServiceImpl implements AdminUserService {
560 560
561 @Override 561 @Override
562 public List<AdminUserDO> getUserListByStatus(Integer status) { 562 public List<AdminUserDO> getUserListByStatus(Integer status) {
563 - return userMapper.selectListByStatus(status); 563 + return getUserListByStatus(status, null);
564 } 564 }
565 565
566 @Override 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 @Override 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,6 +722,23 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
722 } 722 }
723 723
724 @Test 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 public void testValidateUserList_success() { 742 public void testValidateUserList_success() {
726 // mock 数据 743 // mock 数据
727 AdminUserDO userDO = randomAdminUserDO().setStatus(CommonStatusEnum.ENABLE.getStatus()); 744 AdminUserDO userDO = randomAdminUserDO().setStatus(CommonStatusEnum.ENABLE.getStatus());