Bladeren bron

Merge branch 'cygx_need_p2_769' of http://8.136.199.33:3000/hongze/hongze_cygx

xingzai 1 jaar geleden
bovenliggende
commit
27cde0aa07
3 gewijzigde bestanden met toevoegingen van 132 en 42 verwijderingen
  1. 41 6
      models/activity_meeting_reminder.go
  2. 31 13
      models/user_record.go
  3. 60 23
      services/activity.go

+ 41 - 6
models/activity_meeting_reminder.go

@@ -3,6 +3,7 @@ package models
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
 	"time"
 )
 
@@ -17,7 +18,7 @@ type CygxActivityMeetingReminder struct {
 	CompanyName string    `description:"公司名称"`
 }
 
-//记录日志
+// 记录日志
 type CygxActivityMeetingReminderLog struct {
 	Id          int       `orm:"column(id);pk"`
 	ActivityId  int       `description:"活动ID"`
@@ -30,7 +31,7 @@ type CygxActivityMeetingReminderLog struct {
 	Type        int       `description:"操作方式,1报名,2取消报名"`
 }
 
-//添加会议提醒信息
+// 添加会议提醒信息
 func AddActivityMeetingReminder(item *CygxActivityMeetingReminder) (lastId int64, err error) {
 	o, err := orm.NewOrm().Begin()
 	if err != nil {
@@ -89,7 +90,7 @@ func AddActivityMeetingReminder(item *CygxActivityMeetingReminder) (lastId int64
 	return
 }
 
-//获取用户报名数量
+// 获取用户报名数量
 func GetActivityMeetingReminderCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE is_cancel=0 AND user_id=? AND activity_id=? `
 	o := orm.NewOrm()
@@ -97,7 +98,7 @@ func GetActivityMeetingReminderCount(uid, activityId int) (count int, err error)
 	return
 }
 
-//取消会议提醒
+// 取消会议提醒
 func CancelActivityMeetingReminder(item *CygxActivityMeetingReminder) (lastId int64, err error) {
 	o, err := orm.NewOrm().Begin()
 	if err != nil {
@@ -147,7 +148,7 @@ func CancelActivityMeetingReminder(item *CygxActivityMeetingReminder) (lastId in
 	return
 }
 
-//获取某一用户的日程数量
+// 获取某一用户的日程数量
 func GetUserActivityMeetingReminderCount(uid int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder_log WHERE  user_id=? `
 	o := orm.NewOrm()
@@ -155,7 +156,7 @@ func GetUserActivityMeetingReminderCount(uid int) (count int, err error) {
 	return
 }
 
-//GetCygxReminderListByUser 获取设置会议提醒的人
+// GetCygxReminderListByUser 获取设置会议提醒的人
 func GetCygxReminderListByUser(condition string, pars []interface{}) (item []*CygxActivityMeetingReminder, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT *
@@ -165,3 +166,37 @@ func GetCygxReminderListByUser(condition string, pars []interface{}) (item []*Cy
 	_, err = o.Raw(sql, pars).QueryRows(&item)
 	return
 }
+
+// 修改是否推送消息状态
+func UpdateSendedMsgMeetingSendWxMsg(activityIds []int) (err error) {
+	lenarr := len(activityIds)
+	if lenarr == 0 {
+		return
+	}
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	condition = ` AND activity_id IN (` + utils.GetOrmInReplace(lenarr) + `)`
+	pars = append(pars, activityIds)
+	//修改设置消息提醒微信模版消息推送状态
+	sql := ` UPDATE cygx_activity_meeting_reminder SET  is_send_wx_msg= 1  WHERE  1=1   ` + condition
+	_, err = o.Raw(sql, pars).Exec()
+	if err != nil {
+		return
+	}
+
+	//修改设置预约外呼微信模版消息推送状态
+	sql = ` UPDATE cygx_activity_signup SET  is_send_wx_msg= 1  WHERE  1=1   ` + condition
+	_, err = o.Raw(sql, pars).Exec()
+	return
+}

+ 31 - 13
models/user_record.go

@@ -25,14 +25,14 @@ type UserRecord struct {
 	UserId         int       `description:"用户id"`
 }
 
-//根据openid获取用户关系
+// 根据openid获取用户关系
 func GetUserRecordByOpenId(openId string) (item *UserRecord, err error) {
 	sql := `SELECT * FROM user_record WHERE open_id=? `
 	err = orm.NewOrm().Raw(sql, openId).QueryRow(&item)
 	return
 }
 
-//根据openid解除绑定用户关系
+// 根据openid解除绑定用户关系
 func UnBindUserRecordByOpenid(openId string) (err error) {
 	o := orm.NewOrm()
 	msql := ` UPDATE user_record SET user_id = 0,bind_account="" WHERE open_id = ? `
@@ -40,14 +40,14 @@ func UnBindUserRecordByOpenid(openId string) (err error) {
 	return
 }
 
-//根据用户id和平台id获取用户关系
+// 根据用户id和平台id获取用户关系
 func GetUserRecordByUserId(userId, platform int) (item *UserRecord, err error) {
 	sql := `SELECT * FROM user_record WHERE user_id=? AND create_platform = ?`
 	err = orm.NewOrm().Raw(sql, userId, platform).QueryRow(&item)
 	return
 }
 
-//根据用户id和平台id获取用户关系
+// 根据用户id和平台id获取用户关系
 func GetUserRecordByUserIdByXzs(mobile string, platform int) (item *OpenIdList, err error) {
 	sql := `SELECT
 			cr.open_id,
@@ -63,14 +63,14 @@ func GetUserRecordByUserIdByXzs(mobile string, platform int) (item *OpenIdList,
 	return
 }
 
-//添加用户关系
+// 添加用户关系
 func AddUserRecord(record *UserRecord) (recordId int64, err error) {
 	o := orm.NewOrm()
 	recordId, err = o.Insert(record)
 	return
 }
 
-//根据openid绑定用户关系
+// 根据openid绑定用户关系
 func BindUserRecordByOpenid(userId int, openId, bindAccount string) (err error) {
 	o := orm.NewOrm()
 	msql := " UPDATE user_record SET user_id = ?,bind_account=? WHERE open_id = ? "
@@ -78,7 +78,7 @@ func BindUserRecordByOpenid(userId int, openId, bindAccount string) (err error)
 	return
 }
 
-//修改用户微信信息
+// 修改用户微信信息
 func ModifyUserRecordInfo(openId, nickName, headimgUrl, city, province, country, sessionKey string, sex, userId int) (err error) {
 	o := orm.NewOrm()
 	sql := `UPDATE user_record SET nick_name=?,headimgurl=?,sex=?,city=?,province=?,country=?,session_key=? WHERE user_id=? and open_id=? `
@@ -86,7 +86,7 @@ func ModifyUserRecordInfo(openId, nickName, headimgUrl, city, province, country,
 	return
 }
 
-//修改用户微信信息
+// 修改用户微信信息
 func ModifyUserRecordByDetail(openId, unionId, nickName, headimgUrl, city, province, country string, sex, userId int) (err error) {
 	o := orm.NewOrm()
 	sql := `UPDATE user_record SET union_id=?, nick_name=?,headimgurl=?,sex=?,city=?,province=?,country=? WHERE user_id=? and open_id=? `
@@ -94,7 +94,7 @@ func ModifyUserRecordByDetail(openId, unionId, nickName, headimgUrl, city, provi
 	return
 }
 
-//修改用户微信信息
+// 修改用户微信信息
 func ModifyUserRecordSessionKey(openId, sessionKey string) (err error) {
 	o := orm.NewOrm()
 	sql := `UPDATE user_record SET session_key=? WHERE open_id=? `
@@ -102,7 +102,7 @@ func ModifyUserRecordSessionKey(openId, sessionKey string) (err error) {
 	return
 }
 
-//根据用户id和平台id获取用户关系
+// 根据用户id和平台id获取用户关系
 func GetUserRecordByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
 
 	var sql string
@@ -119,14 +119,14 @@ func GetUserRecordByMobile(platform int, bindAccount string) (item *OpenIdList,
 	return
 }
 
-//获取该用户第一个的 三方信息(微信头像信息)
+// 获取该用户第一个的 三方信息(微信头像信息)
 func GetUserThirdRecordByUserId(userId int) (item *UserRecord, err error) {
 	sql := `SELECT * FROM user_record WHERE user_id = ? order by user_record_id asc`
 	err = orm.NewOrm().Raw(sql, userId).QueryRow(&item)
 	return
 }
 
-//根据手机号获取用户的openid
+// 根据手机号获取用户的openid
 func GetUserRecordListByMobile(platform int, bindAccount string) (items []*OpenIdList, err error) {
 	var sql string
 	//if utils.RunMode == "release" {
@@ -144,7 +144,7 @@ func GetUserRecordListByMobile(platform int, bindAccount string) (items []*OpenI
 	return
 }
 
-//获取单个用户openid
+// 获取单个用户openid
 func GetOpenIdDetailByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
 	o := orm.NewOrm()
 	var sql string
@@ -166,3 +166,21 @@ func GetOpenIdByUserIds(ids string) (item []*OpenIdList, err error) {
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
+
+// 根据手机号获取用户的openid
+func GetUserRecordListByMobileArr(bindAccount []string) (items []*OpenIdList, err error) {
+	lenarr := len(bindAccount)
+	if lenarr == 0 {
+		return
+	}
+	var condition string
+	var pars []interface{}
+	condition = ` AND u.bind_account IN (` + utils.GetOrmInReplace(lenarr) + `)`
+	pars = append(pars, bindAccount)
+	sql := `SELECT cr.open_id,u.user_id
+			FROM user_record  as u 
+			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id 
+			WHERE u.create_platform=4 ` + condition
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 60 - 23
services/activity.go

@@ -83,48 +83,85 @@ func SendActivityBeginMsg(cont context.Context) (err error) {
 	return
 }
 
+//func init() {
+//	SendActivityBeginMsgMeeting()
+//}
+
 // 推送会议开始消息提醒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)
-	listActivity, err := models.GetActivitySendMsgListAllMeeting(endDate)
-	if err != nil {
-		fmt.Println("GetActivitySendMsgListAll Err:", err.Error())
+	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 signupIds string
 	var remark = "点击查看活动详情"
+
+	var activityIds []int
+	//同一时间举办的活动不多所以这里循环查询
 	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
+		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)
-		openIdList = append(openIdList, openIdItem)
+		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 = "--"
-		first = "将在15分钟后开始"
-		SendWxMsgWithFrequency(first, v.ActivityName, reserveResults, v.ActivityTimeText, "--", remark, openIdList, v.ActivityId)
-	}
-	if len(signupIds) == 0 {
-		return
-	}
-	signupIds = strings.TrimRight(signupIds, ",")
-	err = models.UPdateSendedMsgMeetingStatus(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())
+		keyword2 = "将在15分钟后开始"
+		SendWxMsgWithFrequency(keyword2, v.ActivityName, reserveResults, v.ActivityTimeText, "--", remark, openIdList, v.ActivityId)
 	}
+	err = models.UpdateSendedMsgMeetingSendWxMsg(activityIds)
 	return
 }