|
@@ -5,6 +5,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"hongze/hongze_mobile_admin/models/tables/report"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/user_template_record"
|
|
|
"hongze/hongze_mobile_admin/models/tables/wx_user"
|
|
|
"hongze/hongze_mobile_admin/services/alarm_msg"
|
|
|
"hongze/hongze_mobile_admin/utils"
|
|
@@ -78,14 +79,15 @@ func SendWxTemplateMsg(reportId int) (err error) {
|
|
|
sendMap["template_id"] = utils.TemplateIdByProduct
|
|
|
sendMap["url"] = redirectUrl
|
|
|
sendMap["data"] = sendData
|
|
|
- sendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ sendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(reportId), utils.TEMPLATE_MSG_REPORT)
|
|
|
+
|
|
|
//}
|
|
|
fmt.Println("send end")
|
|
|
utils.FileLog.Info("send end")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func sendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*wx_user.OpenIdList) (err error) {
|
|
|
+func sendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*wx_user.OpenIdList, resource string, sendType int) (err error) {
|
|
|
for _, v := range items {
|
|
|
sendMap["touser"] = v.OpenId
|
|
|
data, err := json.Marshal(sendMap)
|
|
@@ -94,7 +96,7 @@ func sendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*wx
|
|
|
utils.FileLog.Info(fmt.Sprintf("SendTemplateMsgOne Marshal Err:%s", err.Error()))
|
|
|
return err
|
|
|
}
|
|
|
- err = toSendTemplateMsg(sendUrl, data)
|
|
|
+ err = toSendTemplateMsg(sendUrl, data, resource, sendType, v)
|
|
|
if err != nil {
|
|
|
fmt.Println("send err:", err.Error())
|
|
|
utils.FileLog.Info(fmt.Sprintf("ToSendTemplateMsg Err:%s", err.Error()))
|
|
@@ -103,8 +105,8 @@ func sendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*wx
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func toSendTemplateMsg(sendUrl string, data []byte) (err error) {
|
|
|
- utils.FileLog.Info("Send:"+string(data))
|
|
|
+func toSendTemplateMsg(sendUrl string, data []byte, resource string, sendType int, dataItem *wx_user.OpenIdList) (err error) {
|
|
|
+ utils.FileLog.Info("Send:" + string(data))
|
|
|
client := http.Client{}
|
|
|
resp, err := client.Post(sendUrl, "application/json", bytes.NewBuffer(data))
|
|
|
if err != nil {
|
|
@@ -113,13 +115,42 @@ func toSendTemplateMsg(sendUrl string, data []byte) (err error) {
|
|
|
defer resp.Body.Close()
|
|
|
|
|
|
body, _ := ioutil.ReadAll(resp.Body)
|
|
|
- utils.FileLog.Info("SendResult:"+string(body))
|
|
|
+ utils.FileLog.Info("SendResult:" + string(body))
|
|
|
var templateResponse SendTemplateResponse
|
|
|
err = json.Unmarshal(body, &templateResponse)
|
|
|
if err != nil {
|
|
|
utils.FileLog.Info("SendResult Unmarshal Err:%s", err.Error())
|
|
|
return err
|
|
|
}
|
|
|
+
|
|
|
+ //新增模板消息推送记录
|
|
|
+ {
|
|
|
+ sendStatus := 0
|
|
|
+ if templateResponse.Errcode == 0 {
|
|
|
+ sendStatus = 1
|
|
|
+ } else {
|
|
|
+ sendStatus = 0
|
|
|
+ }
|
|
|
+ tr := &user_template_record.UserTemplateRecord{
|
|
|
+ Id: 0,
|
|
|
+ UserId: dataItem.UserId,
|
|
|
+ OpenId: dataItem.OpenId,
|
|
|
+ Resource: resource,
|
|
|
+ SendData: string(data),
|
|
|
+ Result: string(body),
|
|
|
+ CreateDate: time.Now().Format(utils.FormatDate),
|
|
|
+ CreateTime: time.Now().Format(utils.FormatDateTime),
|
|
|
+ SendStatus: sendStatus,
|
|
|
+ SendType: sendType,
|
|
|
+ }
|
|
|
+ go func() {
|
|
|
+ err = user_template_record.AddUserTemplateRecord(tr)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("AddUserTemplateRecord Err:%s", err.Error()))
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ }
|
|
|
+
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -204,15 +235,14 @@ func SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath string, wxMsgM
|
|
|
if wxAppPath != "" {
|
|
|
sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId2, "pagepath": wxAppPath}
|
|
|
}
|
|
|
- sendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ sendTemplateMsg(sendUrl, sendMap, openIdList, mobile, utils.TEMPLATE_MSG_APPLY)
|
|
|
}
|
|
|
utils.FileLog.Info("send end")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 路演->销售收到处理结果
|
|
|
-func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark,mobile, redirectUrl, wxAppPath string) (err error) {
|
|
|
+func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark, mobile, redirectUrl, wxAppPath string) (err error) {
|
|
|
var msg string
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
@@ -254,7 +284,6 @@ func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark,mobile,
|
|
|
sendMap := make(map[string]interface{})
|
|
|
sendData := make(map[string]interface{})
|
|
|
|
|
|
-
|
|
|
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"}
|
|
@@ -267,22 +296,21 @@ func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark,mobile,
|
|
|
if wxAppPath != "" {
|
|
|
sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId2, "pagepath": wxAppPath}
|
|
|
}
|
|
|
- sendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ sendTemplateMsg(sendUrl, sendMap, openIdList, wxAppPath, utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT)
|
|
|
}
|
|
|
utils.FileLog.Info("send end")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 路演->研究员收到待处理的申请
|
|
|
-func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4, remark, wxAppPath,mobile string) (err error) {
|
|
|
+func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4, remark, wxAppPath, mobile string) (err error) {
|
|
|
//utils.WxMsgTemplateIdWithRoadshowPending
|
|
|
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 alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+msg, 3)
|
|
|
- utils.FileLog.Info("发送模版消息失败,Err:"+err.Error()+msg)
|
|
|
+ utils.FileLog.Info("发送模版消息失败,Err:" + err.Error() + msg)
|
|
|
}
|
|
|
if msg != "" {
|
|
|
utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
@@ -317,7 +345,6 @@ func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4,
|
|
|
sendMap := make(map[string]interface{})
|
|
|
sendData := make(map[string]interface{})
|
|
|
|
|
|
-
|
|
|
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"}
|
|
@@ -331,15 +358,14 @@ func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4,
|
|
|
if wxAppPath != "" {
|
|
|
sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId2, "pagepath": wxAppPath}
|
|
|
}
|
|
|
- sendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ sendTemplateMsg(sendUrl, sendMap, openIdList, wxAppPath, utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT)
|
|
|
}
|
|
|
utils.FileLog.Info("send end")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 路演->研究员收到活动删除通知
|
|
|
-func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppPath,mobile string) (err error) {
|
|
|
+func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppPath, mobile string) (err error) {
|
|
|
var msg string
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
@@ -388,8 +414,59 @@ func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppP
|
|
|
sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId2, "pagepath": wxAppPath}
|
|
|
}
|
|
|
sendMap["data"] = sendData
|
|
|
- sendTemplateMsg(sendUrl, sendMap, openIdList)
|
|
|
+ sendTemplateMsg(sendUrl, sendMap, openIdList, wxAppPath, utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT)
|
|
|
}
|
|
|
utils.FileLog.Info("send end")
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// SendYbQuestionDistributeWxMsg 推送研报小程序模板消息-问答社区分配
|
|
|
+func SendYbQuestionDistributeWxMsg(questionId, userId int, openid, questionTitle string) (err error) {
|
|
|
+ var errMsg string
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ alarmMsg := fmt.Sprintf("SendMiniProgramReportWxMsg-推送问答社区分配模版消息失败; QuestionId: %d; Err: %s; Msg: %s", questionId, err.Error(), errMsg)
|
|
|
+ utils.FileLog.Error(alarmMsg)
|
|
|
+ go alarm_msg.SendAlarmMsg(alarmMsg, 3)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ accessToken, err := WxGetAccessToken()
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetWxAccessToken Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if accessToken == "" {
|
|
|
+ errMsg = "accessToken is empty"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openIdList := make([]*wx_user.OpenIdList, 0)
|
|
|
+ openIdList = append(openIdList, &wx_user.OpenIdList{
|
|
|
+ OpenId: openid,
|
|
|
+ UserId: userId,
|
|
|
+ })
|
|
|
+
|
|
|
+ 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 := questionTitle
|
|
|
+ keyword2 := "待回复"
|
|
|
+ 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["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
|
|
|
+
|
|
|
+ sendMap["template_id"] = utils.WxMsgTemplateIdWithYbCommunityQuestion
|
|
|
+ sendMap["data"] = sendData
|
|
|
+
|
|
|
+ wxAppPath := fmt.Sprintf("pages-question/answerDetail?id=%d", questionId)
|
|
|
+ if wxAppPath != "" {
|
|
|
+ sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxYbAppId, "pagepath": wxAppPath}
|
|
|
+ }
|
|
|
+ err = sendTemplateMsg(sendUrl, sendMap, openIdList, wxAppPath, utils.TEMPLATE_MSG_YB_COMMUNITY_QUESTION)
|
|
|
+ return
|
|
|
+}
|