企业微信回调

This commit is contained in:
邹宗楠
2022-06-21 10:41:33 +08:00
parent 1047c3c724
commit aeb7148344
4 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
package enterprise
import (
"git.rosy.net.cn/baseapi/platformapi/enterprise_wechat"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/model/legacymodel"
"git.rosy.net.cn/jx-callback/globals"
"strconv"
)
var EnterpriseSuite *enterprise_wechat.SuiteTicketInfo
// 初始化加载全局变量
func init() {
config := make([]*legacymodel.Config, 0)
sql := `SELECT * FROM config WHERE thirdparty = ? `
if err := dao.GetRows(dao.GetDB(), config, sql, []interface{}{"enterprise"}); err != nil {
globals.SugarLogger.Debugf("enterprice config err = ", err)
}
if len(config) >= model.YES {
EnterpriseSuite.SuiteId = config[0].RefreshToken
EnterpriseSuite.SuiteTicket = config[0].Token
EnterpriseSuite.InfoType = ""
time, _ := strconv.ParseInt(config[0].Date, 10, 64)
EnterpriseSuite.TimeStamp = time
}
}
func UpdateEnterpriseSuite(data *enterprise_wechat.SuiteTicketInfo) error {
if data.SuiteTicket != "" && data.TimeStamp > 0 {
EnterpriseSuite = data
}
// 修改数据库
db := dao.GetDB()
config := &legacymodel.Config{
Thirdparty: "enterprise",
Token: data.SuiteTicket,
Date: string(data.TimeStamp),
LastOperator: model.AdminName,
RefreshToken: data.SuiteId,
}
return dao.CreateOrUpdate(db, config)
}

View File

@@ -0,0 +1,31 @@
package controllers
import (
"git.rosy.net.cn/jx-callback/business/enterprise"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"github.com/astaxie/beego/server/web"
)
type EnterpriseController struct {
web.Controller
}
// EnterpriseCallback 在发生授权、通讯录变更、ticket变化等事件时企业微信服务器会向应用的“指令回调URL”推送相应的事件消息。
// 消息结构体将使用创建应用时的EncodingAESKey进行加密特别注意, 在第三方回调事件中使用加解密算法receiveid的内容为suiteid
// ,请参考接收消息解析数据包。
func (e *EnterpriseController) EnterpriseCallback() {
globals.SugarLogger.Debug("======================")
enterpriseData, err := api.EnterpriseChatHeadApi.GetEnterpriseMsg(e.Ctx.Request)
if err != nil {
globals.SugarLogger.Debug("======================err1", err)
e.Abort("404")
}
if err := enterprise.UpdateEnterpriseSuite(enterpriseData); err != nil {
globals.SugarLogger.Debug("======================err2", err)
e.Abort("404")
}
e.Data["xml"] = "success"
e.ServeXML()
}

View File

@@ -40,6 +40,7 @@ import (
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/alipay" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/alipay"
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding"
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/douyin" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/douyin"
_ "git.rosy.net.cn/jx-callback/business/enterprise"
_ "git.rosy.net.cn/jx-callback/business/model/dao" _ "git.rosy.net.cn/jx-callback/business/model/dao"
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai"
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd"

View File

@@ -182,6 +182,7 @@ func init() {
web.AutoRouter(&controllers.KnowUploadController{}) web.AutoRouter(&controllers.KnowUploadController{})
web.AutoRouter(&controllers.AliApiController{}) web.AutoRouter(&controllers.AliApiController{})
web.AutoRouter(&controllers.TicTocController{}) web.AutoRouter(&controllers.TicTocController{})
web.AutoRouter(&controllers.EnterpriseController{})
// 如下都是用于检测存活的空接口 // 如下都是用于检测存活的空接口
web.Any("/", func(ctx *beecontext.Context) { web.Any("/", func(ctx *beecontext.Context) {