package com.mydreamjob.controller; import com.mydreamjob.common.api.ApiResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Map; /** * 应用信息控制器 */ @Tag(name = "系统", description = "健康检查、应用信息") @RestController @RequiredArgsConstructor @RequestMapping public class SystemController { /** R01-A6:身份只来自安全上下文,不接受请求参数传入的 userId。 */ private final com.mydreamjob.security.CurrentUserAccessor currentUserAccessor; /** R01-A6:requestId 只来自过滤器规范化后的唯一产出点。 */ private final com.mydreamjob.common.logging.RequestIdAccessor requestIdAccessor; @Operation(summary = "应用健康检查", description = "返回应用及依赖服务状态") @GetMapping("/health") public ResponseEntity>> health(HttpServletRequest request) { Map details = Map.of( "status", "UP", "application", "mydreamjob-server", "version", "0.0.1-SNAPSHOT" ); return ResponseEntity.ok(ApiResponse.ok(details, requestIdAccessor.get(request))); } @Operation(summary = "应用信息", description = "返回应用版本、运行时信息") @GetMapping("/info") public ResponseEntity>> info(HttpServletRequest request) { Map info = Map.of( "application", "mydreamjob-server", "version", "0.0.1-SNAPSHOT", "javaVersion", System.getProperty("java.version"), "uptimeSeconds", (System.currentTimeMillis() - java.lang.management.ManagementFactory.getRuntimeMXBean().getStartTime()) / 1000, "springProfile", System.getProperty("spring.profiles.active", "dev") ); return ResponseEntity.ok(ApiResponse.ok(info, requestIdAccessor.get(request))); } }