diff --git a/src/main/java/com/campus/water/controller/web/AdminController.java b/src/main/java/com/campus/water/controller/web/AdminController.java new file mode 100644 index 0000000..caa95dd --- /dev/null +++ b/src/main/java/com/campus/water/controller/web/AdminController.java @@ -0,0 +1,54 @@ +package com.campus.water.controller.web; + +import com.campus.water.entity.Admin; +import com.campus.water.service.AdminService; +import com.campus.water.util.ResultVO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/web/admin") +@RequiredArgsConstructor +@Tag(name = "管理员管理接口", description = "Web管理端管理员列表查询接口") +public class AdminController { + + private final AdminService adminService; + + /** + * 加载管理员列表(支持筛选) + * @param role 角色筛选(可选,值:super_admin/area_admin/viewer) + * @param status 状态筛选(可选,值:active/inactive) + */ + @GetMapping("/list") + @PreAuthorize("hasRole('ADMIN')") // 仅管理员可访问 + @Operation(summary = "获取管理员列表", description = "支持按角色和状态筛选管理员") + public ResponseEntity>> getAdminList( + @RequestParam(required = false) String role, + @RequestParam(required = false) String status + ) { + try { + // 转换参数为枚举类型 + Admin.AdminRole adminRole = role != null ? Admin.AdminRole.valueOf(role) : null; + Admin.AdminStatus adminStatus = status != null ? Admin.AdminStatus.valueOf(status) : null; + + // 调用服务层查询 + List adminList = adminService.getAdminList(adminRole, adminStatus); + return ResponseEntity.ok(ResultVO.success(adminList)); + } catch (IllegalArgumentException e) { + // 处理枚举参数错误 + return ResponseEntity.ok(ResultVO.error(400, "无效的角色或状态参数: " + e.getMessage())); + } catch (Exception e) { + // 处理其他异常 + return ResponseEntity.ok(ResultVO.error(500, "查询管理员列表失败: " + e.getMessage())); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/campus/water/controller/web/UserController.java b/src/main/java/com/campus/water/controller/web/UserController.java new file mode 100644 index 0000000..a58f493 --- /dev/null +++ b/src/main/java/com/campus/water/controller/web/UserController.java @@ -0,0 +1,53 @@ +package com.campus.water.controller.web; + +import com.campus.water.entity.User; +import com.campus.water.service.UserService; +import com.campus.water.util.ResultVO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/web/user") +@RequiredArgsConstructor +@Tag(name = "学生管理接口", description = "Web管理端学生列表查询接口") +public class UserController { + + private final UserService userService; + + /** + * 加载学生用户列表(支持筛选) + * @param studentName 学生姓名模糊查询(可选) + * @param status 状态筛选(可选,值:active/inactive) + */ + @GetMapping("/list") + @PreAuthorize("hasRole('ADMIN')") // 仅管理员可访问 + @Operation(summary = "获取学生用户列表", description = "支持按姓名和状态筛选学生") + public ResponseEntity>> getUserList( + @RequestParam(required = false) String studentName, + @RequestParam(required = false) String status + ) { + try { + // 转换状态参数为枚举类型 + User.UserStatus userStatus = status != null ? User.UserStatus.valueOf(status) : null; + + // 调用服务层查询 + List userList = userService.getUserList(studentName, userStatus); + return ResponseEntity.ok(ResultVO.success(userList)); + } catch (IllegalArgumentException e) { + // 处理枚举参数错误 + return ResponseEntity.ok(ResultVO.error(400, "无效的状态参数: " + e.getMessage())); + } catch (Exception e) { + // 处理其他异常 + return ResponseEntity.ok(ResultVO.error(500, "查询学生列表失败: " + e.getMessage())); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/AdminService.java b/src/main/java/com/campus/water/service/AdminService.java new file mode 100644 index 0000000..62a00b0 --- /dev/null +++ b/src/main/java/com/campus/water/service/AdminService.java @@ -0,0 +1,34 @@ +package com.campus.water.service; + +import com.campus.water.entity.Admin; +import com.campus.water.mapper.AdminRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class AdminService { + + private final AdminRepository adminRepository; + + /** + * 获取管理员列表(支持按角色和状态筛选) + */ + public List getAdminList(Admin.AdminRole role, Admin.AdminStatus status) { + if (role != null && status != null) { + // 按角色和状态筛选 + return adminRepository.findByRoleAndStatus(role, status); + } else if (role != null) { + // 仅按角色筛选 + return adminRepository.findByRole(role); + } else if (status != null) { + // 仅按状态筛选 + return adminRepository.findByStatus(status); + } else { + // 查询所有管理员 + return adminRepository.findAll(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/LoginService.java b/src/main/java/com/campus/water/service/LoginService.java index a8c82e2..37fcdfc 100644 --- a/src/main/java/com/campus/water/service/LoginService.java +++ b/src/main/java/com/campus/water/service/LoginService.java @@ -38,16 +38,6 @@ public class LoginService { }; } - /* private LoginVO handleAdminLogin(String username, String password) { - Admin admin = adminRepository.findByAdminName(username) - .orElseThrow(() -> new RuntimeException("管理员不存在")); - - if (!passwordEncoder.matches(password, admin.getPassword())) { - throw new RuntimeException("密码错误"); - } - - return createLoginVO(admin.getAdminId(), username, "admin"); - }*/ private LoginVO handleAdminLogin(String username, String password) { Admin admin = adminRepository.findByAdminName(username) .orElseThrow(() -> new RuntimeException("管理员不存在")); diff --git a/src/main/java/com/campus/water/service/UserService.java b/src/main/java/com/campus/water/service/UserService.java new file mode 100644 index 0000000..c2c5826 --- /dev/null +++ b/src/main/java/com/campus/water/service/UserService.java @@ -0,0 +1,34 @@ +package com.campus.water.service; + +import com.campus.water.entity.User; +import com.campus.water.mapper.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class UserService { + + private final UserRepository userRepository; + + /** + * 获取学生用户列表(支持按姓名和状态筛选) + */ + public List getUserList(String studentName, User.UserStatus status) { + if (studentName != null && status != null) { + // 按姓名模糊查询和状态筛选 + return userRepository.findByStudentNameContainingAndStatus(studentName, status); + } else if (studentName != null) { + // 仅按姓名模糊查询 + return userRepository.findByStudentNameContaining(studentName); + } else if (status != null) { + // 仅按状态筛选 + return userRepository.findByStatus(status); + } else { + // 查询所有学生 + return userRepository.findAll(); + } + } +} \ No newline at end of file