87 lines
2.6 KiB
Go
87 lines
2.6 KiB
Go
package controllers
|
||
|
||
import (
|
||
"crypto/sha1"
|
||
"fmt"
|
||
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||
"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/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)))
|
||
}
|
||
return retVal, "", err
|
||
})
|
||
}
|
||
|
||
// @Title 发送钉钉消息
|
||
// @Description 发送钉钉消息
|
||
// @Param token header string true "认证token"
|
||
// @Param title query string true "消息标题"
|
||
// @Param content query string true "消息内容"
|
||
// @Param mobiles 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) {
|
||
var (
|
||
mobiles []string
|
||
mobileMap = make(map[string]string)
|
||
)
|
||
jxutils.Strings2Objs(params.Mobiles, &mobiles)
|
||
for _, v := range mobiles {
|
||
mobileMap[v] = v
|
||
}
|
||
for _, mobile := range mobileMap {
|
||
if user, _ := dao.GetUserByID(dao.GetDB(), "mobile", mobile); user != nil {
|
||
err = ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, params.Title, params.Content)
|
||
}
|
||
}
|
||
return retVal, "", err
|
||
})
|
||
}
|