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
157 lines
4.5 KiB
|
4 years ago
|
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
|
||
|
|
}
|