xingzai 2 yıl önce
ebeveyn
işleme
c3271d4cb7
4 değiştirilmiş dosya ile 107 ekleme ve 13 silme
  1. 6 3
      controllers/activity.go
  2. 20 10
      models/user_record.go
  3. 46 0
      services/activity.go
  4. 35 0
      services/wx_template_msg.go

+ 6 - 3
controllers/activity.go

@@ -870,11 +870,14 @@ func (this *ActivityController) SignupAdd() {
 			resp.HaqveJurisdiction = true
 			//1:预约外呼 、2:设置会议提醒 、 3:预约纪要 、4:活动报名
 			if signupType == 1 {
-				resp.PopupMsg = item.CountryCode + "-" + item.Mobile + "<br/>预约成功,已加入您的活动日程<br/><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
+				go services.ActivityUserRemind(user, activityInfo, 1)
+				resp.PopupMsg = "<b>预约成功,已加入您的活动日程</b><br/><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
 			} else if signupType == 4 {
-				resp.PopupMsg = item.CountryCode + "-" + item.Mobile + "<br/>报名成功,请复制腾讯会议号打开腾讯会议app参会<br/><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
+				go services.ActivityUserRemind(user, activityInfo, 4)
+				resp.PopupMsg = "<b>报名成功,请复制腾讯会议号打开腾讯会议app参会</b><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
 			} else {
-				resp.PopupMsg = "报名成功,已加入您的活动日程<br/><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
+				go services.ActivityUserRemind(user, activityInfo, 4)
+				resp.PopupMsg = "<b>报名成功,已加入您的活动日程</b><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
 			}
 		}
 

+ 20 - 10
models/user_record.go

@@ -25,29 +25,29 @@ type UserRecord struct {
 	UserId         int       `description:"用户id"`
 }
 
-//添加
+// 添加
 func AddUserRecord(item *UserRecord) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)
 	return
 }
 
-//根据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获取用户关系
-//4是查研观向   create_platform
+// 根据openid获取用户关系
+// 4是查研观向   create_platform
 func GetUserRecordByUnionId(unionId string) (item *UserRecord, err error) {
 	sql := `SELECT * FROM user_record WHERE union_id=? AND create_platform = 4  `
 	err = orm.NewOrm().Raw(sql, unionId).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 = ? `
@@ -60,7 +60,7 @@ type OpenIdList struct {
 	UserId int
 }
 
-//根据用户id和平台id获取用户关系
+// 根据用户id和平台id获取用户关系
 func GetUserRecordByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
 
 	var sql string
@@ -86,14 +86,14 @@ func GetWxOpenIdByMobileList(mobile string) (items []*OpenIdList, err error) {
 	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 BindUserRecordByOpenid(userId int, openId, bindAccount string) (err error) {
 	o := orm.NewOrm()
 	msql := " UPDATE user_record SET user_id = ?,bind_account=? WHERE open_id = ? "
@@ -101,7 +101,7 @@ func BindUserRecordByOpenid(userId int, openId, bindAccount string) (err error)
 	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=? `
@@ -109,10 +109,20 @@ 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=? `
 	_, err = o.Raw(sql, sessionKey, openId).Exec()
 	return
 }
+
+// 根据手机号获取用户的openid
+func GetUserRecordListByMobile(platform int, bindAccount string) (items []*OpenIdList, err error) {
+	var sql string
+	sql = `SELECT cr.open_id,user_id FROM user_record  as u 
+			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id 
+			WHERE create_platform=? AND bind_account IN (` + bindAccount + `)`
+	_, err = orm.NewOrm().Raw(sql, platform).QueryRows(&items)
+	return
+}

+ 46 - 0
services/activity.go

@@ -1073,3 +1073,49 @@ func GetActivityVideoDetailById(user *models.WxUserItem, videoId int) (industryV
 	AuthInfo = au
 	return
 }
+
+// 用户活动操作行为,模板消息推送
+func ActivityUserRemind(user *models.WxUserItem, activityDetail *models.ActivityDetail, source int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("同步策略平台阅读数据失败", 2)
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetCeLueArticlePv ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+		}
+	}()
+	countUser, err := models.GetUserRemind(user.UserId)
+	if err != nil {
+		return err
+	}
+	if countUser == 0 {
+		return err
+	}
+	var sourceMsg string
+	if source == 1 {
+		sourceMsg = "预约外呼"
+	} else if source == 2 {
+		sourceMsg = "设置会议提醒"
+	} else if source == 3 {
+		sourceMsg = "预约纪要"
+	} else if source == 4 {
+		sourceMsg = "活动报名"
+	}
+
+	//获取销售手机号
+	sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+	if sellerItemQy != nil {
+		openIdList, err := models.GetUserRecordListByMobile(4, sellerItemQy.Mobile)
+		if err != nil {
+			fmt.Println(err)
+			return err
+		}
+		var keyword1 string
+		var keyword2 string
+		keyword1 = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:", sourceMsg)
+		keyword2 = activityDetail.ActivityName
+		SendWxMsgWithActivityUserRemind(keyword1, keyword2, openIdList, activityDetail.ActivityId)
+	}
+	return
+}

+ 35 - 0
services/wx_template_msg.go

@@ -320,3 +320,38 @@ func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.
 	}
 	return
 }
+
+// 发送用户操作活动消息提醒
+func SendWxMsgWithActivityUserRemind(keyWord1, keyWord2 string, openIdList []*models.OpenIdList, activityId int) (err error) {
+	var msg string
+	defer func() {
+		if err != nil {
+			go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
+			go utils.SendAlarmMsg(fmt.Sprint("发送用户操作活动消息提醒,文章ID:", activityId), 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
+	}
+	var first string
+	first = keyWord1
+	keyword1 := keyWord2
+	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
+	templateId := utils.WxMsgTemplateIdArticleUserRemind
+	sendMap := make(map[string]interface{})
+	sendData := make(map[string]interface{})
+	sendMap["template_id"] = templateId
+	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "activityPages/activityDetail/activityDetail?id=" + strconv.Itoa(activityId)}
+	sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
+	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
+	sendMap["data"] = sendData
+	WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD)
+	return
+}