From b6468297a148c3c4d528745f69027525378086bd Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 15 Apr 2019 12:42:43 +0800 Subject: [PATCH] - ddapi.Sign --- business/model/const.go | 1 + controllers/dingding_api.go | 55 +++++++++++++++++++++++++++++++++++++ routers/router.go | 5 ++++ 3 files changed, 61 insertions(+) create mode 100644 controllers/dingding_api.go diff --git a/business/model/const.go b/business/model/const.go index 00bbc8e4d..40825387d 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -181,6 +181,7 @@ const ( OrderStatusFinished = 110 // 订单已完成 OrderStatusCanceled = 115 // 订单已取消 OrderStatusFailed = 120 // 订单已失败 + OrderStatusRefund = 125 // 订单全额退款 ) const ( diff --git a/controllers/dingding_api.go b/controllers/dingding_api.go new file mode 100644 index 000000000..79fbafbad --- /dev/null +++ b/controllers/dingding_api.go @@ -0,0 +1,55 @@ +package controllers + +import ( + "crypto/sha1" + "fmt" + "time" + + "git.rosy.net.cn/jx-callback/globals/api" + "github.com/astaxie/beego" +) + +type DDAPIController struct { + beego.Controller +} + +type DDAPI struct { + Ticket string + ExpiresIn time.Time +} + +var ( + ddapi *DDAPI +) + +func init() { + ddapi = &DDAPI{} +} + +// @Title 得到门店用户信息 +// @Description 得到门店用户信息 +// @Param token header string true "认证token" +// @Param url query string true "当前网页的URL,不包含#及其后面部分" +// @Param nonceStr query string true "随机串,自己定义" +// @Param timeStamp query string true "时间戳" +// @Param agentId query string false "应用的标识" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /Sign [get] +func (c *DDAPIController) Sign() { + c.callSign(func(params *tDdapiSignParams) (retVal interface{}, errCode string, err error) { + if ddapi.Ticket == "" || time.Now().Sub(ddapi.ExpiresIn) >= -5*time.Minute { + expiresIn, ticket, err2 := api.DingDingAPI.GetJSAPITicket("") + if err = err2; err == nil { + ddapi.Ticket = ticket + ddapi.ExpiresIn = time.Now().Add(time.Duration(expiresIn) * time.Second) + } + } + if err == nil { + retVal = fmt.Sprintf("%x", sha1.Sum([]byte("jsapi_ticket="+ddapi.Ticket+ + "&noncestr="+params.NonceStr+"×tamp="+params.TimeStamp+"&url="+params.Url))) + + } + return retVal, "", err + }) +} diff --git a/routers/router.go b/routers/router.go index a409e2879..0ae09d9c8 100644 --- a/routers/router.go +++ b/routers/router.go @@ -91,6 +91,11 @@ func init() { &controllers.User2Controller{}, ), ), + beego.NSNamespace("/ddapi", + beego.NSInclude( + &controllers.DDAPIController{}, + ), + ), ) beego.AddNamespace(ns)