Browse Source

文章带问改为公共模板消息测试

xingzai 2 năm trước cách đây
mục cha
commit
23bd277d50
4 tập tin đã thay đổi với 126 bổ sung28 xóa
  1. 57 0
      services/wechat_send_msg.go
  2. 52 27
      services/wx_template_msg.go
  3. 7 1
      utils/config.go
  4. 10 0
      utils/constants.go

+ 57 - 0
services/wechat_send_msg.go

@@ -3,11 +3,13 @@ package services
 import (
 	"bytes"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
 	"io/ioutil"
 	"net/http"
+	"strings"
 	"time"
 )
 
@@ -225,3 +227,58 @@ type SendTemplateResponse struct {
 	Errmsg  string `json:"errmsg"`
 	MsgID   int    `json:"msgid"`
 }
+
+type SendWxTemplate struct {
+	WxAppId        string   `description:"公众号appId"`
+	First          string   `description:"模板消息first字段"`
+	Keyword1       string   `description:"模板消息keyword1字段"`
+	Keyword2       string   `description:"模板消息keyword2字段"`
+	Keyword3       string   `description:"模板消息keyword3字段"`
+	Keyword4       string   `description:"模板消息keyword4字段"`
+	Remark         string   `description:"模板消息remark字段"`
+	TemplateId     string   `description:"模板id"`
+	RedirectUrl    string   `description:"跳转地址"`
+	RedirectTarget int      `description:"小程序跳转目标:1:弘则研报小程序,2:随手办公小程序"`
+	Resource       string   `description:"资源唯一标识"`
+	SendType       int      `description:"发送的消息类型:1:报告,2:指标更新提醒,3:审批通知,4:销售领取客户通知,5:活动取消通知,6活动更改时间通知,7:关注的作者发布报告通知,8:发送日报(周报、双周报、月报)模板消息,9:活动预约/报名时间通知"`
+	OpenIdArr      []string `description:"消息接收者openid"`
+}
+
+//推送模板消息
+func PublicSendTemplateMsg(sendInfo *SendWxTemplate) (err error) {
+	postData, err := json.Marshal(sendInfo)
+	if err != nil {
+		utils.SendAlarmMsg("SendTemplateMsg json.Marshal Err:"+err.Error(), 1)
+		return err
+	}
+	body := ioutil.NopCloser(strings.NewReader(string(postData)))
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", utils.SendWxTemplateMsgUrl, body)
+	if err != nil {
+		utils.SendAlarmMsg("SendTemplateMsg http.NewRequest Err:"+err.Error(), 1)
+		return err
+	}
+	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 {
+		fmt.Println("http client.Do Err:" + err.Error())
+		return err
+	}
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return err
+	}
+	result := new(models.BaseResponse)
+	err = json.Unmarshal(b, &result)
+	if err != nil {
+		return err
+	}
+	if result.Ret != 200 {
+		err = errors.New(string(b))
+		return err
+	}
+	return
+}

+ 52 - 27
services/wx_template_msg.go

@@ -61,43 +61,68 @@ func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.
 		}
 		fmt.Println("line 21", err, msg)
 	}()
-	utils.FileLog.Info("%s", "services SendMsg")
-	//accessToken, err := models.GetWxAccessToken()
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
-	}
+	//utils.FileLog.Info("%s", "services SendMsg")
+	////accessToken, err := models.GetWxAccessToken()
+	//accessToken, err := models.GetWxAccessTokenByXzs()
+	//if err != nil {
+	//	msg = "GetWxAccessToken Err:" + err.Error()
+	//	return
+	//}
+	//if accessToken == "" {
+	//	msg = "accessToken is empty"
+	//	return
+	//}
 	var first string
 	var keyword1 string
+	var keyword2 string
 	var keyword3 string
 	var keyword4 string
 	var remark string
 	first = "研选报告有新的提问,请及时处理"
 	keyword1 = name
 	keyword3 = askTime
+	keyword2 = ""
 	keyword4 = askMsg
 	remark = title
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	//templateId := utils.WxMsgTemplateIdAskMsg
-	templateId := utils.WxMsgTemplateIdAskMsgXzs
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
-	sendMap["template_id"] = templateId
-	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "pageMy/reportDetail/reportDetail?id=" + strconv.Itoa(articleId)}
-	//sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "path": "article/detail?ArticleId=1000001"}
-	sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	sendData["keyword2"] = map[string]interface{}{"value": "", "color": "#173177"}
-	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
-	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
-	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
-	sendMap["data"] = sendData
-	WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(articleId), utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD)
+	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
+	////templateId := utils.WxMsgTemplateIdAskMsg
+	//templateId := utils.WxMsgTemplateIdAskMsgXzs
+	//sendMap := make(map[string]interface{})
+	//sendData := make(map[string]interface{})
+	//sendMap["template_id"] = templateId
+	//sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "pageMy/reportDetail/reportDetail?id=" + strconv.Itoa(articleId)}
+	////sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "path": "article/detail?ArticleId=1000001"}
+	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
+	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
+	//sendData["keyword2"] = map[string]interface{}{"value": "", "color": "#173177"}
+	//sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
+	//sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
+	//sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
+	//sendMap["data"] = sendData
+	//WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(articleId), utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD)
+
+	openIdArr := make([]string, 0)
+	for i, v := range openIdList {
+		openIdArr[i] = v.OpenId
+	}
+	redirectUrl := utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleId)
+	sendInfo := new(SendWxTemplate)
+	sendInfo.First = first
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.Remark = remark
+	sendInfo.TemplateId = utils.WxMsgTemplateIdAskMsgXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = strconv.Itoa(articleId)
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
 	return
 }
 

+ 7 - 1
utils/config.go

@@ -82,6 +82,11 @@ var (
 	ShangHaiCrmApiLink        string //上海CRM用户同步api调用地址
 )
 
+//模板消息推送
+var (
+	SendWxTemplateMsgUrl string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -170,7 +175,7 @@ func init() {
 		ArticleTaskClassMobile = "15557270714,18767183922,15216736473,15000123056,18701809782,17706316791,18652179672"
 
 		ShangHaiCrmApiLink = "https://crm.hzinsights.com/"
-
+		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
 	} else {
 		WxAppId = "wxcc32b61f96720d2f"
 		WxAppSecret = "06894933fafb24dafead7eaae09c08e0"
@@ -204,6 +209,7 @@ func init() {
 		ArticleTaskClassMobile = "15557270714,18767183922,17706316791"
 
 		ShangHaiCrmApiLink = "http://106.15.192.100:8100/"
+		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
 	}
 
 	//查研观向小助手

+ 10 - 0
utils/constants.go

@@ -132,3 +132,13 @@ const (
 	COMPANY_PRODUCT_RAI_ID    = 2
 	COMPANY_PRODUCT_RAI_NAME  = "权益"
 )
+
+//微信模板消息推送公共接口的秘钥
+const (
+	SendTemplateMsgAuthorization = "dc855fce962a639faa779cbdd4cd332f"
+)
+
+//模板消息地址路由
+const (
+	WX_MSG_PATH_ARTICLE_DETAIL = "pageMy/reportDetail/reportDetail?id="
+)