Browse Source

no message

xingzai 8 months ago
parent
commit
773f23eca0
2 changed files with 90 additions and 142 deletions
  1. 31 57
      services/wechat_send_msg.go
  2. 59 85
      services/wx_template_msg.go

+ 31 - 57
services/wechat_send_msg.go

@@ -16,89 +16,63 @@ import (
 
 // 访谈申请
 func SendInterviewApplyTemplateMsg(realName, companyName, mobile, articleTitle string, itemOpenid *models.OpenIdList) (err error) {
-	var msg string
 	defer func() {
 		if err != nil {
-			go utils.SendEmail("发送模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
 			go utils.SendAlarmMsg(fmt.Sprint("访谈申请模板消息推送消息失败,手机号", mobile, "公司:", companyName, "手机号:", mobile), 2)
 		}
-		if msg != "" {
-			utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
-		}
 	}()
 
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
-	}
-
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
-
 	keyword1 := realName + "【" + companyName + "】"
 	first := "您有一条新的访谈申请,请及时处理。"
 	keyword2 := mobile
 	keyword3 := time.Now().Format(utils.FormatDateTime)
 	keyword4 := articleTitle
-	fontColor := "#D9001B"
-	sendData["first"] = map[string]interface{}{"value": first, "color": fontColor}
-	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": fontColor}
-	sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": fontColor}
-	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": fontColor}
-	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": fontColor}
+	openIdArr := make([]string, 0)
+	openIdArr = append(openIdArr, itemOpenid.OpenId)
 
-	sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
-	sendMap["data"] = sendData
-	sendTemplateMsg(sendUrl, sendMap, itemOpenid, mobile, utils.TEMPLATE_MSG_CYGX_APPLY)
-	fmt.Println("send end")
+	redirectUrl := ""
+	sendInfo := new(SendWxTemplate)
+	sendInfo.First = first
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.TemplateId = utils.WxMsgTemplateIdApplyXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	//sendInfo.Resource =
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
 	return
 }
 
 // 访谈申请取消
 func SendInterviewApplyCancelTemplateMsg(realName, companyName, mobile, articleTitle string, itemOpenid *models.OpenIdList) (err error) {
-	var msg string
 	defer func() {
 		if err != nil {
-			go utils.SendEmail("发送模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
 			go utils.SendAlarmMsg(fmt.Sprint("访谈申请取消模板消息推送消息失败,手机号", mobile, "公司:", companyName, "手机号:", mobile), 2)
 		}
-		if msg != "" {
-			utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
-		}
 	}()
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
-	}
-
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
 
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
-
-	first := realName + "-" + mobile + "【" + companyName + "】的访谈申请已取消,请留意。"
 	keyword1 := articleTitle
 	keyword2 := time.Now().Format(utils.FormatDateTime)
-	fontColor := "#D9001B"
-	sendData["first"] = map[string]interface{}{"value": first, "color": fontColor}
-	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": fontColor}
-	sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": fontColor}
 
-	sendMap["template_id"] = utils.WxMsgTemplateIdApplyCancelXzs
-	sendMap["data"] = sendData
-	sendTemplateMsg(sendUrl, sendMap, itemOpenid, mobile, utils.TEMPLATE_MSG_CYGX_APPLY)
+	openIdArr := make([]string, 0)
+	openIdArr = append(openIdArr, itemOpenid.OpenId)
+	redirectUrl := ""
+	sendInfo := new(SendWxTemplate)
+
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+
+	sendInfo.TemplateId = utils.WxMsgTemplateIdApplyCancelXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	//sendInfo.Resource =
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
 	fmt.Println("send end")
 	return
 }

+ 59 - 85
services/wx_template_msg.go

@@ -15,28 +15,15 @@ import (
 
 // 发送报告提问消息提醒
 func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.OpenIdList, articleId int) (err error) {
-	var msg string
 	defer func() {
 		if err != nil {
-			go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
 			go utils.SendAlarmMsg(fmt.Sprint("发送报告提问消息提醒模版消息失败,用户名", name, "文章ID:", articleId), 2)
-			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
 		}
-		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
-	}
+
 	var first string
 	var keyword1 string
+	var keyword2 string
 	var keyword3 string
 	var keyword4 string
 	var remark string
@@ -45,22 +32,27 @@ func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.
 	keyword3 = askTime
 	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": "pages/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 _, v := range openIdList {
+		openIdArr = append(openIdArr, 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)
+
 	return
 }
 
@@ -327,76 +319,58 @@ func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.
 }
 
 // 发送用户操作活动消息提醒
-func SendWxMsgWithActivityUserRemind(keyWord1, keyWord2 string, openIdList []*models.OpenIdList, activityId int) (err error) {
-	var msg string
+func SendWxMsgWithActivityUserRemind(keyword1, keyword2 string, openIdList []*models.OpenIdList, activityId int) (err error) {
 	defer func() {
 		if err != nil {
-			go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
 			go utils.SendAlarmMsg(fmt.Sprint("发送用户操作活动消息提醒,文章ID:", activityId), 2)
-			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
 		}
 	}()
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
 	}
-	//var first string
-	//first = keyWord1
-	//keyword1 := keyWord2
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	templateId := utils.WxMsgTemplateIdArticleUserRemind
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
-	sendMap["template_id"] = templateId
-	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "activityPages/activityDetail/activityDetail?id=" + strconv.Itoa(activityId)}
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	sendData["keyword1"] = map[string]interface{}{"value": keyWord1, "color": "#173177"}
-	sendData["keyword2"] = map[string]interface{}{"value": keyWord2, "color": "#173177"}
-	sendMap["data"] = sendData
-	WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD)
+	redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
+	sendInfo := new(SendWxTemplate)
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = strconv.Itoa(activityId)
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
 	return
 }
 
 // 发送用户阅读报告消息提醒
-func SendWxMsgWithArticleUserRemind(keyWord1, keyWord2 string, openIdList []*models.OpenIdList, articleId int) (err error) {
-	var msg string
+func SendWxMsgWithArticleUserRemind(keyword1, keyword2 string, openIdList []*models.OpenIdList, articleId int) (err error) {
+	if len(openIdList) == 0 {
+		return
+	}
 	defer func() {
 		if err != nil {
-			go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
 			go utils.SendAlarmMsg(fmt.Sprint("发送报告提问消息提醒模版消息失败,文章ID:", articleId), 2)
-			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
 		}
 	}()
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
 	}
-	//var first string
-	//first = keyWord1
-	//keyword1 := keyWord2
-	remark := "点击查看报告详情"
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	templateId := utils.WxMsgTemplateIdArticleUserRemind
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
-	sendMap["template_id"] = templateId
-	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleId)}
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	sendData["keyword1"] = map[string]interface{}{"value": keyWord1, "color": "#173177"}
-	sendData["keyword2"] = map[string]interface{}{"value": keyWord2, "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)
+	redirectUrl := utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleId)
+	sendInfo := new(SendWxTemplate)
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+
+	sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
+	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)
 	return
 }