瀏覽代碼

Merge branch 'hotfix/bug8066_road_send_msg' of hongze/hongze_mobile_admin into master

xyxie 2 周之前
父節點
當前提交
47783153a6
共有 4 個文件被更改,包括 103 次插入26 次删除
  1. 1 1
      controllers/wechat.go
  2. 78 22
      services/wechat.go
  3. 15 0
      services/wechat_send_msg.go
  4. 9 3
      utils/config.go

+ 1 - 1
controllers/wechat.go

@@ -316,7 +316,7 @@ func (c *WeChatCommon) AdminWeChatLogin() {
 		c.FailWithMessage("获取用户信息失败", "获取openid失败,openid:"+item.Openid)
 		return
 	}
-	accessToken, err := services.WxGetRedisAccessToken(utils.AdminWxAppId, utils.AdminWxAppSecret)
+	accessToken, err := services.WxGetRedisAccessTokenV2(utils.AdminWxAppId, utils.AdminWxAppSecret)
 	if err != nil {
 		c.FailWithMessage("获取用户信息失败", "获取access_token失败,err:"+err.Error())
 	}

+ 78 - 22
services/wechat.go

@@ -4,13 +4,17 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
 	"hongze/hongze_mobile_admin/models/custom"
 	"hongze/hongze_mobile_admin/models/tables/wx_token"
+	"hongze/hongze_mobile_admin/services/alarm_msg"
 	"hongze/hongze_mobile_admin/utils"
+	"io/ioutil"
+	http2 "net/http"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/http"
 )
 
 type WxAccessToken struct {
@@ -126,29 +130,81 @@ func WxGetAccessToken() (accessToken string, err error) {
 	return
 }
 
-// WxGetRedisAccessToken 从redis中获取token
-func WxGetRedisAccessToken(wxAppId, wxAppSecret string) (accessToken string, err error) {
-	//从redis中获取token校验验证码
-	accessToken, err = utils.Rc.RedisString(utils.HZ_ADMIN_WX_ACCESS_TOEKN+wxAppId)
-	if err != nil {
-		err = nil
-		token, tErr := WxGetToken(wxAppId, wxAppSecret)
-		if tErr != nil {
-			return "", tErr
-		}
-		if token.Errmsg != "" {
-			err = errors.New("获取access_token 失败 errcode:" + token.Errmsg + " ;errmsg:" + token.Errmsg)
-			return "", err
-		}
-		redisTimeExpire := time.Duration(token.ExpiresIn - 600) * time.Second
-		err = utils.Rc.Put(utils.HZ_ADMIN_WX_ACCESS_TOEKN+wxAppId, token.AccessToken, redisTimeExpire)
+// // WxGetRedisAccessToken 从redis中获取token
+// func WxGetRedisAccessToken(wxAppId, wxAppSecret string) (accessToken string, err error) {
+// 	//从redis中获取token校验验证码
+// 	accessToken, err = utils.Rc.RedisString(utils.HZ_ADMIN_WX_ACCESS_TOEKN+wxAppId)
+// 	if err != nil {
+// 		err = nil
+// 		token, tErr := WxGetToken(wxAppId, wxAppSecret)
+// 		if tErr != nil {
+// 			return "", tErr
+// 		}
+// 		if token.Errmsg != "" {
+// 			err = errors.New("获取access_token 失败 errcode:" + token.Errmsg + " ;errmsg:" + token.Errmsg)
+// 			return "", err
+// 		}
+// 		redisTimeExpire := time.Duration(token.ExpiresIn - 600) * time.Second
+// 		err = utils.Rc.Put(utils.HZ_ADMIN_WX_ACCESS_TOEKN+wxAppId, token.AccessToken, redisTimeExpire)
+// 		if err != nil {
+// 			err = errors.New("保存access_token失败 " + err.Error())
+// 			return accessToken, err
+// 		}
+// 		accessToken = token.AccessToken
+// 		return
+// 	}
+// 	return
+// }
+
+// WxGetRedisAccessTokenV2 //从公共入口调用access_token
+func WxGetRedisAccessTokenV2(wxAppId, wxAppSecret string) (accessToken string, err error) {
+	defer func() {
 		if err != nil {
-			err = errors.New("保存access_token失败 " + err.Error())
-			return accessToken, err
+			go alarm_msg.SendAlarmMsg("WxGetRedisAccessTokenV2 Err:"+err.Error(), 1)
 		}
-		accessToken = token.AccessToken
-		return
+	}()
+	postData, err := json.Marshal(map[string]string{
+		"WxAppId": wxAppId,
+		"WxAppSecret": wxAppSecret,
+	})
+	if err != nil {
+		err = fmt.Errorf("WxGetRedisAccessTokenV2 json.Marshal Err:%s", err.Error())
+		return 
+	}
+	body := ioutil.NopCloser(strings.NewReader(string(postData)))
+	client := &http2.Client{}
+	requestUrl := utils.HongzePublicApiUrl + "/wechat/access_token"
+	req, err := http2.NewRequest("POST", requestUrl, body)
+	if err != nil {
+		err = fmt.Errorf("WxGetRedisAccessTokenV2 http.NewRequest Err:%s", err.Error())
+		return 
+	}
+	contentType := "application/json;charset=utf-8"
+	req.Header.Set("Content-Type", contentType)
+	req.Header.Set("Authorization", utils.SendTemplateMsgAuthorization)
+	resp, err := client.Do(req)
+	if err != nil {
+		err = fmt.Errorf("WxGetRedisAccessTokenV2 http client.Do Err:%s", err.Error())
+		return 
+	}
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		err = fmt.Errorf("WxGetRedisAccessTokenV2 ioutil.ReadAll Err:%s", err.Error())
+		return 
+	}
+	result := new(GetAccessTokenResp)
+	err = json.Unmarshal(b, &result)
+	if err != nil {
+		err = fmt.Errorf("WxGetRedisAccessTokenV2 json.Unmarshal Err:%s", err.Error())
+		return 
+	}
+	if result.Ret != 200 {
+		err = errors.New(string(b))
+		err = fmt.Errorf("WxGetRedisAccessTokenV2 result.Ret != 200 Err:%s", err.Error())
+		return 
 	}
+	accessToken = result.Data.AccessToken
 	return
 }
 
@@ -265,7 +321,7 @@ func WxUsersGet() (openIdStr string) {
 }
 
 func WxAdminOpenIdGet() (openIdStr string) {
-	accessToken, err := WxGetRedisAccessToken(utils.AdminWxAppId, utils.AdminWxAppSecret)
+	accessToken, err := WxGetRedisAccessTokenV2(utils.AdminWxAppId, utils.AdminWxAppSecret)
 	if err != nil {
 		utils.FileLog.Info("GetWxAccessToken Err:%s", err.Error())
 		return

+ 15 - 0
services/wechat_send_msg.go

@@ -598,3 +598,18 @@ func SendWxMsgWithRaiWangYang(keyword1, keyword2, keyword3, keyword4 string, ope
 	err = SendTemplateMsg(sendInfo)
 	return
 }
+
+type GetAccessTokenResp struct {
+		Ret         int
+		Msg         string
+		ErrMsg      string
+		ErrCode     string
+		Data        GetAccessTokenRespData
+		Success     bool `description:"true 执行成功,false 执行失败"`
+		IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+		IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
+}
+
+type GetAccessTokenRespData struct {
+	AccessToken string 
+}

+ 9 - 3
utils/config.go

@@ -49,6 +49,7 @@ var (
 	WxMsgTemplateIdWithYbCommunityQuestion  string // 研报小程序->问答社区回复通知
 	SendWxTemplateMsgUrl                    string //模板消息推送
 	SendWxCategoryTemplateMsgUrl string
+	HongzePublicApiUrl string // 弘则公共api
 
 	//查研观向
 	WxMsgTemplateIdCompanyApprovalMessageRai string //权益销售签约成功通知查研观向小助手模版消息
@@ -218,11 +219,14 @@ func wxConfig() {
 		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
 		SendWxCategoryTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_category_template_msg"
 
+
 		// 类目模版
 		WxCategoryMsgTemplateIdApplyXzs = "HKD03oZfSv8LJgeoHz0pynai3G2Ls4h8zZ6BfOpZmIA"
 		WxCategoryMsgTemplateIdActivitySign = "11rITVC5Gl8qwetxl92NqY887Uk14kg3nPtEA_i_zLo"
 		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "t1CcxcOkoZkWZrDRs6zYUlceBGYMV3mhkBYUa8a6Mx0" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 		WxMsgCategoryTemplateIdActivityPublishApply = "IBMqiE61lVgUfFM4rsH0XCH57R_G3PbWvRbnzg9JHPI"
+
+		HongzePublicApiUrl = "http://127.0.0.1:8086/v1"
 	} else {
 		WxAppId = "wx9b5d7291e581233a"
 		WxAppSecret = "f4d52e34021eee262dce9682b31f8861"
@@ -249,9 +253,9 @@ func wxConfig() {
 			WxMsgTemplateIdActivityChangeApply = "CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM" //查研观向活动变更通知-模板ID
 		}
 
-		//内部员工公众号(弘则部门
-		AdminWxAppId = "wx1392111da5426e9e"
-		AdminWxAppSecret = "30eceb7cf29bf2f046031155ab55d7b4"
+		//测试内部员工公众号(弘则科技
+		AdminWxAppId = "wxe0d0a4d892da28a3"
+		AdminWxAppSecret = "b88ac96aef1852fa0b8902c321ed4bf8"
 
 		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
 		SendWxCategoryTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_category_template_msg"
@@ -262,6 +266,8 @@ func wxConfig() {
 		WxCategoryMsgTemplateIdActivitySign = "aczgUYZASO97UJiCD_nDmD1eNWZAWudzw3JYcvjJ2x4"
 		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "wU4x_c5XruwuA44VZelyklRNOfq4XrU9ILckTtDs6hg" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 		WxMsgCategoryTemplateIdActivityPublishApply = "wLeV7tVK4ZJBoAvsmfXkHveVW8yefGAkwnVKQWRi8uQ"
+
+		HongzePublicApiUrl = "http://127.0.0.1:8086/v1"
 	}
 
 }