diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java index 7cb7d78..534d743 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java @@ -134,13 +134,8 @@ public class UserController { @Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项") public CommonResult> getSimpleUserList( @RequestParam(value = "deptId", required = false) Long deptId) { - List list; - if (deptId != null) { - List deptIds = Collections.singletonList(deptId); - list = userService.getDeptUsers(deptIds); - } else { - list = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus()); - } + List list = userService.getUserListByStatus( + CommonStatusEnum.ENABLE.getStatus(), deptId); // 拼接数据 Map deptMap = deptService.getDeptMap( diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index c0c9be8..4a17944 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/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 { } default List selectListByStatus(Integer status) { - return selectList(AdminUserDO::getStatus, status); + return selectListByStatusAndDeptId(status, null); + } + + default List selectListByStatusAndDeptId(Integer status, Long deptId) { + return selectList(new LambdaQueryWrapperX() + .eq(AdminUserDO::getStatus, status) + .eqIfPresent(AdminUserDO::getDeptId, deptId)); } default List selectListByDeptIds(Collection deptIds) { diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index 4ec9765..63d9748 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/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 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 getUserListByStatus(Integer status); /** - * 获得指定部门的用户 - * @param deptIds - * @return + * 获得指定状态和部门的用户们 + * + * @param status 状态 + * @param deptId 部门编号,{@code null} 表示不筛选部门 + * @return 用户们 */ - List getDeptUsers(Collection deptIds); + List getUserListByStatus(Integer status, @Nullable Long deptId); /** * 判断密码是否匹配 diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index c2840b8..d9dd5c8 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -560,12 +560,12 @@ public class AdminUserServiceImpl implements AdminUserService { @Override public List getUserListByStatus(Integer status) { - return userMapper.selectListByStatus(status); + return getUserListByStatus(status, null); } @Override - public List getDeptUsers(Collection deptIds) { - return userMapper.selectListByDeptIds(deptIds); + public List getUserListByStatus(Integer status, Long deptId) { + return userMapper.selectListByStatusAndDeptId(status, deptId); } @Override diff --git a/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java b/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java index 68c8510..1716226 100644 --- a/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java +++ b/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java @@ -722,6 +722,23 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { } @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 result = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus(), 1L); + // 断言 + assertEquals(1, result.size()); + assertEquals(user, result.get(0)); + } + + @Test public void testValidateUserList_success() { // mock 数据 AdminUserDO userDO = randomAdminUserDO().setStatus(CommonStatusEnum.ENABLE.getStatus());