dddd
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
4.5 KiB

package sharemethod
import (
"encoding/json"
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel"
)
//获取企业微信token
//获取企业微信token
func GetWechatToken(types string) (tokenInfo string, redisClient *redishandel.RedisStoreType, err error) {
redisClient = redishandel.RunRedis()
redisClient.SetRedisDb(1)
isTrue := false
companyId := global.GVA_CONFIG.WorkWechatId.CompanyId //企业ID
secretStr := global.GVA_CONFIG.WorkWechatSchool.SecretStr //应用Secret
redisPrefix := global.GVA_CONFIG.RedisPrefix.PreFix + ":WorkWeChatToken_" //redis 前缀
switch types {
case "maillist":
redisPrefix = redisPrefix + "Mail_"
secretStr = global.GVA_CONFIG.WorkWechatMailList.SecretStr
case "health":
redisPrefix = redisPrefix + "Health_"
secretStr = global.GVA_CONFIG.WorkHealthReport.SecretStr
case "school":
redisPrefix = redisPrefix + "School_"
secretStr = global.GVA_CONFIG.WorkWechatSchool.SecretStr
default:
}
isTrue, tokenInfo = redisClient.Get(redisPrefix + global.GVA_CONFIG.RedisPrefix.Alias)
if isTrue == true {
return
} else {
//企业微信获取token地址
getTokenUrl := "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + companyId + "&corpsecret=" + secretStr
token := commonus.CurlGet(getTokenUrl) //访问token地址
var callBackData weChatCallBack
err = json.Unmarshal(token, &callBackData)
if err != nil {
return
}
if callBackData.Errcode != 0 {
return
}
tokenInfo = callBackData.Accesstoken
redisClient.SetRedisTime(7200)
redisClient.Set(redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias, tokenInfo)
}
return
}
//获取发送应用消息地址及相关地址参数
func GetSendMsgTokenUrl(appName string) (sendUrlstr string, isTrue bool, msg string) {
isTrue = false
ton, _, err := GetWechatToken(appName)
if err != nil {
msg = "获取ToKen失败!"
return
}
isTrue = true
msg = "获取ToKen成功!"
sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + ton
return
}
//获取更新模板消息地址及相关地址参数
func GetUpdateMsgTokenUrl(appName string) (sendUrlstr string, isTrue bool, msg string) {
isTrue = false
ton, _, err := GetWechatToken(appName)
if err != nil {
msg = "获取ToKen失败!"
return
}
isTrue = true
msg = "获取ToKen成功!"
sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/message/update_template_card?access_token=" + ton
return
}
//获取审批模板详情
func GetExamineApprove(appName string) (sendUrlstr string, isTrue bool, msg string) {
isTrue = false
ton, _, err := GetWechatToken(appName)
if err != nil {
msg = "获取ToKen失败!"
return
}
isTrue = true
msg = "获取ToKen成功!"
sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/oa/gettemplatedetail?access_token=" + ton
return
}
//获取企业的jsapi_ticket 或 获取应用的jsapi_ticket
//获取审批模板详情
func GetExamineApproveSign(appName string, state int) (sendUrlstr string, isTrue bool, msg string) {
isTrue = false
ton, _, err := GetWechatToken(appName)
if err != nil {
msg = "获取ToKen失败!"
return
}
isTrue = true
msg = "获取ToKen成功!"
state = 1
if state != 1 {
sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + ton
} else {
sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=" + ton + "&type=agent_config"
}
msg, err = GetJsapiTicket(appName, sendUrlstr)
if err != nil {
isTrue = false
}
return
}
func GetJsapiTicket(types, callUrl string) (tokenInfo string, err error) {
redisClient := redishandel.RunRedis()
redisClient.SetRedisDb(1)
isTrue := false
redisPrefix := global.GVA_CONFIG.RedisPrefix.PreFix + ":WorkJsapiTicket_" //redis 前缀
switch types {
case "maillist":
redisPrefix = redisPrefix + "Mail_"
case "health":
redisPrefix = redisPrefix + "Health_"
case "school":
redisPrefix = redisPrefix + "School_"
default:
}
isTrue, tokenInfo = redisClient.Get(redisPrefix + global.GVA_CONFIG.RedisPrefix.Alias)
if isTrue == true {
return
} else {
//企业微信获取token地址
token := commonus.CurlGet(callUrl) //访问token地址
var callBackData weChatCallBack
err = json.Unmarshal(token, &callBackData)
if err != nil {
return
}
if callBackData.Errcode != 0 {
return
}
tokenInfo = callBackData.Accesstoken
redisClient.SetRedisTime(7200)
redisClient.Set(redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias, tokenInfo)
}
return
}