From 49f07b0ce7a6a9e0893a9a01199130f2fa0e619c Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期三, 17 六月 2020 18:03:23 +0800
Subject: [PATCH] add restriction

---
 go.sum                     |    2 +
 routers/router.go          |    1 
 controllers/restriction.go |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 go.mod                     |    1 
 4 files changed, 99 insertions(+), 0 deletions(-)

diff --git a/controllers/restriction.go b/controllers/restriction.go
new file mode 100644
index 0000000..8ce48ce
--- /dev/null
+++ b/controllers/restriction.go
@@ -0,0 +1,95 @@
+package controllers
+
+import (
+	"car-service/extend/code"
+	"car-service/extend/util"
+	"encoding/json"
+	"github.com/astaxie/beego"
+	"net/http"
+	"github.com/robfig/cron"
+)
+
+type RestrictionController struct {
+	beego.Controller
+}
+
+// @Title 鏌ヨ闄愯灏惧彿
+// @Description 鏌ヨ闄愯灏惧彿
+// @Success 200 {object} controllers.RestrictionResult
+// @Failure 403 {string} json ""
+// @router /spaceNo [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= nil
+	}
+	c.Data["json"] = resp
+	c.ServeJSON()
+}
+
+var todayRes *RestrictionResult
+
+func Schedule() {
+	c := cron.New()
+	//姣忓皬鏃剁洃娴嬩竴娆℃槸鍚﹁繃鏈�
+	c.AddFunc("0 0 * * * ?", func() {
+		todayRes = nil
+		getRestrictionInfo()
+	})
+	c.Start()
+}
+
+type RestrictionResult struct {
+	Date 		string 		`json:"date"`
+	Week 		string 		`json:"week"`
+	CityName 	string		`json:"cityName"`
+	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 := ""
+	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,
+		}
+	}
+}
+
diff --git a/go.mod b/go.mod
index 5b133dc..a9742c0 100644
--- a/go.mod
+++ b/go.mod
@@ -9,4 +9,5 @@
 	github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
 	github.com/smartystreets/goconvey v1.6.4 // indirect
 	github.com/swaggo/swag v1.6.7
+	github.com/robfig/cron v1.2.0
 )
diff --git a/go.sum b/go.sum
index f022e5e..1751cd9 100644
--- a/go.sum
+++ b/go.sum
@@ -14,6 +14,8 @@
 github.com/astaxie/beego v1.12.1/go.mod h1:kPBWpSANNbSdIqOc8SUL9h+1oyBMZhROeYsXQDbidWQ=
 github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ=
 github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU=
+github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
+github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
 github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
 github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
 github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
diff --git a/routers/router.go b/routers/router.go
index b191f5f..5a9a84c 100644
--- a/routers/router.go
+++ b/routers/router.go
@@ -42,4 +42,5 @@
 	beego.Router("/basic/api/car/statistic", &controllers.CarController{}, "*:Statistic")
 	beego.Router("/basic/api/car/spaceNo", &controllers.CarController{}, "*:SpaceNo")
 	beego.Router("/basic/api/car/app/version", &controllers.AppController{}, "*:Version")
+	beego.Router("/basic/api/car/restriction", &controllers.RestrictionController{}, "*:Restriction")
 }

--
Gitblit v1.8.0