From bae4af47f77a195a12a0437584d667465e826e12 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期一, 17 八月 2020 16:09:28 +0800 Subject: [PATCH] add log --- controllers/restriction.go | 204 +++++++++++++++++++++++++++++++++++++------------- 1 files changed, 149 insertions(+), 55 deletions(-) diff --git a/controllers/restriction.go b/controllers/restriction.go index 8ce48ce..6df5716 100644 --- a/controllers/restriction.go +++ b/controllers/restriction.go @@ -2,11 +2,13 @@ import ( "car-service/extend/code" - "car-service/extend/util" + "car-service/models" "encoding/json" + "fmt" "github.com/astaxie/beego" "net/http" - "github.com/robfig/cron" + "strings" + "time" ) type RestrictionController struct { @@ -17,79 +19,171 @@ // @Description 鏌ヨ闄愯灏惧彿 // @Success 200 {object} controllers.RestrictionResult // @Failure 403 {string} json "" -// @router /spaceNo [get] +// @router /restriction [get] func (c *RestrictionController) Restriction() { resp := code.Code{} - if todayRes !=nil { + var restric models.Restriction + err := restric.GetOne() + + if err == nil { resp.Success= true resp.Status= http.StatusOK - resp.Data= *todayRes + now := time.Now() + nowDate := now.Format("2006-01-02") + week := now.Weekday() + result := RestrictionResult{} + result.CityName = "鍖椾含" + result.Date = nowDate + result.Week = getWeek(week) + //鍛ㄥ叚鍛ㄦ棩锛屼互鍙婃硶瀹氳妭鍋囨棩涓嶉檺琛� + if week == time.Sunday || week == time.Saturday || isHoliday(nowDate, restric.Holidays) { + result.IsXianXing = 0 + result.XxWeiHao = []int{} + } else { + result.IsXianXing = 1 + //鑾峰彇闄愯灏惧彿 + result.XxWeiHao = getXianxingWeiHao(now, nowDate, restric.Setting) + } + resp.Data= result } else { resp.Success= false resp.Status= http.StatusBadRequest - resp.Data= nil + resp.Data= "鏁版嵁璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯" } c.Data["json"] = resp c.ServeJSON() } -var todayRes *RestrictionResult +func getXianxingWeiHao(nowTime time.Time, nowDate string, setting string) []int { + var set []models.SetWeiHao + err := json.Unmarshal([]byte(setting), &set) + if err != nil { + fmt.Println("unmarshal xianxing set err:", err) + return []int{} + } else { + list := make([]int, 0) + for _,d := range set { + if isBetween(d.StartTime, d.EndTime, nowDate, nowTime) { + for _,xx := range d.XianXing { + if xx.Day == int(nowTime.Weekday()) { + list = xx.WeiHao + break + } + } + break + } + } + return list + } +} -func Schedule() { - c := cron.New() - //姣忓皬鏃剁洃娴嬩竴娆℃槸鍚﹁繃鏈� - c.AddFunc("0 0 * * * ?", func() { - todayRes = nil - getRestrictionInfo() - }) - c.Start() +func isBetween(st string, et string, nowDate string, nowTime time.Time) bool { + if st == nowDate || et == nowDate { + return true + } else { + st, e1 := time.Parse("2006-01-02", st) + et, e2 := time.Parse("2006-01-02", et) + if e1 == nil && e2 == nil && st.Before(nowTime) && et.After(nowTime) { + return true + } + return false + } +} + +func getWeek(week time.Weekday) string { + s := "" + switch week { + case time.Sunday: + s = "鏄熸湡鏃�" + case time.Monday: + s = "鏄熸湡涓�" + case time.Tuesday: + s = "鏄熸湡浜�" + case time.Wednesday: + s = "鏄熸湡涓�" + case time.Thursday: + s = "鏄熸湡鍥�" + case time.Friday: + s = "鏄熸湡浜�" + case time.Saturday: + s = "鏄熸湡鍏�" + default: + s = "" + } + return s +} + +//鍒ゆ柇鏄惁鏄妭鍋囨棩 +func isHoliday(nowDate string, holidays string) bool { + arr := strings.Split(holidays, ",") + for _,s := range arr { + if s == nowDate { + return true + } + } + return false } 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 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"` +//} -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 := "" - 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 { - return - } - var result JuHeResult - err = json.Unmarshal(b, &result) - if err != nil { - return - } - if result.ErrorCode == 0 { - todayRes = &RestrictionResult{ - Date: result.Result.Date, - Week: result.Result.Week, - CityName: result.Result.CityName, - XxWeiHao: result.Result.XXWeiHao, - } - } -} - +//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, +// } +// rc := models.Restriction{ +// Date: result.Result.Date, +// Week: result.Result.Week, +// CityName: result.Result.CityName, +// IsXianXing: result.Result.IsXianXing, +// } +// var arr []string +// for _,n := range result.Result.XXWeiHao { +// arr=append(arr, strconv.Itoa(n)) +// } +// rc.WeiHao = strings.Join(arr, ",") +// rc.Insert() +// } +//} \ No newline at end of file -- Gitblit v1.8.0