From df2729026d605af1cddc9c05bdff5ae92ff895bc Mon Sep 17 00:00:00 2001 From: wanglei <3085637232@qq.com> Date: Sun, 4 Jan 2026 22:32:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../water/controller/web/AdminController.java | 19 +++++++++++++ .../water/controller/web/AreaController.java | 27 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/src/main/java/com/campus/water/controller/web/AdminController.java b/src/main/java/com/campus/water/controller/web/AdminController.java index 3cf6275..2975624 100644 --- a/src/main/java/com/campus/water/controller/web/AdminController.java +++ b/src/main/java/com/campus/water/controller/web/AdminController.java @@ -41,6 +41,25 @@ public class AdminController { } + /** + * 按ID查询单个管理员信息 + */ + @GetMapping("/{adminId}") + @PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN')") // 超级/区域管理员可查看 + @Operation(summary = "按ID查询单个管理员", description = "根据管理员ID返回完整的管理员信息") + public ResponseEntity> getAdminById(@PathVariable String adminId) { + try { + Optional adminOpt = adminService.getAdminById(adminId); + if (adminOpt.isPresent()) { + return ResponseEntity.ok(ResultVO.success(adminOpt.get())); + } else { + return ResponseEntity.ok(ResultVO.error(404, "管理员不存在,ID:" + adminId)); + } + } catch (Exception e) { + return ResponseEntity.ok(ResultVO.error(500, "查询管理员失败:" + e.getMessage())); + } + } + /** * 新增:查询可分配校区的区域管理员(未负责任何片区) */ diff --git a/src/main/java/com/campus/water/controller/web/AreaController.java b/src/main/java/com/campus/water/controller/web/AreaController.java index ce5a3f3..a755021 100644 --- a/src/main/java/com/campus/water/controller/web/AreaController.java +++ b/src/main/java/com/campus/water/controller/web/AreaController.java @@ -2,6 +2,7 @@ package com.campus.water.controller.web; import com.campus.water.entity.Area; import com.campus.water.service.AreaService; +import io.swagger.v3.oas.annotations.Operation; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -164,4 +165,30 @@ public class AreaController { .body(buildResponse(500, "查询区域详情失败:" + e.getMessage(), null)); } } + + /** + * 按ID查询单个校区信息(专属接口,仅返回校区类型) + */ + @GetMapping("/campus/{areaId}") + @PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN', 'REPAIRMAN')") // 与普通区域查询权限一致 + @Operation(summary = "按ID查询单个校区", description = "根据区域ID返回校区信息,非校区类型返回错误") + public ResponseEntity> getCampusById(@PathVariable String areaId) { + try { + // 先调用已有的service方法查询区域 + Area area = areaService.getAreaById(areaId); + + // 核心:过滤校区类型,校验是否为campus + if (Area.AreaType.campus.equals(area.getAreaType())) { + return ResponseEntity.ok(buildResponse(200, "查询校区成功", area)); + } else { + return ResponseEntity.badRequest().body(buildResponse(400, "该区域不是校区,ID:" + areaId, null)); + } + } catch (RuntimeException e) { + // 捕获service中抛出的"区域不存在"异常 + return ResponseEntity.badRequest().body(buildResponse(400, e.getMessage(), null)); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(buildResponse(500, "查询校区失败:" + e.getMessage(), null)); + } + } } \ No newline at end of file -- 2.34.1