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

This commit is contained in:
YunaiV
2026-07-19 19:22:25 +08:00
parent 383d45f1b8
commit fd1d97cb8b
5 changed files with 36 additions and 15 deletions
@@ -134,13 +134,8 @@ public class UserController {
@Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项")
public CommonResult<List<UserSimpleRespVO>> getSimpleUserList(
@RequestParam(value = "deptId", required = false) Long deptId) {
List<AdminUserDO> list;
if (deptId != null) {
List<Long> deptIds = Collections.singletonList(deptId);
list = userService.getDeptUsers(deptIds);
} else {
list = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus());
}
List<AdminUserDO> list = userService.getUserListByStatus(
CommonStatusEnum.ENABLE.getStatus(), deptId);
// 拼接数据
Map<Long, DeptDO> deptMap = deptService.getDeptMap(
@@ -41,7 +41,13 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
}
default List<AdminUserDO> selectListByStatus(Integer status) {
return selectList(AdminUserDO::getStatus, status);
return selectListByStatusAndDeptId(status, null);
}
default List<AdminUserDO> selectListByStatusAndDeptId(Integer status, Long deptId) {
return selectList(new LambdaQueryWrapperX<AdminUserDO>()
.eq(AdminUserDO::getStatus, status)
.eqIfPresent(AdminUserDO::getDeptId, deptId));
}
default List<AdminUserDO> selectListByDeptIds(Collection<Long> deptIds) {
@@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import jakarta.validation.Valid;
import org.springframework.lang.Nullable;
import java.util.Collection;
import java.util.HashMap;
@@ -214,11 +215,13 @@ public interface AdminUserService {
List<AdminUserDO> getUserListByStatus(Integer status);
/**
* 获得指定部门的用户
* @param deptIds
* @return
* 获得指定状态和部门的用户们
*
* @param status 状态
* @param deptId 部门编号,{@code null} 表示不筛选部门
* @return 用户们
*/
List<AdminUserDO> getDeptUsers(Collection<Long> deptIds);
List<AdminUserDO> getUserListByStatus(Integer status, @Nullable Long deptId);
/**
* 判断密码是否匹配
@@ -560,12 +560,12 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public List<AdminUserDO> getUserListByStatus(Integer status) {
return userMapper.selectListByStatus(status);
return getUserListByStatus(status, null);
}
@Override
public List<AdminUserDO> getDeptUsers(Collection<Long> deptIds) {
return userMapper.selectListByDeptIds(deptIds);
public List<AdminUserDO> getUserListByStatus(Integer status, Long deptId) {
return userMapper.selectListByStatusAndDeptId(status, deptId);
}
@Override
@@ -721,6 +721,23 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
assertEquals(user, result.get(0));
}
@Test
public void testGetUserListByStatusAndDeptId() {
// mock 数据
AdminUserDO user = randomAdminUserDO(o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus()).setDeptId(1L));
userMapper.insert(user);
// 测试 status 不匹配
userMapper.insert(cloneIgnoreId(user, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
// 测试 deptId 不匹配
userMapper.insert(cloneIgnoreId(user, o -> o.setDeptId(2L)));
// 调用
List<AdminUserDO> result = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus(), 1L);
// 断言
assertEquals(1, result.size());
assertEquals(user, result.get(0));
}
@Test
public void testValidateUserList_success() {
// mock 数据