| 123456789101112131415161718192021222324252627282930313233343536373839 |
- package com.hwmonitor.controller;
- import com.hwmonitor.config.MonitorConfig;
- import com.hwmonitor.scheduler.MetricsScheduler;
- import org.springframework.web.bind.annotation.*;
- import java.util.Map;
- @RestController
- @RequestMapping("/api/v1/config")
- public class ConfigController {
- private final MonitorConfig monitorConfig;
- private final MetricsScheduler metricsScheduler;
- public ConfigController(MonitorConfig monitorConfig, MetricsScheduler metricsScheduler) {
- this.monitorConfig = monitorConfig;
- this.metricsScheduler = metricsScheduler;
- }
- @GetMapping("/interval")
- public Map<String, Object> getInterval() {
- return Map.of(
- "intervalSeconds", monitorConfig.getCollectIntervalSeconds(),
- "availableOptions", new int[]{30, 60}
- );
- }
- @PutMapping("/interval")
- public Map<String, Object> setInterval(@RequestBody Map<String, Integer> body) {
- int seconds = body.getOrDefault("intervalSeconds", 30);
- if (seconds != 30 && seconds != 60) {
- throw new IllegalArgumentException("采集间隔仅支持 30 或 60 秒");
- }
- monitorConfig.setCollectIntervalSeconds(seconds);
- metricsScheduler.reschedule();
- return Map.of("intervalSeconds", seconds, "status", "ok");
- }
- }
|