package controllers import ( "car-service/extend/code" "car-service/extend/util" "encoding/json" "fmt" "github.com/astaxie/beego" "net/http" "github.com/robfig/cron" ) type RestrictionController struct { beego.Controller } func init() { getRestrictionInfo() } // @Title 查询限行尾号 // @Description 查询限行尾号 // @Success 200 {object} controllers.RestrictionResult // @Failure 403 {string} json "" // @router /restriction [get] func (c *RestrictionController) Restriction() { resp := code.Code{} if todayRes !=nil { resp.Success= true resp.Status= http.StatusOK resp.Data= *todayRes } else { resp.Success= false resp.Status= http.StatusBadRequest resp.Data= "数据请求失败,请稍后重试" } c.Data["json"] = resp c.ServeJSON() } var todayRes *RestrictionResult func Schedule() { c := cron.New() //每天凌晨5点执行一次,获取当日数据 c.AddFunc("0 0 1 * * ?", func() { todayRes = nil getRestrictionInfo() }) c.Start() } type RestrictionResult struct { Date string `json:"date"` Week string `json:"week"` CityName string `json:"cityName"` IsXianXing int `json:"isxianxing"` XxWeiHao []int `json:"xxWeiHao"` } type JuHeResult struct { Reason string `json:"reason"` Result CityRestriction `json:"result"` ErrorCode int `json:"error_code"` } type CityRestriction struct { Date string `json:"date"` Week string `json:"week"` City string `json:"city"` CityName string `json:"cityname"` Des []interface{} `json:"des"` Fine string `json:"fine"` Remarks string `json:"remarks"` IsXianXing int `json:"isxianxing"` XXWeiHao []int `json:"xxweihao"` Holiday string `json:"holiday"` } func getRestrictionInfo() { juHeAppKey := beego.AppConfig.String("juheweihaokey") url := "http://v.juhe.cn/xianxing/index?key="+ juHeAppKey +"&city=beijing&type=1" b, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, nil, nil, nil) if err != nil { fmt.Println("err:", err) return } var result JuHeResult err = json.Unmarshal(b, &result) if err != nil { fmt.Println("unmarshal err:", err) return } if result.ErrorCode == 0 { todayRes = &RestrictionResult{ Date: result.Result.Date, Week: result.Result.Week, CityName: result.Result.CityName, IsXianXing: result.Result.IsXianXing, XxWeiHao: result.Result.XXWeiHao, } } }