liuxiaolong
2020-06-17 49f07b0ce7a6a9e0893a9a01199130f2fa0e619c
add restriction
1个文件已添加
3个文件已修改
99 ■■■■■ 已修改文件
controllers/restriction.go 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.mod 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.sum 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
routers/router.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/restriction.go
New file
@@ -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,
        }
    }
}
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
)
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=
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")
}