package services import ( "bytes" "encoding/json" "fmt" "hongze/hongze_cygx/models" "hongze/hongze_cygx/utils" "io/ioutil" "net/http" "time" ) //访谈申请 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) } 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} sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs sendMap["data"] = sendData sendTemplateMsg(sendUrl, openId, sendMap) fmt.Println("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) } 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, openId, sendMap) fmt.Println("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) } 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{}) 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} if utils.RunMode == "release" { sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs } else { sendMap["template_id"] = utils.WxMsgTemplateIdApply } sendMap["data"] = sendData sendTemplateMsg(sendUrl, openId, sendMap) fmt.Println("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()) return err } err = toSendTemplateMsg(sendUrl, data) if err != nil { fmt.Println("send err:", err.Error()) } return } func toSendTemplateMsg(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) var templateResponse SendTemplateResponse err = json.Unmarshal(body, &templateResponse) fmt.Println(templateResponse) utils.FileLog.Info("SendResult %s:", string(body)) 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 ini123() { fmt.Println("start") SendPermissionApplyTemplateMsg("沈涛", "弘则", "18767183922", "oW3Gts7Ji6Ngv7v2pLeLOFaajfus", "潜在客户申请") fmt.Println("end") }