|
@@ -46,7 +46,7 @@ func SendWxMsgWithFrequency(first, activityName, reserveResults, activityTime, a
|
|
|
sendData["activity_address"] = map[string]interface{}{"value": activityAddress, "color": "#173177"}
|
|
|
sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
|
|
|
sendMap["data"] = sendData
|
|
|
- WxSendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -56,6 +56,7 @@ func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.
|
|
|
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)
|
|
@@ -96,46 +97,7 @@ func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.
|
|
|
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)
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-func WxSendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*models.OpenIdList) (err error) {
|
|
|
- for _, v := range items {
|
|
|
- sendMap["touser"] = v.OpenId
|
|
|
- data, err := json.Marshal(sendMap)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("SendTemplateMsgOne Marshal Err:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- utils.FileLog.Info("One SendData:%s", string(data))
|
|
|
- fmt.Println(string(data))
|
|
|
- err = SendTemplateMsg(sendUrl, data)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("send err:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-func SendTemplateMsg(sendUrl string, data []byte) (err error) {
|
|
|
- client := http.Client{}
|
|
|
- resp, err := client.Post(sendUrl, "application/json", bytes.NewBuffer(data))
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- defer resp.Body.Close()
|
|
|
-
|
|
|
- body, _ := ioutil.ReadAll(resp.Body)
|
|
|
- utils.FileLog.Info("SendResult:%s", string(body))
|
|
|
- var templateResponse models.SendTemplateResponse
|
|
|
- err = json.Unmarshal(body, &templateResponse)
|
|
|
- fmt.Println(templateResponse.Errcode)
|
|
|
- fmt.Println(templateResponse.Errmsg)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(articleId), utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD)
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -172,7 +134,8 @@ func SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark string, openId
|
|
|
sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
|
|
|
sendMap["data"] = sendData
|
|
|
fmt.Println(accessToken)
|
|
|
- WxSendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ fmt.Println(sendUrl)
|
|
|
+ //WxSendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -182,9 +145,9 @@ func SendWxMsgWithArticleClassToAdmin(keyWord1, keyWord2, keyWord3, keyWord4 str
|
|
|
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())
|
|
|
}
|
|
|
- fmt.Println("line 21", err, msg)
|
|
|
}()
|
|
|
accessToken, err := models.GetWxAccessTokenByXzs()
|
|
|
if err != nil {
|
|
@@ -214,7 +177,138 @@ func SendWxMsgWithArticleClassToAdmin(keyWord1, keyWord2, keyWord3, keyWord4 str
|
|
|
sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
|
|
|
sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
|
|
|
sendMap["data"] = sendData
|
|
|
- WxSendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(articleId), utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//活动带问提醒
|
|
|
+func SendActivityAskApplyTemplateMsg(applyName, applyTime, askContent, activityName string, activityId int, 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("活动带问提醒发送模版消息失败"+activityName, 2)
|
|
|
+ }
|
|
|
+ if msg != "" {
|
|
|
+ utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ var accessToken string
|
|
|
+ if utils.RunMode == "release" {
|
|
|
+ accessToken, err = models.GetWxAccessTokenByXzs()
|
|
|
+ if err != nil {
|
|
|
+ msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if accessToken == "" {
|
|
|
+ msg = "accessToken is empty"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ accessToken, err = models.GetWxAccessToken()
|
|
|
+ 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 := "有新的客户提问"
|
|
|
+ keyword1 := applyName
|
|
|
+ keyword2 := "-"
|
|
|
+ keyword3 := applyTime
|
|
|
+ keyword4 := askContent
|
|
|
+ remark := activityName
|
|
|
+ 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}
|
|
|
+ sendData["remark"] = map[string]interface{}{"value": remark, "color": fontColor}
|
|
|
+ if utils.RunMode == "release" {
|
|
|
+ sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
|
|
|
+ } else {
|
|
|
+ sendMap["template_id"] = utils.WxMsgTemplateIdApply
|
|
|
+ }
|
|
|
+ sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "activityPages/activityDetail/activityDetail?id=" + strconv.Itoa(activityId)}
|
|
|
+ sendMap["data"] = sendData
|
|
|
+ sendTemplateMsg(sendUrl, sendMap, itemOpenid, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
|
|
|
+ fmt.Println("send end")
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//专项产业调研模板消息推送
|
|
|
+func SendSpecialTemplateMsg(applyName, applyTime, mobile, activityName, resource 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("专项产业调研模板消息推送消息失败"+activityName, 2)
|
|
|
+ }
|
|
|
+ if msg != "" {
|
|
|
+ utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var accessToken string
|
|
|
+ if utils.RunMode == "release" {
|
|
|
+ accessToken, err = models.GetWxAccessTokenByXzs()
|
|
|
+ if err != nil {
|
|
|
+ msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if accessToken == "" {
|
|
|
+ msg = "accessToken is empty"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ accessToken, err = models.GetWxAccessToken()
|
|
|
+ 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{})
|
|
|
+ var first string
|
|
|
+ if resource == "sale" {
|
|
|
+ first = "有客户对专项调研感兴趣"
|
|
|
+ } else {
|
|
|
+ first = "有5家公司预报名专项调研"
|
|
|
+ }
|
|
|
+
|
|
|
+ keyword1 := applyName
|
|
|
+ keyword2 := mobile
|
|
|
+ keyword3 := applyTime
|
|
|
+ keyword4 := activityName
|
|
|
+
|
|
|
+ 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}
|
|
|
+ if utils.RunMode == "release" {
|
|
|
+ sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
|
|
|
+ } else {
|
|
|
+ sendMap["template_id"] = utils.WxMsgTemplateIdApply
|
|
|
+ }
|
|
|
+ sendMap["data"] = sendData
|
|
|
+ sendTemplateMsg(sendUrl, sendMap, itemOpenid, mobile, utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -226,3 +320,65 @@ func SendWxMsgWithArticleClassToAdmin(keyWord1, keyWord2, keyWord3, keyWord4 str
|
|
|
//弘则研究:
|
|
|
//MwZ5wxfd0O1Yt0Pkf6OkfWP4USQzZbiEo5SkZ26735s 活动预约通知
|
|
|
//dYg6iHooRq74PyCXmw_Ns7qdJZmbtLoKS2p2FKeaXl0 项目状态变更通知
|
|
|
+
|
|
|
+func WxSendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*models.OpenIdList, resource string, sendType int) (err error) {
|
|
|
+ for _, v := range items {
|
|
|
+ sendMap["touser"] = v.OpenId
|
|
|
+ data, err := json.Marshal(sendMap)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("SendTemplateMsgOne Marshal Err:", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ utils.FileLog.Info("One SendData:%s", string(data))
|
|
|
+ fmt.Println(string(data))
|
|
|
+ err = SendTemplateMsg(sendUrl, data, resource, sendType, v)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("send err:", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func SendTemplateMsg(sendUrl string, data []byte, resource string, sendType int, dataItem *models.OpenIdList) (err error) {
|
|
|
+ client := http.Client{}
|
|
|
+ resp, err := client.Post(sendUrl, "application/json", bytes.NewBuffer(data))
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer resp.Body.Close()
|
|
|
+
|
|
|
+ body, _ := ioutil.ReadAll(resp.Body)
|
|
|
+ utils.FileLog.Info("SendResult:%s", string(body))
|
|
|
+ var templateResponse models.SendTemplateResponse
|
|
|
+ err = json.Unmarshal(body, &templateResponse)
|
|
|
+ fmt.Println(templateResponse.Errcode)
|
|
|
+ fmt.Println(templateResponse.Errmsg)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //新增模板消息推送记录
|
|
|
+ {
|
|
|
+ tr := new(models.UserTemplateRecord)
|
|
|
+ tr.UserId = dataItem.UserId
|
|
|
+ tr.OpenId = dataItem.OpenId
|
|
|
+ tr.Resource = resource
|
|
|
+ tr.SendData = string(data)
|
|
|
+ tr.Result = string(body)
|
|
|
+ tr.CreateDate = time.Now().Format(utils.FormatDate)
|
|
|
+ tr.CreateTime = time.Now().Format(utils.FormatDateTime)
|
|
|
+ if templateResponse.Errcode == 0 {
|
|
|
+ tr.SendStatus = 1
|
|
|
+ } else {
|
|
|
+ tr.SendStatus = 0
|
|
|
+ }
|
|
|
+ tr.SendType = sendType
|
|
|
+ go func() {
|
|
|
+ err = models.AddUserTemplateRecord(tr)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("AddUserTemplateRecord Err:%s", err.Error()))
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|