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> options() { return Result.ok(HolidayConstants.optionMap()); } @GetMapping("/holidays") public Result> 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 saveHoliday(@RequestHeader(value = "Authorization", required = false) String auth, @RequestBody Map 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 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> coefficients(@RequestParam(value = "year", required = false) Integer year) { return Result.ok(configService.listCoefficients(year)); } @PostMapping("/coefficients/save") public Result saveCoefficient(@RequestHeader(value = "Authorization", required = false) String auth, @RequestBody Map 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 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)); } }