|
@@ -1,178 +1,195 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
-
|
|
|
+ "bytes"
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "hongze/hongze_cygx/models"
|
|
|
+ "hongze/hongze_cygx/utils"
|
|
|
+ "io/ioutil"
|
|
|
+ "net/http"
|
|
|
+ "time"
|
|
|
)
|
|
|
-//
|
|
|
-//func SendWxTemplateMsg(reportId int) (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)
|
|
|
-// utils.FileLog.Info("发送模版消息失败,Err:%s,%s", err.Error(), msg)
|
|
|
-// }
|
|
|
-// if msg != "" {
|
|
|
-// utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
-// }
|
|
|
-// }()
|
|
|
-// utils.FileLog.Info("%s", "services SendMsg")
|
|
|
-//
|
|
|
-// report, err := models.GetReportById(reportId)
|
|
|
-// if err != nil {
|
|
|
-// msg = "GetReportInfo Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// if report == nil {
|
|
|
-// utils.FileLog.Info("报告信息不存在")
|
|
|
-// return
|
|
|
-// }
|
|
|
-// accessToken, err := models.GetWxAccessToken()
|
|
|
-// if err != nil {
|
|
|
-// msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// if accessToken == "" {
|
|
|
-// msg = "accessToken is empty"
|
|
|
-// return
|
|
|
-// }
|
|
|
-// openIdList, err := models.GetOpenIdList()
|
|
|
-// if err != nil {
|
|
|
-// msg = "get openIdList err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// fmt.Println("openIdListCount:", len(openIdList))
|
|
|
-//
|
|
|
-// sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
|
|
|
-// fmt.Println("send start")
|
|
|
-// utils.FileLog.Info("send start")
|
|
|
-// //if report.MsgIsSend == 0 {
|
|
|
-// sendMap := make(map[string]interface{})
|
|
|
-// sendData := make(map[string]interface{})
|
|
|
-//
|
|
|
-// redirectUrl := utils.TemplateRedirectUrl + strconv.Itoa(reportId)
|
|
|
-// keyword1 := "弘则日度点评"
|
|
|
-// first := "Hi,最新一期日度点评已上线,欢迎查看"
|
|
|
-// keyword2 := report.Title
|
|
|
-// //keyword3 := report.PublishTime.Format(utils.FormatDateTime)
|
|
|
-// keyword3 := report.PublishTime
|
|
|
-// keyword4 := report.Abstract
|
|
|
-//
|
|
|
-// 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["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
|
|
|
-// sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
|
|
|
-//
|
|
|
-// sendMap["template_id"] = utils.TemplateIdByProduct
|
|
|
-// sendMap["url"] = redirectUrl
|
|
|
-// sendMap["data"] = sendData
|
|
|
-// sendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
-// //}
|
|
|
-// fmt.Println("send end")
|
|
|
-// utils.FileLog.Info("send end")
|
|
|
-// return
|
|
|
-//}
|
|
|
-//
|
|
|
-//func sendTemplateMsg(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())
|
|
|
-// utils.FileLog.Info("SendTemplateMsgOne Marshal Err:%s", err.Error())
|
|
|
-// return err
|
|
|
-// }
|
|
|
-// err = toSendTemplateMsg(sendUrl, data)
|
|
|
-// if err != nil {
|
|
|
-// fmt.Println("send err:", err.Error())
|
|
|
-// utils.FileLog.Info("ToSendTemplateMsg Err:%s", err.Error())
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return
|
|
|
-//}
|
|
|
-//
|
|
|
-//func toSendTemplateMsg(sendUrl string, data []byte) (err error) {
|
|
|
-// utils.FileLog.Info("Send:%s", string(data))
|
|
|
-// 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 SendTemplateResponse
|
|
|
-// err = json.Unmarshal(body, &templateResponse)
|
|
|
-// if err != nil {
|
|
|
-// utils.FileLog.Info("SendResult Unmarshal Err:%s", err.Error())
|
|
|
-// return err
|
|
|
-// }
|
|
|
-// return
|
|
|
-//}
|
|
|
-//
|
|
|
-//type SendTemplateResponse struct {
|
|
|
-// Errcode int `json:"errcode"`
|
|
|
-// Errmsg string `json:"errmsg"`
|
|
|
-// MsgID int `json:"msgid"`
|
|
|
-//}
|
|
|
-//
|
|
|
-//func SendCompanyApplyWxTemplateMsg(mobile, applyType string) (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)
|
|
|
-// utils.FileLog.Info("发送模版消息失败,Err:%s,%s", err.Error(), msg)
|
|
|
-// }
|
|
|
-// if msg != "" {
|
|
|
-// utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
-// }
|
|
|
-// }()
|
|
|
-// utils.FileLog.Info("%s", "services SendMsg")
|
|
|
-//
|
|
|
-// accessToken, err := models.GetWxAccessToken()
|
|
|
-// if err != nil {
|
|
|
-// msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// if accessToken == "" {
|
|
|
-// msg = "accessToken is empty"
|
|
|
-// return
|
|
|
-// }
|
|
|
-// utils.FileLog.Info("mobile:%s", mobile)
|
|
|
-// openIdList, err := models.GetOpenIdListByMobile(mobile)
|
|
|
-// if err != nil {
|
|
|
-// msg = "get openIdList err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// utils.FileLog.Info("openIdListCount:%s", len(openIdList))
|
|
|
-// //fmt.Println("openIdListCount:", len(openIdList))
|
|
|
-// if len(openIdList) > 0 && utils.TemplateIdByCompanyApply != "" {
|
|
|
-// utils.FileLog.Info("start send")
|
|
|
-// sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
|
|
|
-// fmt.Println("send start")
|
|
|
-// utils.FileLog.Info("send start")
|
|
|
-// sendMap := make(map[string]interface{})
|
|
|
-// sendData := make(map[string]interface{})
|
|
|
-//
|
|
|
-// redirectUrl := "" //utils.TemplateRedirectUrl + strconv.Itoa(reportId)
|
|
|
-// keyword1 := applyType
|
|
|
-// first := "Hi,有新的订单需要审批"
|
|
|
-// keyword2 := time.Now().Format(utils.FormatDateTime)
|
|
|
-// keyword3 := ""
|
|
|
-// remark := ""
|
|
|
-//
|
|
|
-// 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["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
|
|
|
-// sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
|
|
|
-//
|
|
|
-// sendMap["template_id"] = utils.TemplateIdByCompanyApply
|
|
|
-// sendMap["url"] = redirectUrl
|
|
|
-// sendMap["data"] = sendData
|
|
|
-// sendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
-// }
|
|
|
-// utils.FileLog.Info("send end")
|
|
|
-// return
|
|
|
-//}
|
|
|
+
|
|
|
+func SendInterviewApplyTemplateMsg(realName, companyName, mobile, articleTitle, openId string) (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)
|
|
|
+ utils.FileLog.Info("发送模版消息失败,Err:%s,%s", err.Error(), msg)
|
|
|
+ }
|
|
|
+ if msg != "" {
|
|
|
+ utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ utils.FileLog.Info("%s", "services SendMsg")
|
|
|
+
|
|
|
+ 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{})
|
|
|
+
|
|
|
+ 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}
|
|
|
+
|
|
|
+ sendMap["template_id"] = utils.WxMsgTemplateIdApply
|
|
|
+ sendMap["data"] = sendData
|
|
|
+ sendTemplateMsg(sendUrl, openId, sendMap)
|
|
|
+ fmt.Println("send end")
|
|
|
+ utils.FileLog.Info("send end")
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func SendInterviewApplyCancelTemplateMsg(realName, companyName, mobile, articleTitle, openId string) (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)
|
|
|
+ utils.FileLog.Info("发送模版消息失败,Err:%s,%s", err.Error(), msg)
|
|
|
+ }
|
|
|
+ if msg != "" {
|
|
|
+ utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ utils.FileLog.Info("%s", "services SendMsg")
|
|
|
+
|
|
|
+ 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 := 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.WxMsgTemplateIdApplyCancel
|
|
|
+ sendMap["data"] = sendData
|
|
|
+ sendTemplateMsg(sendUrl, openId, sendMap)
|
|
|
+ fmt.Println("send end")
|
|
|
+ utils.FileLog.Info("send end")
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func SendPermissionApplyTemplateMsg(realName, companyName, mobile, openId,applyMethod string) (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)
|
|
|
+ utils.FileLog.Info("发送模版消息失败,Err:%s,%s", err.Error(), msg)
|
|
|
+ }
|
|
|
+ if msg != "" {
|
|
|
+ utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ utils.FileLog.Info("%s", "services SendMsg")
|
|
|
+
|
|
|
+ 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{})
|
|
|
+
|
|
|
+ keyword1 := realName + "【" + companyName + "】"
|
|
|
+ first := "查研观向有一条新的权限申请,请及时处理。"
|
|
|
+ keyword2 := mobile
|
|
|
+ keyword3 := time.Now().Format(utils.FormatDateTime)
|
|
|
+ keyword4 := applyMethod
|
|
|
+ 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}
|
|
|
+
|
|
|
+ sendMap["template_id"] = utils.WxMsgTemplateIdApply
|
|
|
+ sendMap["data"] = sendData
|
|
|
+ sendTemplateMsg(sendUrl, openId, sendMap)
|
|
|
+ fmt.Println("send end")
|
|
|
+ utils.FileLog.Info("send end")
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func sendTemplateMsg(sendUrl, openId string, sendMap map[string]interface{}) (err error) {
|
|
|
+ sendMap["touser"] = openId
|
|
|
+ data, err := json.Marshal(sendMap)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("SendTemplateMsgOne Marshal Err:", err.Error())
|
|
|
+ utils.FileLog.Info("SendTemplateMsgOne Marshal Err:%s", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ err = toSendTemplateMsg(sendUrl, data)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("send err:", err.Error())
|
|
|
+ utils.FileLog.Info("ToSendTemplateMsg Err:%s", err.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func toSendTemplateMsg(sendUrl string, data []byte) (err error) {
|
|
|
+ utils.FileLog.Info("Send:%s", string(data))
|
|
|
+ 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 SendTemplateResponse
|
|
|
+ err = json.Unmarshal(body, &templateResponse)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info("SendResult Unmarshal Err:%s", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SendTemplateResponse struct {
|
|
|
+ Errcode int `json:"errcode"`
|
|
|
+ Errmsg string `json:"errmsg"`
|
|
|
+ MsgID int `json:"msgid"`
|
|
|
+}
|