|
@@ -318,7 +318,7 @@ func SendCommentWxCategoryTemplateMsg(req models.AddCygxArticleCommentReq, user
|
|
|
openIdArr = append(openIdArr, v.OpenId)
|
|
|
}
|
|
|
|
|
|
- redirectUrl = utils.WX_MSG_PATH_YX_COMMENT_DETAIL + "SourceId=" + strconv.Itoa(msgId) + "&SourceType=1"
|
|
|
+ redirectUrl = utils.WX_MSG_PATH_YX_COMMENT_DETAIL + strconv.Itoa(msgId) + "&Stype=文章"
|
|
|
|
|
|
sendInfo := new(SendWxCategoryTemplate)
|
|
|
sendInfo.Keywords = keywords
|
|
@@ -893,3 +893,168 @@ func SendWxCategoryMsgWithActivityAsk(companyName, realName, sellerName, askTime
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// 推送会议开始消息提醒60分钟前
|
|
|
+func SendActivityBeginMsg(cont context.Context) (err error) {
|
|
|
+ //func SendActivityBeginMsg() (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg("60分钟会议消息提醒失败"+err.Error(), 2)
|
|
|
+ fmt.Println("发送失败,Err:", err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ endDate := time.Now().Add(+time.Minute * 60).Format(utils.FormatDateTime)
|
|
|
+ listActivity, err := models.GetYxActivitySendMsgListAll(endDate)
|
|
|
+ fmt.Println(len(listActivity))
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("GetActivitySendMsgListAll Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(listActivity) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //var remark = "点击查看活动详情"
|
|
|
+ var signupIds string
|
|
|
+ for _, v := range listActivity {
|
|
|
+ signupIds += strconv.Itoa(v.Id) + ","
|
|
|
+ //var reserveResults string
|
|
|
+ //var first string
|
|
|
+ openIdItem := new(models.OpenIdList)
|
|
|
+ openIdItem.OpenId = v.OpenId
|
|
|
+ openIdItem.UserId = v.UserId
|
|
|
+ openIdList := make([]*models.OpenIdList, 0)
|
|
|
+ openIdList = append(openIdList, openIdItem)
|
|
|
+
|
|
|
+ SendWxMsgWithFrequencyBycategory(v.ActivityName, v.ActivityTime, openIdList, v.ActivityId)
|
|
|
+ }
|
|
|
+ if len(signupIds) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ signupIds = strings.TrimRight(signupIds, ",")
|
|
|
+ err = models.UPdateSendedMsgStatus(signupIds)
|
|
|
+ if err != nil {
|
|
|
+ var msg string
|
|
|
+ go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// 推送会议开始消息提醒15分钟前
|
|
|
+func SendActivityBeginMsgMeeting(cont context.Context) (err error) {
|
|
|
+ //func SendActivityBeginMsgMeeting() (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg("15分钟会议消息提醒失败", 2)
|
|
|
+ fmt.Println("发送失败,Err:", err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ endDate := time.Now().Add(+time.Minute * 15).Format(utils.FormatDateTime)
|
|
|
+ condition = ` AND activity_time <= ? AND activity_time >= NOW() AND publish_status = 1 `
|
|
|
+ pars = append(pars, endDate)
|
|
|
+ listActivity, e := models.GetCygxActivityList(condition, pars, 0, 100000)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCygxActivityList, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(listActivity) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //var signupIds string
|
|
|
+ //var remark = "点击查看活动详情"
|
|
|
+
|
|
|
+ var activityIds []int
|
|
|
+ //同一时间举办的活动不多所以这里循环查询
|
|
|
+ for _, v := range listActivity {
|
|
|
+ activityIds = append(activityIds, v.ActivityId)
|
|
|
+ var mobiles []string
|
|
|
+ pars = make([]interface{}, 0)
|
|
|
+ condition = ` AND activity_id = ? AND is_send_wx_msg = 0 `
|
|
|
+ pars = append(pars, v.ActivityId)
|
|
|
+ //获取设置消息提醒的用户列表
|
|
|
+ listxReminder, e := models.GetCygxReminderListByUser(condition, pars)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxReminderListByUser, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, vReminder := range listxReminder {
|
|
|
+ mobiles = append(mobiles, vReminder.Mobile)
|
|
|
+ }
|
|
|
+
|
|
|
+ pars = make([]interface{}, 0)
|
|
|
+ condition = ` AND do_fail_type = 0 AND activity_id = ? AND signup_type = 1 AND is_send_wx_msg = 0 `
|
|
|
+ pars = append(pars, v.ActivityId)
|
|
|
+ //获取设置预约外呼的用户列表
|
|
|
+ listSignup, e := models.GetActivitySignupList(condition, pars)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetActivitySignupList, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, vSignup := range listSignup {
|
|
|
+ mobiles = append(mobiles, vSignup.Mobile)
|
|
|
+ }
|
|
|
+ //获取这些手机号对应的Openid
|
|
|
+ listOpenid, e := models.GetUserRecordListByMobileArr(mobiles)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetUserRecordListByMobileArr, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openIdList := make([]*models.OpenIdList, 0)
|
|
|
+ for _, vOpenid := range listOpenid {
|
|
|
+ openIdItem := new(models.OpenIdList)
|
|
|
+ openIdItem.OpenId = vOpenid.OpenId
|
|
|
+ openIdItem.UserId = vOpenid.UserId
|
|
|
+ openIdList = append(openIdList, openIdItem)
|
|
|
+ }
|
|
|
+ //var reserveResults string
|
|
|
+ //var keyword2 string
|
|
|
+ //reserveResults = "--"
|
|
|
+ //keyword2 = "将在15分钟后开始"
|
|
|
+ //SendWxMsgWithFrequency(keyword2, v.ActivityName, reserveResults, v.ActivityTimeText, "--", remark, openIdList, v.ActivityId)
|
|
|
+ SendWxMsgWithFrequencyBycategory(v.ActivityName, v.ActivityTime, openIdList, v.ActivityId)
|
|
|
+ }
|
|
|
+ err = models.UpdateSendedMsgMeetingSendWxMsg(activityIds)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// 活动预开始模版消息通知(类目模版消息,暂时单独推送)
|
|
|
+func SendWxMsgWithFrequencyBycategory(keyWord1, keyWord2 string, openIdList []*models.OpenIdList, activityId int) (err error) {
|
|
|
+ if len(openIdList) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var msg string
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg(fmt.Sprint("活动预开始模版消息通知消息失败SendWxMsgWithFrequencyBycategory ,activityId:", activityId, msg+";Err:"+err.Error()), 2)
|
|
|
+ utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ accessToken, err := models.GetWxAccessTokenByXzs()
|
|
|
+ if err != nil {
|
|
|
+ msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if accessToken == "" {
|
|
|
+ msg = "accessToken is empty"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ keyWord1 = utils.TruncateActivityNameString(keyWord1)
|
|
|
+ //keyword1 := keyWord2
|
|
|
+ //keyword1 := keyWord2
|
|
|
+ sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
|
|
|
+ templateId := utils.WxMsgTemplateIdActivityChangeApplyXzs
|
|
|
+ redirectUrl := utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId)
|
|
|
+ sendMap := make(map[string]interface{})
|
|
|
+ sendData := make(map[string]interface{})
|
|
|
+ sendMap["template_id"] = templateId
|
|
|
+ sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": redirectUrl}
|
|
|
+ sendData["thing18"] = map[string]interface{}{"value": keyWord1, "color": "#173177"}
|
|
|
+ sendData["time23"] = map[string]interface{}{"value": keyWord2, "color": "#173177"}
|
|
|
+ sendMap["data"] = sendData
|
|
|
+ WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
|
|
|
+ return
|
|
|
+}
|