From 58c41317ceb5f1d1f9b2bb1552a01189e8571a34 Mon Sep 17 00:00:00 2001 From: Hvemi_han Date: Fri, 20 Dec 2024 16:48:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=8C=89=E9=83=A8?= =?UTF-8?q?=E9=97=A8ID=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API文档.md | 48 +++++++++++++++++++ .../controller/UserController.java | 17 +++++++ .../repository/UserRepository.java | 3 ++ .../jinduguanli/service/UserService.java | 5 ++ 4 files changed, 73 insertions(+) diff --git a/API文档.md b/API文档.md index d624bbb..646be5d 100644 --- a/API文档.md +++ b/API文档.md @@ -221,6 +221,54 @@ } ``` +### 7. 查询部门用户列表 + +- **接口**:`GET /api/users/department/{departmentId}` +- **描述**:获取指定部门下的所有正常状态用户列表 +- **认证**:需要 +- **路径参数**: + - `departmentId`: 部门 ID +- **成功响应**: + ```json + { + "code": 10000, + "message": "成功", + "data": [ + { + "id": 2, + "username": "普通管理员账号2", + "email": "user2@qq.com", + "password": null, + "departmentId": 1, + "roles": 2, + "jobs": 2, + "avatar": null, + "creatorId": 1, + "status": 1, + "createdAt": 1734504506, + "updatedAt": 1734504506, + "enabled": true, + "authorities": [ + { + "authority": "ROLE_USER" + } + ], + "accountNonExpired": true, + "accountNonLocked": true, + "credentialsNonExpired": true + } + ] + } + ``` +- **错误响应**: + ```json + { + "code": 50000, + "message": "获取部门用户列表失败", + "data": null + } + ``` + ## 课程任务接口 ### 1. 获取课程任务列表 diff --git a/src/main/java/com/huertian/jinduguanli/controller/UserController.java b/src/main/java/com/huertian/jinduguanli/controller/UserController.java index 0dfc8a5..e653bd1 100644 --- a/src/main/java/com/huertian/jinduguanli/controller/UserController.java +++ b/src/main/java/com/huertian/jinduguanli/controller/UserController.java @@ -1,6 +1,7 @@ package com.huertian.jinduguanli.controller; import com.huertian.jinduguanli.common.ApiResponse; +import com.huertian.jinduguanli.common.ErrorCode; import com.huertian.jinduguanli.dto.CreateUserRequest; import com.huertian.jinduguanli.dto.LoginResponse; import com.huertian.jinduguanli.dto.UserLoginRequest; @@ -14,6 +15,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api/users") public class UserController { @@ -85,4 +88,18 @@ public class UserController { logger.info("收到禁用用户请求,用户ID: {}", userId); return userService.disableUser(userId); } + + @GetMapping("/department/{departmentId}") + public ApiResponse> getUsersByDepartment(@PathVariable Long departmentId) { + logger.info("收到查询部门用户请求,部门ID: {}", departmentId); + try { + List users = userService.findByDepartmentId(departmentId); + // 清除密码信息 + users.forEach(user -> user.setPassword(null)); + return ApiResponse.success(users); + } catch (Exception e) { + logger.error("查询部门用户失败", e); + return new ApiResponse<>(ErrorCode.SYSTEM_ERROR, "获取部门用户列表失败", null); + } + } } diff --git a/src/main/java/com/huertian/jinduguanli/repository/UserRepository.java b/src/main/java/com/huertian/jinduguanli/repository/UserRepository.java index b2cab15..f5c4053 100644 --- a/src/main/java/com/huertian/jinduguanli/repository/UserRepository.java +++ b/src/main/java/com/huertian/jinduguanli/repository/UserRepository.java @@ -17,4 +17,7 @@ public interface UserRepository extends JpaRepository { @Query(value = "SELECT * FROM users LIMIT :limit OFFSET :offset", nativeQuery = true) List findAllWithPagination(@Param("offset") int offset, @Param("limit") int limit); + + @Query("SELECT u FROM User u WHERE u.departmentId = :departmentId AND u.status = 1") + List findByDepartmentIdAndNormalStatus(@Param("departmentId") Long departmentId); } diff --git a/src/main/java/com/huertian/jinduguanli/service/UserService.java b/src/main/java/com/huertian/jinduguanli/service/UserService.java index ebf69c6..5de17c8 100644 --- a/src/main/java/com/huertian/jinduguanli/service/UserService.java +++ b/src/main/java/com/huertian/jinduguanli/service/UserService.java @@ -168,4 +168,9 @@ public class UserService implements UserDetailsService { savedUser.setPassword(null); return savedUser; } + + public List findByDepartmentId(Long departmentId) { + logger.info("查询部门用户列表,部门ID: {}", departmentId); + return userRepository.findByDepartmentIdAndNormalStatus(departmentId); + } }