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 }