轻松聘AI开发
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

53 lines
2.3 KiB

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<ApiResponse<Map<String, Object>>> health(HttpServletRequest request) {
Map<String, Object> 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<ApiResponse<Map<String, Object>>> info(HttpServletRequest request) {
Map<String, Object> 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)));
}
}