|
@@ -1,23 +1,19 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
- "bytes"
|
|
|
"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/models/tables/admin"
|
|
|
"hongze/hongze_mobile_admin/services/alarm_msg"
|
|
|
"hongze/hongze_mobile_admin/utils"
|
|
|
"io/ioutil"
|
|
|
"net/http"
|
|
|
- "strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
"errors"
|
|
|
)
|
|
|
-
|
|
|
type SendWxTemplate struct {
|
|
|
+ WxAppId string `description:"公众号appId"`
|
|
|
First string `description:"模板消息first字段"`
|
|
|
Keyword1 string `description:"模板消息keyword1字段"`
|
|
|
Keyword2 string `description:"模板消息keyword2字段"`
|
|
@@ -43,147 +39,6 @@ type BaseResponse struct {
|
|
|
IsAddLog bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-func SendWxTemplateMsg(reportId int) (err error) {
|
|
|
- var msg string
|
|
|
- defer func() {
|
|
|
- if err != nil {
|
|
|
- go alarm_msg.SendAlarmMsg(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg), 3)
|
|
|
- //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 := report.GetReportById(reportId)
|
|
|
- if err != nil {
|
|
|
- msg = "GetReportInfo Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if report == nil {
|
|
|
- utils.FileLog.Info("报告信息不存在")
|
|
|
- return
|
|
|
- }
|
|
|
- accessToken, err := WxGetAccessToken()
|
|
|
- if err != nil {
|
|
|
- msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if accessToken == "" {
|
|
|
- msg = "accessToken is empty"
|
|
|
- return
|
|
|
- }
|
|
|
- //获取openid列表
|
|
|
- openIdStr := WxUsersGet()
|
|
|
- openIdList, err := wx_user.GetOpenIdList(openIdStr)
|
|
|
- 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, 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, 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())
|
|
|
- utils.FileLog.Info(fmt.Sprintf("SendTemplateMsgOne Marshal Err:%s", err.Error()))
|
|
|
- return err
|
|
|
- }
|
|
|
- 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()))
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-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 {
|
|
|
- return
|
|
|
- }
|
|
|
- defer resp.Body.Close()
|
|
|
-
|
|
|
- body, _ := ioutil.ReadAll(resp.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
|
|
|
-}
|
|
|
-
|
|
|
type SendTemplateResponse struct {
|
|
|
Errcode int `json:"errcode"`
|
|
|
Errmsg string `json:"errmsg"`
|
|
@@ -204,21 +59,11 @@ func SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath string, wxMsgM
|
|
|
}
|
|
|
}()
|
|
|
utils.FileLog.Info("%s", "services SendMsg")
|
|
|
-
|
|
|
- accessToken, err := WxGetAccessToken()
|
|
|
- if err != nil {
|
|
|
- msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if accessToken == "" {
|
|
|
- msg = "accessToken is empty"
|
|
|
- return
|
|
|
- }
|
|
|
utils.FileLog.Info("mobile:%s", mobile)
|
|
|
|
|
|
//获取openid列表
|
|
|
- //openIdStr := WxUsersGet()
|
|
|
- openIdList, err := wx_user.GetOpenIdListByMobile(mobile)
|
|
|
+ openIdStr := WxAdminOpenIdGet()
|
|
|
+ openIdList, err := admin.GetOpenIdListByMobile(mobile, openIdStr)
|
|
|
if err != nil {
|
|
|
msg = "get openIdList err:" + err.Error()
|
|
|
return
|
|
@@ -274,6 +119,7 @@ func SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath string, wxMsgM
|
|
|
}
|
|
|
|
|
|
sendInfo := new(SendWxTemplate)
|
|
|
+ sendInfo.WxAppId = utils.AdminWxAppId
|
|
|
sendInfo.First = first
|
|
|
sendInfo.Keyword1 = keyword1
|
|
|
sendInfo.Keyword2 = keyword2
|
|
@@ -294,7 +140,7 @@ func SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath string, wxMsgM
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// 路演->销售收到处理结果
|
|
|
+// SendWxMsgWithRoadshowDetailResult 路演->销售收到处理结果
|
|
|
func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark, mobile, redirectUrl, wxAppPath string) (err error) {
|
|
|
var msg string
|
|
|
defer func() {
|
|
@@ -308,25 +154,16 @@ func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark, mobile
|
|
|
}
|
|
|
}()
|
|
|
utils.FileLog.Info("%s", "services SendMsg")
|
|
|
-
|
|
|
- accessToken, err := WxGetAccessToken()
|
|
|
- if err != nil {
|
|
|
- msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if accessToken == "" {
|
|
|
- msg = "accessToken is empty"
|
|
|
- return
|
|
|
- }
|
|
|
utils.FileLog.Info("mobile:%s", mobile)
|
|
|
|
|
|
//获取openid列表
|
|
|
- //openIdStr := WxUsersGet()
|
|
|
- openIdList, err := wx_user.GetOpenIdListByMobile(mobile)
|
|
|
+ openIdStr := WxAdminOpenIdGet()
|
|
|
+ openIdList, err := admin.GetOpenIdListByMobile(mobile, openIdStr)
|
|
|
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 != "" {
|
|
@@ -357,6 +194,7 @@ func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark, mobile
|
|
|
}
|
|
|
|
|
|
sendInfo := new(SendWxTemplate)
|
|
|
+ sendInfo.WxAppId = utils.AdminWxAppId
|
|
|
sendInfo.First = first
|
|
|
sendInfo.Keyword1 = keyword1
|
|
|
sendInfo.Keyword2 = keyword2
|
|
@@ -369,14 +207,13 @@ func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, remark, mobile
|
|
|
sendInfo.Resource = wxAppPath
|
|
|
sendInfo.SendType = utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT
|
|
|
sendInfo.OpenIdArr = openIdArr
|
|
|
-
|
|
|
err = SendTemplateMsg(sendInfo)
|
|
|
}
|
|
|
utils.FileLog.Info("send end")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// 路演->研究员收到待处理的申请
|
|
|
+// SendWxMsgWithRoadshowPending 路演->研究员收到待处理的申请
|
|
|
func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4, remark, wxAppPath, mobile string) (err error) {
|
|
|
//utils.WxMsgTemplateIdWithRoadshowPending
|
|
|
var msg string
|
|
@@ -392,19 +229,9 @@ func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4,
|
|
|
}()
|
|
|
utils.FileLog.Info("%s", "services SendMsg")
|
|
|
|
|
|
- accessToken, err := WxGetAccessToken()
|
|
|
- if err != nil {
|
|
|
- msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if accessToken == "" {
|
|
|
- msg = "accessToken is empty"
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
//获取openid列表
|
|
|
- //openIdStr := WxUsersGet()
|
|
|
- openIdList, err := wx_user.GetOpenIdListByMobile(mobile)
|
|
|
+ openIdStr := WxAdminOpenIdGet()
|
|
|
+ openIdList, err := admin.GetOpenIdListByMobile(mobile, openIdStr)
|
|
|
if err != nil {
|
|
|
msg = "get openIdList err:" + err.Error()
|
|
|
return
|
|
@@ -440,6 +267,7 @@ func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4,
|
|
|
}
|
|
|
|
|
|
sendInfo := new(SendWxTemplate)
|
|
|
+ sendInfo.WxAppId = utils.AdminWxAppId
|
|
|
sendInfo.First = first
|
|
|
sendInfo.Keyword1 = keyword1
|
|
|
sendInfo.Keyword2 = keyword2
|
|
@@ -461,7 +289,7 @@ func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4,
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// 路演->研究员收到活动删除通知
|
|
|
+// SendWxMsgWithRoadshowDeleteNotice 路演->研究员收到活动删除通知
|
|
|
func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppPath, mobile string) (err error) {
|
|
|
var msg string
|
|
|
defer func() {
|
|
@@ -475,20 +303,9 @@ func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppP
|
|
|
}
|
|
|
}()
|
|
|
utils.FileLog.Info("%s", "services SendMsg")
|
|
|
-
|
|
|
- accessToken, err := WxGetAccessToken()
|
|
|
- if err != nil {
|
|
|
- msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if accessToken == "" {
|
|
|
- msg = "accessToken is empty"
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
//获取openid列表
|
|
|
- //openIdStr := WxUsersGet()
|
|
|
- openIdList, err := wx_user.GetOpenIdListByMobile(mobile)
|
|
|
+ openIdStr := WxAdminOpenIdGet()
|
|
|
+ openIdList, err := admin.GetOpenIdListByMobile(mobile, openIdStr)
|
|
|
if err != nil {
|
|
|
msg = "get openIdList err:" + err.Error()
|
|
|
return
|
|
@@ -519,6 +336,7 @@ func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppP
|
|
|
}
|
|
|
|
|
|
sendInfo := new(SendWxTemplate)
|
|
|
+ sendInfo.WxAppId = utils.AdminWxAppId
|
|
|
sendInfo.First = first
|
|
|
sendInfo.Keyword1 = keyword1
|
|
|
sendInfo.Keyword2 = keyword2
|
|
@@ -538,7 +356,7 @@ func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppP
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// 给销售发送 用印申请已签回的模版消息
|
|
|
+// SendSealFinishedWxTemplateMsg 给销售发送 用印申请已签回的模版消息
|
|
|
func SendSealFinishedWxTemplateMsg(mobile string, companyName string, sealId int) (err error) {
|
|
|
var msg string
|
|
|
defer func() {
|
|
@@ -552,22 +370,14 @@ func SendSealFinishedWxTemplateMsg(mobile string, companyName string, sealId int
|
|
|
}
|
|
|
}()
|
|
|
utils.FileLog.Info("%s", "services SendMsg")
|
|
|
- accessToken, err := WxGetAccessToken()
|
|
|
- if err != nil {
|
|
|
- msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if accessToken == "" {
|
|
|
- msg = "accessToken is empty"
|
|
|
- return
|
|
|
- }
|
|
|
utils.FileLog.Info("mobile:%s", mobile)
|
|
|
- //openIdStr := WxUsersGet()
|
|
|
- openIdList, err := wx_user.GetOpenIdListByMobile(mobile)
|
|
|
+ openIdStr := WxAdminOpenIdGet()
|
|
|
+ openIdList, err := admin.GetOpenIdListByMobile(mobile, openIdStr)
|
|
|
if err != nil {
|
|
|
msg = "get openIdList err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
utils.FileLog.Info("openIdListCount:%s", len(openIdList))
|
|
|
|
|
|
if len(openIdList) > 0 && utils.WxMsgTemplateIdWithSealApplyFinished != "" {
|
|
@@ -602,6 +412,7 @@ func SendSealFinishedWxTemplateMsg(mobile string, companyName string, sealId int
|
|
|
}
|
|
|
|
|
|
sendInfo := new(SendWxTemplate)
|
|
|
+ sendInfo.WxAppId = utils.AdminWxAppId
|
|
|
sendInfo.First = first
|
|
|
sendInfo.Keyword1 = keyword1
|
|
|
sendInfo.Keyword2 = keyword2
|
|
@@ -620,7 +431,7 @@ func SendSealFinishedWxTemplateMsg(mobile string, companyName string, sealId int
|
|
|
}
|
|
|
|
|
|
// SendYbQuestionDistributeWxMsg 推送研报小程序模板消息-问答社区分配
|
|
|
-func SendYbQuestionDistributeWxMsg(questionId, userId int, openid, questionTitle string) (err error) {
|
|
|
+func SendYbQuestionDistributeWxMsg(questionId, adminId int, openid, questionTitle string) (err error) {
|
|
|
var errMsg string
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
@@ -629,20 +440,10 @@ func SendYbQuestionDistributeWxMsg(questionId, userId int, openid, questionTitle
|
|
|
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{
|
|
|
+ openIdList := make([]*admin.OpenIdList, 0)
|
|
|
+ openIdList = append(openIdList, &admin.OpenIdList{
|
|
|
OpenId: openid,
|
|
|
- UserId: userId,
|
|
|
+ AdminId: adminId,
|
|
|
})
|
|
|
|
|
|
//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
|
|
@@ -674,6 +475,7 @@ func SendYbQuestionDistributeWxMsg(questionId, userId int, openid, questionTitle
|
|
|
}
|
|
|
|
|
|
sendInfo := new(SendWxTemplate)
|
|
|
+ sendInfo.WxAppId = utils.AdminWxAppId
|
|
|
sendInfo.First = first
|
|
|
sendInfo.Keyword1 = keyword1
|
|
|
sendInfo.Keyword2 = keyword2
|
|
@@ -685,6 +487,7 @@ func SendYbQuestionDistributeWxMsg(questionId, userId int, openid, questionTitle
|
|
|
sendInfo.SendType = utils.TEMPLATE_MSG_YB_COMMUNITY_QUESTION
|
|
|
sendInfo.OpenIdArr = openIdArr
|
|
|
err = SendTemplateMsg(sendInfo)
|
|
|
+ utils.FileLog.Info("send end")
|
|
|
return
|
|
|
}
|
|
|
|