package controllers import ( "crypto/sha1" "fmt" "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/model/dao" "time" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" ) type DDAPIController struct { web.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 "时间戳" // @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 { str := "jsapi_ticket=" + ddapi.Ticket + "&noncestr=" + params.NonceStr + "×tamp=" + params.TimeStamp + "&url=" + params.Url retVal = fmt.Sprintf("%x", sha1.Sum([]byte(str))) globals.SugarLogger.Debugf("dingapi str:%s sign:%v", str, retVal) } return retVal, "", err }) } // @Title 发送钉钉消息 // @Description 发送钉钉消息 // @Param token header string true "认证token" // @Param title query string true "消息标题" // @Param content query string true "消息内容" // @Param mobile query string true "发送给谁" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SendDDmsgToUser [post] func (c *DDAPIController) SendDDmsgToUser() { c.callSendDDmsgToUser(func(params *tDdapiSendDDmsgToUserParams) (retVal interface{}, errCode string, err error) { if user, _ := dao.GetUserByID(dao.GetDB(), "mobile", params.Mobile); user != nil { err = ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, params.Title, params.Content) } return retVal, "", err }) }