绩效考核
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.
 
 
 

176 lines
5.3 KiB

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
}