From 2b77ad0e1f407903d85c3b7bdaae0022c4ec9bc3 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 08 九月 2020 14:54:00 +0800
Subject: [PATCH] fix push bug
---
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