|
|
|
|
package sharemethod
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"strconv"
|
|
|
|
|
|
|
|
|
|
"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"
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("2======>%v\n", state)
|
|
|
|
|
msg, err = GetJsapiTicket(appName, sendUrlstr, state)
|
|
|
|
|
if err != nil {
|
|
|
|
|
isTrue = false
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetJsapiTicket(types, callUrl string, state int) (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_" + strconv.Itoa(state) + "_"
|
|
|
|
|
case "health":
|
|
|
|
|
redisPrefix = redisPrefix + "Health_" + strconv.Itoa(state) + "_"
|
|
|
|
|
case "school":
|
|
|
|
|
redisPrefix = redisPrefix + "School_" + strconv.Itoa(state) + "_"
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("3======>%v\n", redisPrefix)
|
|
|
|
|
isTrue, tokenInfo = redisClient.Get(redisPrefix + global.GVA_CONFIG.RedisPrefix.Alias)
|
|
|
|
|
// fmt.Printf("js_token--110--->%v--->%v--->%v\n", isTrue, tokenInfo, redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias)
|
|
|
|
|
if isTrue == true {
|
|
|
|
|
return
|
|
|
|
|
} else {
|
|
|
|
|
//企业微信获取token地址
|
|
|
|
|
|
|
|
|
|
token := commonus.CurlGet(callUrl) //访问token地址
|
|
|
|
|
// fmt.Printf("js_token----->%v\n", string(token))
|
|
|
|
|
var callBackData weChatCallBack
|
|
|
|
|
err = json.Unmarshal(token, &callBackData)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if callBackData.Errcode != 0 {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
tokenInfo = callBackData.Ticket
|
|
|
|
|
// fmt.Printf("js_token--2--->%v\n", callBackData)
|
|
|
|
|
redisClient.SetRedisTime(7200)
|
|
|
|
|
redisClient.Set(redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias, tokenInfo)
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//查询自建应用审批单当前状态
|
|
|
|
|
func QueryStateOpenApprovalAata(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/corp/getopenapprovaldata?access_token=" + ton
|
|
|
|
|
return
|
|
|
|
|
}
|