From 37f52097847f9025589c79034be2454432c55433 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 02 十月 2026 10:12:27 +0800
Subject: [PATCH] docs(交接): 记录关机前开发服务已停止

---
 traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayConfigController.java |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95 insertions(+), 0 deletions(-)

diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayConfigController.java b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayConfigController.java
new file mode 100644
index 0000000..63c5a07
--- /dev/null
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayConfigController.java
@@ -0,0 +1,95 @@
+package com.trafficaudit.holiday.controller;
+
+import com.trafficaudit.common.Result;
+import com.trafficaudit.holiday.HolidayConstants;
+import com.trafficaudit.holiday.entity.HolidayCalendar;
+import com.trafficaudit.holiday.entity.HolidayPassengerCoefficient;
+import com.trafficaudit.holiday.service.HolidayConfigService;
+import com.trafficaudit.security.utils.JwtUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/holiday/config")
+public class HolidayConfigController {
+
+    @Resource
+    private HolidayConfigService configService;
+    @Resource
+    private JwtUtils jwtUtils;
+
+    @GetMapping("/options")
+    public Result<Map<String, Object>> options() {
+        return Result.ok(HolidayConstants.optionMap());
+    }
+
+    @GetMapping("/holidays")
+    public Result<List<HolidayCalendar>> holidays(@RequestParam(value = "year", required = false) Integer year,
+                                                   @RequestParam(value = "holidayType", required = false) String holidayType) {
+        return Result.ok(configService.listHolidays(year, holidayType));
+    }
+
+    @PostMapping("/holidays/save")
+    public Result<HolidayCalendar> saveHoliday(@RequestHeader(value = "Authorization", required = false) String auth,
+                                               @RequestBody Map<String, Object> params) {
+        if (!isAdmin(auth)) return Result.error(403, "浠� admin 鍙互绠$悊鑺傚亣鏃ラ厤缃�");
+        try {
+            return Result.ok(configService.saveHoliday(params));
+        } catch (Exception e) {
+            return Result.error(400, e.getMessage());
+        }
+    }
+
+    @PostMapping("/holidays/delete")
+    public Result<Void> deleteHoliday(@RequestHeader(value = "Authorization", required = false) String auth,
+                                      @RequestParam("id") Long id) {
+        if (!isAdmin(auth)) return Result.error(403, "浠� admin 鍙互绠$悊鑺傚亣鏃ラ厤缃�");
+        try {
+            configService.deleteHoliday(id);
+            return Result.ok();
+        } catch (Exception e) {
+            return Result.error(400, e.getMessage());
+        }
+    }
+
+    @GetMapping("/coefficients")
+    public Result<List<HolidayPassengerCoefficient>> coefficients(@RequestParam(value = "year", required = false) Integer year) {
+        return Result.ok(configService.listCoefficients(year));
+    }
+
+    @PostMapping("/coefficients/save")
+    public Result<HolidayPassengerCoefficient> saveCoefficient(@RequestHeader(value = "Authorization", required = false) String auth,
+                                                               @RequestBody Map<String, Object> params) {
+        if (!isAdmin(auth)) return Result.error(403, "浠� admin 鍙互绠$悊瀹㈣繍绯绘暟");
+        try {
+            return Result.ok(configService.saveCoefficient(params));
+        } catch (Exception e) {
+            return Result.error(400, e.getMessage());
+        }
+    }
+
+    @PostMapping("/coefficients/delete")
+    public Result<Void> deleteCoefficient(@RequestHeader(value = "Authorization", required = false) String auth,
+                                          @RequestParam("id") Long id) {
+        if (!isAdmin(auth)) return Result.error(403, "浠� admin 鍙互绠$悊瀹㈣繍绯绘暟");
+        try {
+            configService.deleteCoefficient(id);
+            return Result.ok();
+        } catch (Exception e) {
+            return Result.error(400, e.getMessage());
+        }
+    }
+
+    private boolean isAdmin(String auth) {
+        return "admin".equals(jwtUtils.resolveUsername(auth));
+    }
+}

--
Gitblit v1.9.1