Browse Source

no message

xingzai 8 months ago
parent
commit
baa4faf161
3 changed files with 197 additions and 2 deletions
  1. 30 2
      models/activity.go
  2. 135 0
      services/activity.go
  3. 32 0
      services/wx_category_template_msg.go

+ 30 - 2
models/activity.go

@@ -633,7 +633,35 @@ WHERE
 	AND a.publish_status = 1
 	AND a.activity_time <= ? AND a.activity_time >= NOW() 
 	AND s.is_cancel = 0
-	AND( a.activity_type_id IN (4,5,6) OR (a.activity_type_id = 3 AND a.is_limit_people = 1 )) 	GROUP BY s.id`
+	AND( a.activity_type_id IN (4,5,6,8) OR (a.activity_type_id = 3 AND a.is_limit_people = 1 )) 	GROUP BY s.id`
+	_, err = o.Raw(sql, endDate).QueryRows(&items)
+	return
+}
+
+// 买方研选会前一小时需要推送的Openid
+func GetActivitySendMsgListAllMfyx(endDate string) (items []*WxMsgCygxActivityList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	s.id,
+	s.user_id,
+	s.fail_type,
+	cr.open_id,
+	a.activity_name,
+	a.activity_id,
+	a.activity_time
+FROM
+	cygx_activity AS a
+	INNER JOIN cygx_activity_signup AS s ON s.activity_id = a.activity_id
+	INNER JOIN cygx_mfyx_gzh_user_record AS cr ON cr.cygx_bind_account = s.mobile 
+WHERE
+	1 = 1 
+	AND s.is_send_wx_msg = 0 
+	AND s.do_fail_type = 0 
+	AND a.publish_status = 1
+  	AND a.chart_permission_id = 31 
+	AND a.activity_time = ? AND a.activity_time >= NOW() 
+	AND s.is_cancel = 0
+	AND a.activity_type_id IN (5,8) 	GROUP BY s.id`
 	_, err = o.Raw(sql, endDate).QueryRows(&items)
 	return
 }
@@ -1352,4 +1380,4 @@ WHERE
 	GROUP BY s.id`
 	_, err = o.Raw(sql, endDate).QueryRows(&items)
 	return
-}
+}

+ 135 - 0
services/activity.go

@@ -71,6 +71,8 @@ func SendActivityBeginMsg(cont context.Context) (err error) {
 		//SendWxMsgWithFrequency(first, v.ActivityName, reserveResults, v.ActivityTimeText, v.Address, remark, openIdList, v.ActivityId)
 		SendWxMsgWithFrequencyBycategory(v.ActivityName, v.ActivityTime, openIdList, v.ActivityId)
 	}
+
+	go SendActivityBeginMsgMfyx() //买方研选推送会议开始消息提醒60分钟前
 	if len(signupIds) == 0 {
 		return
 	}
@@ -84,6 +86,44 @@ func SendActivityBeginMsg(cont context.Context) (err error) {
 	return
 }
 
+// 买方研选推送会议开始消息提醒60分钟前
+func SendActivityBeginMsgMfyx() (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("买方研选推送会议开始消息提醒60分钟前 SendActivityBeginMsgMfyx"+err.Error(), 2)
+			fmt.Println("发送失败,Err:", err.Error())
+		}
+	}()
+	endDate := time.Now().Add(+time.Minute * 60).Format(utils.FormatDateTime)
+	listActivity, err := models.GetActivitySendMsgListAllMfyx(endDate)
+	fmt.Println(len(listActivity))
+	//return
+	if err != nil {
+		fmt.Println("GetActivitySendMsgListAllMfyx Err:", err.Error())
+		return
+	}
+	if len(listActivity) == 0 {
+		return
+	}
+	//var remark = "点击查看活动详情"
+	var signupIds string
+	for _, v := range listActivity {
+		signupIds += strconv.Itoa(v.Id) + ","
+		openIdItem := new(models.OpenIdList)
+		openIdItem.OpenId = v.OpenId
+		openIdItem.UserId = v.UserId
+		openIdList := make([]*models.OpenIdList, 0)
+		openIdList = append(openIdList, openIdItem)
+		SendWxMsgWithFrequencyBycategoryMfyx(v.ActivityName, v.ActivityTime, openIdList, v.ActivityId)
+	}
+	if len(signupIds) == 0 {
+		return
+	}
+	signupIds = strings.TrimRight(signupIds, ",")
+	err = models.UPdateSendedMsgStatus(signupIds)
+	return
+}
+
 //func init() {
 //	SendActivityBeginMsgMeeting()
 //}
@@ -114,6 +154,101 @@ func SendActivityBeginMsgMeeting(cont context.Context) (err error) {
 	//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)
+
+		//如果是研选活动,发送研选类目模板消息
+		if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
+			//获取这些手机号对应的Openid
+			listOpenidMfyx, e := models.GetMfyxUserRecordListByMobileArr(mobiles)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetUserRecordListByMobileArr, Err: " + e.Error())
+				return
+			}
+			openIdListMfyx := make([]*models.OpenIdList, 0)
+			for _, vOpenid := range listOpenidMfyx {
+				openIdItem := new(models.OpenIdList)
+				openIdItem.OpenId = vOpenid.OpenId
+				openIdItem.UserId = vOpenid.UserId
+				openIdListMfyx = append(openIdListMfyx, openIdItem)
+			}
+			SendWxMsgWithFrequencyBycategoryMfyx(v.ActivityName, v.ActivityTime, openIdListMfyx, v.ActivityId)
+		}
+	}
+	err = models.UpdateSendedMsgMeetingSendWxMsg(activityIds)
+	return
+}
+
+// 买方研选推送会议开始消息提醒15分钟前
+func SendActivityBeginMsgMeetingMfyx() (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("买方研选推送会议开始消息提醒15分钟前 失败 SendActivityBeginMsgMeetingMfyx Err:", err.Error()), 2)
+		}
+	}()
+	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 {

+ 32 - 0
services/wx_category_template_msg.go

@@ -753,6 +753,38 @@ func SendWxCategoryMsgWithActivityUserRemind(keyWord1, keyWord2, keyWord3, keyWo
 	return
 }
 
+// 买方研选推送会议开始消息提醒60/15分钟前
+func SendWxMsgWithFrequencyBycategoryMfyx(keyWord1, keyWord2 string, openIdList []*models.OpenIdList, activityId int) (err error) {
+	if len(openIdList) == 0 {
+		return
+	}
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("发送用户操作活动消息提醒,SendWxCategoryMsgWithActivityUserRemind 文章ID:", activityId), 2)
+		}
+	}()
+	keyWord1 = utils.TruncateActivityNameString(keyWord1)
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	var keywords []string
+
+	keyWord2 = utils.StrTimeToTime(keyWord2).Format(utils.FormatDateTimeMinute2) //去掉时间格式后面的秒
+	keywords = append(keywords, keyWord1, keyWord2)
+	redirectUrl := utils.WX_MSG_PATH_YX_ACTIVITY_DETAIL + strconv.Itoa(activityId)
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	err = SendCategoryTemplateMsg(sendInfo)
+	return
+}
+
 // 活动模块END
 
 // 专栏模块