ConfigController.java 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package com.hwmonitor.controller;
  2. import com.hwmonitor.config.MonitorConfig;
  3. import com.hwmonitor.scheduler.MetricsScheduler;
  4. import org.springframework.web.bind.annotation.*;
  5. import java.util.Map;
  6. @RestController
  7. @RequestMapping("/api/v1/config")
  8. public class ConfigController {
  9. private final MonitorConfig monitorConfig;
  10. private final MetricsScheduler metricsScheduler;
  11. public ConfigController(MonitorConfig monitorConfig, MetricsScheduler metricsScheduler) {
  12. this.monitorConfig = monitorConfig;
  13. this.metricsScheduler = metricsScheduler;
  14. }
  15. @GetMapping("/interval")
  16. public Map<String, Object> getInterval() {
  17. return Map.of(
  18. "intervalSeconds", monitorConfig.getCollectIntervalSeconds(),
  19. "availableOptions", new int[]{30, 60}
  20. );
  21. }
  22. @PutMapping("/interval")
  23. public Map<String, Object> setInterval(@RequestBody Map<String, Integer> body) {
  24. int seconds = body.getOrDefault("intervalSeconds", 30);
  25. if (seconds != 30 && seconds != 60) {
  26. throw new IllegalArgumentException("采集间隔仅支持 30 或 60 秒");
  27. }
  28. monitorConfig.setCollectIntervalSeconds(seconds);
  29. metricsScheduler.reschedule();
  30. return Map.of("intervalSeconds", seconds, "status", "ok");
  31. }
  32. }