Files
web_ylsa/api_iris/utils/holidays.go
2025-07-11 16:54:11 +08:00

56 lines
1018 B
Go

package utils
import (
"encoding/json"
"fmt"
"io"
"net/http"
"strconv"
)
var holidays []ResHolidays
func CheckHoliday(date string) (bool, string) {
year, err := strconv.Atoi(date[:4])
if len(holidays) == 0 {
err = getHolidays(year)
if err != nil {
return false, ""
}
}
for _, holiday := range holidays {
if date == holiday.Date {
return true, holiday.HolidayNameCn
}
}
return false, ""
}
func getHolidays(year int) error {
var res map[string]resHolidaysApi
//var holidays []ResHolidays
data, err := http.Get(fmt.Sprintf("https://api.jiejiariapi.com/v1/holidays/%s", strconv.Itoa(year)))
if err != nil {
return err
}
defer func(Body io.ReadCloser) {
err = Body.Close()
if err != nil {
return
}
}(data.Body)
body, _ := io.ReadAll(data.Body)
//解析json结构
err = json.Unmarshal(body, &res)
if err != nil {
return err
}
for _, j := range res {
holidays = append(holidays, ResHolidays{
Date: j.Date,
HolidayNameCn: j.Name,
})
}
return nil
}