Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hongze_cygx into cygx_9.1

xingzai 2 years ago
parent
commit
589b78019b

+ 6 - 1
controllers/activity.go

@@ -3814,7 +3814,10 @@ func (this *ActivityCoAntroller) SpecialSignupAdd() {
 			}
 
 			//用户专项调研操作行为,模板消息推送
-			go services.SpecialActivityUserRemind(user, activityInfo, 1)
+			//go services.SpecialActivityUserRemind(user, activityInfo, 1)
+
+			//用户相关行为,给对应销售发模板消息
+			go services.ActivitySpecialUserRmind(user, activityId, 1)
 		} else {
 			err = models.DeleteCygxActivitySpecialSignup(user.UserId, activityId)
 			if err != nil {
@@ -4554,6 +4557,7 @@ func (this *ActivityCoAntroller) ActivityVoiceHistoryAdd() {
 			br.ErrMsg = "更新失败,Err:" + err.Error()
 			return
 		}
+		go services.ActivityVideoUserRmind(user, activityId, 2)
 	}
 	br.Ret = 200
 	br.Success = true
@@ -4633,6 +4637,7 @@ func (this *ActivityCoAntroller) ActivityVideoHistoryAdd() {
 		br.ErrMsg = "更新失败,Err:" + err.Error()
 		return
 	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"

+ 2 - 0
controllers/activity_special.go

@@ -230,6 +230,7 @@ func (this *ActivitySpecialCoAntroller) SpecialTripAdd() {
 				br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
 				return
 			}
+			go services.ActivitySpecialUserRmind(user, activityId, 2)
 			//判断是删除还是添加
 			if total == 0 {
 				//获取销售信息
@@ -258,6 +259,7 @@ func (this *ActivitySpecialCoAntroller) SpecialTripAdd() {
 					br.ErrMsg = "操作失败,Err:" + err.Error()
 					return
 				}
+
 				//SignupStatus  int    `description:"返回状态:1:成功 、2 :人数已满 、3:调研次数已用完、 4:超时"`
 			} else {
 				updateParams := make(map[string]interface{})

+ 1 - 0
controllers/micro_roadshow.go

@@ -303,6 +303,7 @@ func (this *MicroRoadShowController) VideoHistoryAdd() {
 				return
 			}
 		}
+		go services.MicroRoadshowVideoUserRmind(user, videoId)
 	} else if sourceType == 2 {
 		err = services.AddActivityVideoHistory(user, videoId)
 		if err != nil {

+ 1 - 1
controllers/report.go

@@ -15,7 +15,7 @@ import (
 	"time"
 )
 
-//报告
+// 报告
 type ReportController struct {
 	BaseAuthController
 }

+ 2 - 2
models/activity_signup.go

@@ -561,7 +561,7 @@ func AddCygxActivityRestrictSignup(item *CygxActivityRestrictSignup) (err error)
 //获取列表信息根据手机号分组
 func GetCygxActivitySignupByMobileList(condition string) (items []*CygxActivitySignup, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM cygx_activity_signup  WHERE  1= 1 ` + condition + `  GROUP BY mobile  `
+	sql := `SELECT * FROM cygx_activity_signup_detail  WHERE  1= 1 ` + condition + `  GROUP BY mobile  `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -569,7 +569,7 @@ func GetCygxActivitySignupByMobileList(condition string) (items []*CygxActivityS
 //修改用户报名的相关信息
 func UpdateCygxActivitySignup(wxUser *WxUserItem) (err error) {
 	o := orm.NewOrm()
-	sql := `UPDATE cygx_activity_signup SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE  mobile=? `
+	sql := `UPDATE cygx_activity_signup_detail SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE  mobile=? `
 	_, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
 	return
 }

+ 22 - 0
models/activity_video_history.go

@@ -27,3 +27,25 @@ func AddCygxActivityVideoHistory(item *CygxActivityVideoHistory) (err error) {
 	_, err = o.Insert(item)
 	return
 }
+
+//获取列表信息根据手机号分组
+func GetActivityVideoHistoryByMobileList(condition string) (items []*CygxActivityVideoHistory, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity_video_history  WHERE 1 =1  ` + condition + `  GROUP BY user_id  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//修改用户浏览活动视频的相关信息
+func UpdateCygxActivityVideoHistory(wxUser *WxUserItem) (err error) {
+	o := orm.NewOrm()
+	var sql string
+	if wxUser.Mobile != "" {
+		sql = `UPDATE cygx_activity_video_history SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
+		_, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
+	} else if wxUser.Email != "" {
+		sql = `UPDATE cygx_activity_video_history SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE email=? `
+		_, err = o.Raw(sql, wxUser.Mobile, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Email).Exec()
+	}
+	return
+}

+ 26 - 4
models/activity_voice_history.go

@@ -15,9 +15,9 @@ type CygxActivityVoiceHistory struct {
 	CompanyId   int       `description:"公司id"`
 	CompanyName string    `description:"公司名称"`
 	RealName    string    `description:"用户实际名称"`
-	SellerName      string    `description:"所属销售"`
-	PlaySeconds     string    `description:"播放时间 单位s"`
-	ModifyTime      time.Time `description:"视频修改时间"`
+	SellerName  string    `description:"所属销售"`
+	PlaySeconds string    `description:"播放时间 单位s"`
+	ModifyTime  time.Time `description:"视频修改时间"`
 }
 
 //添加
@@ -39,4 +39,26 @@ func UpdateLastCygxActivityVoiceHistory(playSeconds string, lastId int) (err err
 	sql := ` UPDATE cygx_activity_voice_history SET play_seconds =? WHERE id=? `
 	_, err = o.Raw(sql, playSeconds, lastId).Exec()
 	return
-}
+}
+
+//获取列表信息根据手机号分组
+func GetActivityVoiceHistoryByMobileList(condition string) (items []*CygxActivityVoiceHistory, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity_voice_history  WHERE 1 =1  ` + condition + `  GROUP BY user_id  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//修改用户浏览活动音频的相关信息
+func UpdateCygxActivityVoiceHistory(wxUser *WxUserItem) (err error) {
+	o := orm.NewOrm()
+	var sql string
+	if wxUser.Mobile != "" {
+		sql = `UPDATE cygx_activity_voice_history SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
+		_, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
+	} else if wxUser.Email != "" {
+		sql = `UPDATE cygx_activity_voice_history SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE email=? `
+		_, err = o.Raw(sql, wxUser.Mobile, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Email).Exec()
+	}
+	return
+}

+ 4 - 4
models/article_collect.go

@@ -74,7 +74,7 @@ type ArticleCollectList struct {
 
 func GetCygxArticleCollectList(condition string) (items []*CygxArticleCollect, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM cygx_article_collect  WHERE 1 =1   ` + condition + ` GROUP BY user_id  `
+	sql := `SELECT * FROM cygx_article_collect  WHERE 1 =1  AND article_id > 0  ` + condition + ` GROUP BY user_id  `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -226,7 +226,7 @@ WHERE
 	c.user_id =? 
 	AND vc.activity_id =? 
 	AND c.activity_voice_id = vc.activity_voice_id`
-	err = orm.NewOrm().Raw(sql, userId, activityId,).QueryRow(&count)
+	err = orm.NewOrm().Raw(sql, userId, activityId).QueryRow(&count)
 
 	return
 }
@@ -241,6 +241,6 @@ WHERE
 	c.user_id =? 
 	AND vd.activity_id =? 
 	AND c.activity_video_id = vd.video_id`
-	err = orm.NewOrm().Raw(sql, userId, activityId,).QueryRow(&count)
+	err = orm.NewOrm().Raw(sql, userId, activityId).QueryRow(&count)
 	return
-}
+}

+ 10 - 0
models/company_interaction_num.go

@@ -17,6 +17,11 @@ type CygxCompanyInteractionNum struct {
 	ActivityOnLineNum   int       `description:"线上活动报名次数"`
 	ActivityOfficeNum   int       `description:"线下活动报名次数"`
 	ActivityNum         int       `description:"活动报名次数"`
+	TripNum             int       `description:"专项产业调研数量"`
+	RoadshowVideoNum    int       `description:"产业视频播放量"`
+	ActivityVideoNum    int       `description:"活动视频播放量"`
+	ActivityVoiceNum    int       `description:"活动音频播放量"`
+	RoadshowNum         int       `description:"路演播放总数量"`
 	CreateTime          time.Time `description:"创建时间"`
 	ModifyTime          time.Time `description:"更新时间"`
 }
@@ -41,6 +46,11 @@ func UpdateCygxCompanyInteractionNum(item *CygxCompanyInteractionNum) (err error
 	updateParams["ActivityOnLineNum"] = item.ActivityOnLineNum
 	updateParams["ActivityOfficeNum"] = item.ActivityOfficeNum
 	updateParams["ActivityNum"] = item.ActivityNum
+	updateParams["TripNum"] = item.TripNum
+	updateParams["RoadshowVideoNum"] = item.RoadshowVideoNum
+	updateParams["ActivityVideoNum"] = item.ActivityVideoNum
+	updateParams["ActivityVoiceNum"] = item.ActivityVoiceNum
+	updateParams["RoadshowNum"] = item.RoadshowNum
 	updateParams["CreateTime"] = time.Now()
 	updateParams["ModifyTime"] = time.Now()
 	whereParam := map[string]interface{}{"company_id": item.CompanyId}

+ 28 - 15
models/micro_roadshow.go

@@ -13,6 +13,34 @@ type MicroRoadShowListResp struct {
 	List   []*MicroRoadShowPageList
 }
 
+type CygxMicroRoadshowVideo struct {
+	VideoId             int       `orm:"column(video_id);pk"description:"微路演视频id"`
+	VideoName           string    `description:"视频名称"`
+	ChartPermissionId   int       `description:"行业Id"`
+	ChartPermissionName string    `description:"行业名称"`
+	IndustryId          int       `description:"产业id"`
+	IndustryName        string    `description:"产业名称"`
+	PublishStatus       int       `description:"发布状态 1发布 0没有"`
+	ModifyDate          string    `description:"更新时间"`
+	PublishDate         time.Time `description:"发布时间"`
+	VideoDuration       string    `description:"视频时长"`
+	VideoCounts         int       `description:"播放量"`
+	VideoUrl            string    `description:"视频地址"`
+	CreateTime          string    `description:"创建时间"`
+	ImgUrl              string    `description:"视频封面图"`
+	ShareImgUrl         string    `description:"视频分享图"`
+	DetailImgUrl        string    `description:"产业详情页背景图"`
+	CommentNum          int       `description:"留言总数"`
+	IsSendWxMsg         int       `description:"是否推送过微信模板消息,1是,0:否"`
+}
+
+func GetMicroRoadshowVideoByVideoId(videoId int) (item *CygxMicroRoadshowVideo, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * from cygx_micro_roadshow_video where video_id = ? `
+	err = o.Raw(sql, videoId).QueryRow(&item)
+	return
+}
+
 // MicroRoadShowPageList 微路演列表
 type MicroRoadShowPageList struct {
 	Id                  int    `description:"音视频ID"`
@@ -283,21 +311,6 @@ type AddVideoHistoryReq struct {
 	SourceType  int `description:"视频来源: 1-微路演; 2-活动 (不传默认为1)"`
 }
 
-type CygxMicroRoadshowVideoHistory struct {
-	Id          int       `orm:"column(id);pk"description:"微路演视频浏览记录表id"`
-	VideoId     int       `description:"微路演视频id"`
-	UserId      int       `description:"用户id"`
-	Mobile      string    `description:"手机号"`
-	Email       string    `description:"邮箱"`
-	CompanyId   int       `description:"公司Id"`
-	CompanyName string    `description:"公司名称"`
-	RealName    string    `description:"用户实际名称"`
-	SellerName  string    `description:"所属销售"`
-	PlaySeconds string    `description:"播放时间 单位s"`
-	CreateTime  time.Time `description:"视频创建时间"`
-	ModifyTime  time.Time `description:"视频修改时间"`
-}
-
 func GetLastCygxMicroRoadshowVideoHistory(videoId, userId int) (item *CygxMicroRoadshowVideoHistory, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT * FROM cygx_micro_roadshow_video_history WHERE video_id=? AND user_id=? ORDER BY create_time DESC limit 1 `

+ 43 - 0
models/micro_roadshow_video_history.go

@@ -0,0 +1,43 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxMicroRoadshowVideoHistory struct {
+	Id          int       `orm:"column(id);pk"description:"微路演视频浏览记录表id"`
+	VideoId     int       `description:"微路演视频id"`
+	UserId      int       `description:"用户id"`
+	Mobile      string    `description:"手机号"`
+	Email       string    `description:"邮箱"`
+	CompanyId   int       `description:"公司Id"`
+	CompanyName string    `description:"公司名称"`
+	RealName    string    `description:"用户实际名称"`
+	SellerName  string    `description:"所属销售"`
+	PlaySeconds string    `description:"播放时间 单位s"`
+	CreateTime  time.Time `description:"视频创建时间"`
+	ModifyTime  time.Time `description:"视频修改时间"`
+}
+
+//获取列表信息根据手机号分组
+func GetMicroRoadshowVideoHistoryByMobileList(condition string) (items []*CygxMicroRoadshowVideoHistory, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_micro_roadshow_video_history  WHERE 1 =1  ` + condition + `  GROUP BY user_id  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//修改用户浏览产业视频的相关信息
+func UpdateCygxMicroRoadshowVideoHistory(wxUser *WxUserItem) (err error) {
+	o := orm.NewOrm()
+	var sql string
+	if wxUser.Mobile != "" {
+		sql = `UPDATE cygx_micro_roadshow_video_history SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
+		_, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
+	} else if wxUser.Email != "" {
+		sql = `UPDATE cygx_micro_roadshow_video_history SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE email=? `
+		_, err = o.Raw(sql, wxUser.Mobile, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Email).Exec()
+	}
+	return
+}

+ 3 - 3
models/search_key_word.go

@@ -42,7 +42,7 @@ func GetSearchKeyWordTop() (items []*CygxSearchKeyWord, err error) {
 
 func GetCygxSearchKeyWordList(condition string) (items []*CygxSearchKeyWord, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM cygx_search_key_word   WHERE 1 = 1 ` + condition + `  GROUP BY user_id  `
+	sql := `SELECT * FROM cygx_search_key_word_log   WHERE 1 = 1 ` + condition + `  GROUP BY user_id  `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -52,10 +52,10 @@ func UpdateCygxSearchKeyWord(wxUser *WxUserItem) (err error) {
 	o := orm.NewOrm()
 	var sql string
 	if wxUser.Mobile != "" {
-		sql = `UPDATE cygx_search_key_word SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
+		sql = `UPDATE cygx_search_key_word_log SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
 		_, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
 	} else if wxUser.Email != "" {
-		sql = `UPDATE cygx_search_key_word SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE email=? `
+		sql = `UPDATE cygx_search_key_word_log SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE email=? `
 		_, err = o.Raw(sql, wxUser.Mobile, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Email).Exec()
 	}
 	return

+ 1 - 1
models/send_company_user.go

@@ -338,7 +338,7 @@ func GetCompanyFreezeAndLoss(createTime string) (items []*WxUserOpLogResp, err e
 //获取指定时间内被移动的用户
 func GetWxUserOpLogList(startDate, endDate string) (items []*WxUserOpLogResp, err error) {
 	o := orm.NewOrm()
-	sql := ` SELECT company_id,user_id,mobile FROM wx_user_op_log WHERE  log_type IN ('move','add') AND create_time >=  '` + startDate + `' AND create_time <=  '` + endDate + `'   GROUP BY user_id `
+	sql := ` SELECT company_id,user_id,mobile FROM wx_user_op_log WHERE  log_type IN ('move','add') AND create_time >=  '` + startDate + `' AND create_time <=  '` + endDate + `'    GROUP BY user_id `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }

+ 10 - 0
models/user_interaction_num.go

@@ -17,6 +17,11 @@ type CygxUserInteractionNum struct {
 	ActivityOnLineNum   int       `description:"线上活动报名次数"`
 	ActivityOfficeNum   int       `description:"线下活动报名次数"`
 	ActivityNum         int       `description:"活动报名次数"`
+	TripNum             int       `description:"专项产业调研数量"`
+	RoadshowVideoNum    int       `description:"产业视频播放量"`
+	ActivityVideoNum    int       `description:"活动视频播放量"`
+	ActivityVoiceNum    int       `description:"活动音频播放量"`
+	RoadshowNum         int       `description:"路演播放总数量"`
 	CreateTime          time.Time `description:"创建时间"`
 	ModifyTime          time.Time `description:"更新时间"`
 }
@@ -41,6 +46,11 @@ func UpdateCygxUserInteractionNum(item *CygxUserInteractionNum) (err error) {
 	updateParams["ActivityOnLineNum"] = item.ActivityOnLineNum
 	updateParams["ActivityOfficeNum"] = item.ActivityOfficeNum
 	updateParams["ActivityNum"] = item.ActivityNum
+	updateParams["TripNum"] = item.TripNum
+	updateParams["RoadshowVideoNum"] = item.RoadshowVideoNum
+	updateParams["ActivityVideoNum"] = item.ActivityVideoNum
+	updateParams["ActivityVoiceNum"] = item.ActivityVoiceNum
+	updateParams["RoadshowNum"] = item.RoadshowNum
 	updateParams["CreateTime"] = time.Now()
 	updateParams["ModifyTime"] = time.Now()
 	whereParam := map[string]interface{}{"user_id": item.UserId}

+ 12 - 9
models/user_record.go

@@ -129,14 +129,17 @@ func GetUserThirdRecordByUserId(userId int) (item *UserRecord, err error) {
 //根据手机号获取用户的openid
 func GetUserRecordListByMobile(platform int, bindAccount string) (items []*OpenIdList, err error) {
 	var sql string
-	if utils.RunMode == "release" {
-		sql = `SELECT cr.open_id,user_id FROM user_record  as u 
+	//if utils.RunMode == "release" {
+	//	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 + `)`
+	//} else {
+	//	platform = 1
+	//	sql = `SELECT open_id,user_id FROM	user_record  WHERE create_platform =? AND bind_account IN (` + bindAccount + `)`
+	//}
+	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 + `)`
-	} else {
-		platform = 1
-		sql = `SELECT open_id,user_id FROM	user_record  WHERE create_platform =? AND bind_account IN (` + bindAccount + `)`
-	}
 	_, err = orm.NewOrm().Raw(sql, platform).QueryRows(&items)
 	return
 }
@@ -159,7 +162,7 @@ func GetOpenIdByUserIds(ids string) (item []*OpenIdList, err error) {
 	sql = `SELECT cr.open_id,wu.user_id FROM user_record  as u 
 			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id 
 			INNER JOIN wx_user AS wu ON wu.mobile = u.bind_account 
-			WHERE create_platform=4 AND u.user_id IN (`+ids+`)`
-	_,err = o.Raw(sql).QueryRows(&item)
+			WHERE create_platform=4 AND u.user_id IN (` + ids + `)`
+	_, err = o.Raw(sql).QueryRows(&item)
 	return
-}
+}

+ 8 - 0
models/wx_user.go

@@ -512,6 +512,10 @@ type CygxUserInteractionNumDetail struct {
 	KeyWordNum          int    `description:"搜索关键词"`
 	OnLineNum           int    `description:"线上互动活动"`
 	OfficeNum           int    `description:"线下互动活动"`
+	TripNum             int    `description:"专项产业调研数量"`
+	RoadshowVideoNum    int    `description:"产业视频播放量"`
+	ActivityVideoNum    int    `description:"活动视频播放量"`
+	ActivityVoiceNum    int    `description:"活动音频播放量"`
 	PackageType         int    `description:"套餐类型,0:无,1:大套餐,2:小套餐"`
 	TryStage            int    `description:"试用客户子标签:0全部、1未分类、2 推进、3 跟踪、4 预备"`
 }
@@ -532,6 +536,10 @@ func GetCygxCompanyUserUserInteraction(userIds string) (items []*CygxUserInterac
 					 AND t.activity_type = 1  AND h.do_fail_type = 0 ) AS on_line_num,
 			( SELECT COUNT( 1 ) FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id   WHERE h.mobile = u.mobile  
 					  AND t.activity_type = 0 AND h.do_fail_type = 0 ) AS office_num,
+			( SELECT COUNT( 1 ) FROM cygx_activity_special_trip AS h INNER JOIN cygx_activity_special AS a ON a.activity_id = h.activity_id WHERE h.mobile = u.mobile  AND h.is_cancel = 0 ) AS trip_num,
+						( SELECT COUNT( 1 ) FROM cygx_micro_roadshow_video_history AS h  INNER JOIN cygx_micro_roadshow_video as v ON v.video_id = h.video_id WHERE  h.mobile = u.mobile  ) AS roadshow_video_num,
+						( SELECT COUNT( 1 ) FROM cygx_activity_video_history AS h  INNER JOIN cygx_activity_video as v ON v.video_id = h.video_id WHERE  h.mobile = u.mobile  ) AS activity_video_num,
+						( SELECT COUNT( 1 ) FROM cygx_activity_voice_history AS h  INNER JOIN cygx_activity_voice as v ON v.activity_voice_id = h.activity_voice_id WHERE  h.mobile = u.mobile  ) AS activity_voice_num,
 			(
 			SELECT
 				GROUP_CONCAT( DISTINCT man.industry_name SEPARATOR ',' ) 

+ 85 - 0
services/activity.go

@@ -1704,3 +1704,88 @@ func GetActivityVideoResp(mapActivityId []int) (mapItem map[int]*models.CygxActi
 	mapItem = mapActivityVideo
 	return
 }
+
+//用户音视频回放操作操作行为,模板消息推送
+func ActivityVideoUserRmind(user *models.WxUserItem, activityId, fileType int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("用户音视频回放操作操作行为,模板消息推送失败"+err.Error(), 2)
+		}
+	}()
+	countUser, err := models.GetUserRemind(user.UserId)
+	if err != nil {
+		return err
+	}
+	if countUser == 0 {
+		return err
+	}
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	//获取销售手机号
+	sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+	if sellerItemQy != nil {
+		openIdList, e := models.GetWxOpenIdByMobileList(sellerItemQy.Mobile)
+		if e != nil {
+			err = errors.New("GetSellerByAdminId, Err: " + e.Error())
+			return
+		}
+
+		//TripStatus            int    `description:"行程进行状态 1:预报名,2:确定行程"`
+		if fileType == 1 {
+			activityInfo, e := models.GetCygxActivityVideoByActivityId(activityId)
+			if e != nil {
+				err = errors.New("GetCygxActivitySpecialDetailById, Err: " + e.Error())
+				return
+			}
+			if activityInfo == nil {
+				return
+			}
+			keyword1 = activityInfo.VideoName
+			first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:播放视频")
+		} else {
+			activityInfo, e := models.GetCygxActivityVoiceByActivityId(activityId)
+			if e != nil {
+				err = errors.New("GetCygxActivitySpecialDetailById, Err: " + e.Error())
+				return
+			}
+			if activityInfo == nil {
+				return
+			}
+			keyword1 = activityInfo.VoiceName
+			first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:播放音频")
+		}
+
+		keyword2 = "__"
+		remark = "点击查看活动详情"
+		openIdArr := make([]string, 0)
+		for _, v := range openIdList {
+			openIdArr = append(openIdArr, v.OpenId)
+		}
+		redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
+		sendInfo := new(SendWxTemplate)
+		sendInfo.First = first
+		sendInfo.Keyword1 = keyword1
+		sendInfo.Keyword2 = keyword2
+		sendInfo.Keyword3 = keyword3
+		sendInfo.Keyword4 = keyword4
+		sendInfo.Remark = remark
+		sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
+		sendInfo.RedirectUrl = redirectUrl
+		sendInfo.RedirectTarget = 3
+		sendInfo.Resource = strconv.Itoa(activityId)
+		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+		sendInfo.OpenIdArr = openIdArr
+		err = PublicSendTemplateMsg(sendInfo)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 76 - 0
services/activity_special_trip.go

@@ -2,8 +2,10 @@ package services
 
 import (
 	"errors"
+	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
+	"strconv"
 	"time"
 )
 
@@ -125,3 +127,77 @@ func GetTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *model
 	}
 	return
 }
+
+//用户搜专项调研操作操作行为,模板消息推送
+func ActivitySpecialUserRmind(user *models.WxUserItem, activityId, TripStatus int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("用户搜专项调研操作操作行为,模板消息推送失败"+err.Error(), 2)
+		}
+	}()
+	countUser, err := models.GetUserRemind(user.UserId)
+	if err != nil {
+		return err
+	}
+	if countUser == 0 {
+		return err
+	}
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	//获取销售手机号
+	sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+	if sellerItemQy != nil {
+		openIdList, e := models.GetWxOpenIdByMobileList(sellerItemQy.Mobile)
+		if e != nil {
+			err = errors.New("GetSellerByAdminId, Err: " + e.Error())
+			return
+		}
+		activityInfo, e := models.GetCygxActivitySpecialDetailById(user.UserId, activityId)
+		if e != nil {
+			err = errors.New("GetCygxActivitySpecialDetailById, Err: " + e.Error())
+			return
+		}
+		if activityInfo == nil {
+			return
+		}
+		//TripStatus            int    `description:"行程进行状态 1:预报名,2:确定行程"`
+		if TripStatus == 1 {
+			first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:专项调研预报名")
+		} else {
+			first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:活动报名")
+		}
+		keyword1 = activityInfo.ResearchTheme
+		keyword2 = "__"
+		remark = "点击查看活动详情"
+		openIdArr := make([]string, 0)
+		for _, v := range openIdList {
+			openIdArr = append(openIdArr, v.OpenId)
+		}
+		redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
+		sendInfo := new(SendWxTemplate)
+		sendInfo.First = first
+		sendInfo.Keyword1 = keyword1
+		sendInfo.Keyword2 = keyword2
+		sendInfo.Keyword3 = keyword3
+		sendInfo.Keyword4 = keyword4
+		sendInfo.Remark = remark
+		sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
+		sendInfo.RedirectUrl = redirectUrl
+		sendInfo.RedirectTarget = 3
+		sendInfo.Resource = strconv.Itoa(activityId)
+		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+		sendInfo.OpenIdArr = openIdArr
+		err = PublicSendTemplateMsg(sendInfo)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 1 - 1
services/cygx_activity_video_history.go

@@ -40,6 +40,6 @@ func AddActivityVideoHistory(user *models.WxUserItem, activityId int) (err error
 	if err != nil {
 		return
 	}
-
+	go ActivityVideoUserRmind(user, activityId, 1)
 	return
 }

+ 62 - 0
services/keyword.go

@@ -1,6 +1,7 @@
 package services
 
 import (
+	"errors"
 	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
@@ -59,5 +60,66 @@ func AddUserSearchLog(user *models.WxUserItem, keyWord string, source int) (err
 	item.RealName = user.RealName
 	item.Source = source
 	_, err = models.AddSearchKeyWordLog(item)
+	go SearchKeywordUserRmind(user, keyWord)
+	return
+}
+
+//用户搜索操作操作行为,模板消息推送
+func SearchKeywordUserRmind(user *models.WxUserItem, keyWord string) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("用户搜索操作操作行为,模板消息推送失败"+err.Error(), 2)
+		}
+	}()
+	countUser, err := models.GetUserRemind(user.UserId)
+	if err != nil {
+		return err
+	}
+	if countUser == 0 {
+		return err
+	}
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	//获取销售手机号
+	sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+	if sellerItemQy != nil {
+		openIdList, e := models.GetWxOpenIdByMobileList(sellerItemQy.Mobile)
+		if e != nil {
+			err = errors.New("GetSellerByAdminId, Err: " + e.Error())
+			return
+		}
+		first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:搜索")
+		keyword1 = "搜索关键词:" + keyWord
+		openIdArr := make([]string, 0)
+		for _, v := range openIdList {
+			openIdArr = append(openIdArr, v.OpenId)
+		}
+		redirectUrl := ""
+		sendInfo := new(SendWxTemplate)
+		sendInfo.First = first
+		sendInfo.Keyword1 = keyword1
+		sendInfo.Keyword2 = keyword2
+		sendInfo.Keyword3 = keyword3
+		sendInfo.Keyword4 = keyword4
+		sendInfo.Remark = remark
+		sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
+		sendInfo.RedirectUrl = redirectUrl
+		sendInfo.RedirectTarget = 3
+		sendInfo.Resource = "0"
+		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+		sendInfo.OpenIdArr = openIdArr
+		err = PublicSendTemplateMsg(sendInfo)
+		if err != nil {
+			return
+		}
+	}
 	return
 }

+ 71 - 0
services/micro_roadshow.go

@@ -3,8 +3,10 @@ package services
 import (
 	"encoding/json"
 	"errors"
+	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
+	"strconv"
 	"strings"
 )
 
@@ -630,3 +632,72 @@ func GetindustryVideo(user *models.WxUserItem, industrialManagementId int) (indu
 	AuthInfo = au
 	return
 }
+
+// 用户微路演视频回放操作操作行为,模板消息推送
+func MicroRoadshowVideoUserRmind(user *models.WxUserItem, videoId int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("用户音视频回放操作操作行为,模板消息推送失败"+err.Error(), 2)
+		}
+	}()
+	countUser, err := models.GetUserRemind(user.UserId)
+	if err != nil {
+		return err
+	}
+	if countUser == 0 {
+		return err
+	}
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	//获取销售手机号
+	sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+	if sellerItemQy != nil {
+		openIdList, e := models.GetWxOpenIdByMobileList(sellerItemQy.Mobile)
+		if e != nil {
+			err = errors.New("GetSellerByAdminId, Err: " + e.Error())
+			return
+		}
+		videoInfo, e := models.GetMicroRoadshowVideoByVideoId(videoId)
+		if e != nil {
+			err = errors.New("GetCygxActivitySpecialDetailById, Err: " + e.Error())
+			return
+		}
+		if videoInfo == nil {
+			return
+		}
+		first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:播放微路演详视频")
+		keyword1 = videoInfo.VideoName
+		keyword2 = "--"
+		remark = "点击查看微路演详情"
+		openIdArr := make([]string, 0)
+		for _, v := range openIdList {
+			openIdArr = append(openIdArr, v.OpenId)
+		}
+		redirectUrl := utils.WX_MSG_PATH_ACTIVITY_INDUSTRYR_EPORT + strconv.Itoa(videoInfo.IndustryId)
+		sendInfo := new(SendWxTemplate)
+		sendInfo.First = first
+		sendInfo.Keyword1 = keyword1
+		sendInfo.Keyword2 = keyword2
+		sendInfo.Keyword3 = keyword3
+		sendInfo.Keyword4 = keyword4
+		sendInfo.Remark = remark
+		sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
+		sendInfo.RedirectUrl = redirectUrl
+		sendInfo.RedirectTarget = 3
+		sendInfo.Resource = strconv.Itoa(videoId)
+		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+		sendInfo.OpenIdArr = openIdArr
+		err = PublicSendTemplateMsg(sendInfo)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 4 - 1
services/wx_template_msg.go

@@ -229,14 +229,17 @@ func SendWxMsgWithArticleUserRemind(keyWord1, keyWord2 string, openIdList []*mod
 	var first string
 	first = keyWord1
 	keyword1 := keyWord2
+	remark := "点击查看报告详情"
 	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": "pageMy/reportDetail/reportDetail?id=" + strconv.Itoa(articleId)}
+	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleId)}
 	sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
 	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
+	sendData["keyword2"] = map[string]interface{}{"value": "--", "color": "#173177"}
+	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
 	sendMap["data"] = sendData
 	WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(articleId), utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD)
 	return

+ 102 - 2
services/wx_user.go

@@ -238,6 +238,75 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 			}
 			// 处理用户的作者关注end
 
+			// 处理用户的活动视频播放
+			listActivityVideo, err := models.GetActivityVideoHistoryByMobileList(condition)
+			if err != nil {
+				fmt.Println("GetArticleDepartmentFollowByMobileList ,Err" + err.Error())
+				return err
+			}
+			for k, v := range listActivityVideo {
+				if v.Mobile != "" {
+					user, err := models.GetWxUserItemByUserId(v.UserId)
+					if err != nil && err.Error() != utils.ErrNoRow() {
+						fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
+					}
+					if user != nil {
+						fmt.Println(user.RealName, k)
+						err = models.UpdateCygxActivityVideoHistory(user)
+						if err != nil {
+							fmt.Println("UpdateCygxActivityVideoHistory ,Err" + err.Error())
+						}
+					}
+				}
+			}
+			// 处理用户的活动视频播放end
+
+			// 处理用户的活动音频播放
+			listActivityVoice, err := models.GetActivityVoiceHistoryByMobileList(condition)
+			if err != nil {
+				fmt.Println("GetActivityVoiceHistoryByMobileList ,Err" + err.Error())
+				return err
+			}
+			for k, v := range listActivityVoice {
+				if v.Mobile != "" {
+					user, err := models.GetWxUserItemByUserId(v.UserId)
+					if err != nil && err.Error() != utils.ErrNoRow() {
+						fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
+					}
+					if user != nil {
+						fmt.Println(user.RealName, k)
+						err = models.UpdateCygxActivityVoiceHistory(user)
+						if err != nil {
+							fmt.Println("UpdateCygxActivityVoiceHistory ,Err" + err.Error())
+						}
+					}
+				}
+			}
+			// 处理用户的活动音频播放end
+
+			// 处理用户产业视频的播放记录
+			listMicroRoadshow, err := models.GetMicroRoadshowVideoHistoryByMobileList(condition)
+			if err != nil {
+				fmt.Println("GetMicroRoadshowVideoHistoryByMobileList ,Err" + err.Error())
+				return err
+			}
+			for k, v := range listMicroRoadshow {
+				if v.Mobile != "" {
+					user, err := models.GetWxUserItemByUserId(v.UserId)
+					if err != nil && err.Error() != utils.ErrNoRow() {
+						fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
+					}
+					if user != nil {
+						fmt.Println(user.RealName, k)
+						err = models.UpdateCygxMicroRoadshowVideoHistory(user)
+						if err != nil {
+							fmt.Println("UpdateCygxMicroRoadshowVideoHistory ,Err" + err.Error())
+						}
+					}
+				}
+			}
+			// 处理用户产业视频的播放记录 end
+
 			//如果手机号不为空,则更新用户的报名信息
 			if mobiles != "" {
 				condition = ` AND mobile IN (` + mobiles + `)`
@@ -472,7 +541,7 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 				//处理用户的互动量
 				if len(userUserInteractionList) > 0 {
 					for _, vsplit := range userUserInteractionList {
-						interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum
+						interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum + vsplit.TripNum + vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
 						if interactionNum > 0 {
 							//更改用户的互动量
 							err = models.UpdateUserInteractionNum(interactionNum, int(vsplit.UserId))
@@ -493,6 +562,11 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 							itemInteraction.ActivityOnLineNum = vsplit.OnLineNum
 							itemInteraction.ActivityOfficeNum = vsplit.OfficeNum
 							itemInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
+							itemInteraction.TripNum = vsplit.TripNum
+							itemInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
+							itemInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
+							itemInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
+							itemInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
 							itemInteraction.CreateTime = time.Now()
 							itemInteraction.ModifyTime = time.Now()
 
@@ -509,6 +583,11 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 								itemCompanyInteraction.ActivityOnLineNum = vsplit.OnLineNum
 								itemCompanyInteraction.ActivityOfficeNum = vsplit.OfficeNum
 								itemCompanyInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
+								itemCompanyInteraction.TripNum = vsplit.TripNum
+								itemCompanyInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
+								itemCompanyInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
+								itemCompanyInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
+								itemCompanyInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
 								mapCompanyInteractionItem[vsplit.CompanyId] = itemCompanyInteraction
 								mapCompanyInteractionItem[vsplit.CompanyId].CreateTime = time.Now()
 								mapCompanyInteractionItem[vsplit.CompanyId].ModifyTime = time.Now()
@@ -524,6 +603,12 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 								mapCompanyInteractionItem[vsplit.CompanyId].ActivityOnLineNum += vsplit.OnLineNum
 								mapCompanyInteractionItem[vsplit.CompanyId].ActivityOfficeNum += vsplit.OfficeNum
 								mapCompanyInteractionItem[vsplit.CompanyId].ActivityNum += vsplit.OnLineNum + vsplit.OfficeNum
+								mapCompanyInteractionItem[vsplit.CompanyId].TripNum += vsplit.TripNum
+								mapCompanyInteractionItem[vsplit.CompanyId].RoadshowVideoNum += vsplit.RoadshowVideoNum
+								mapCompanyInteractionItem[vsplit.CompanyId].ActivityVideoNum += vsplit.ActivityVideoNum
+								mapCompanyInteractionItem[vsplit.CompanyId].ActivityVoiceNum += vsplit.ActivityVoiceNum
+								mapCompanyInteractionItem[vsplit.CompanyId].RoadshowNum += vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
+
 							}
 
 							//如果存在就修改不存在就新增
@@ -555,7 +640,7 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 			//处理用户的互动量
 			if len(userUserInteractionList) > 0 {
 				for _, vsplit := range userUserInteractionList {
-					interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum
+					interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum + vsplit.TripNum + vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
 					if interactionNum > 0 {
 						err = models.UpdateUserInteractionNum(interactionNum, int(vsplit.UserId))
 						if err != nil {
@@ -575,6 +660,11 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 						itemInteraction.ActivityOnLineNum = vsplit.OnLineNum
 						itemInteraction.ActivityOfficeNum = vsplit.OfficeNum
 						itemInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
+						itemInteraction.TripNum = vsplit.TripNum
+						itemInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
+						itemInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
+						itemInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
+						itemInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
 
 						//如果这个切片下的结构体没有值就给他初始值,如果有就跟后面的相加
 						if mapCompanyInteractionItem[vsplit.CompanyId] == nil {
@@ -589,6 +679,11 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 							itemCompanyInteraction.ActivityOnLineNum = vsplit.OnLineNum
 							itemCompanyInteraction.ActivityOfficeNum = vsplit.OfficeNum
 							itemCompanyInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
+							itemCompanyInteraction.TripNum = vsplit.TripNum
+							itemCompanyInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
+							itemCompanyInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
+							itemCompanyInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
+							itemCompanyInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
 							mapCompanyInteractionItem[vsplit.CompanyId] = itemCompanyInteraction
 							mapCompanyInteractionItem[vsplit.CompanyId].CreateTime = time.Now()
 							mapCompanyInteractionItem[vsplit.CompanyId].ModifyTime = time.Now()
@@ -603,6 +698,11 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 							mapCompanyInteractionItem[vsplit.CompanyId].ActivityOnLineNum += vsplit.OnLineNum
 							mapCompanyInteractionItem[vsplit.CompanyId].ActivityOfficeNum += vsplit.OfficeNum
 							mapCompanyInteractionItem[vsplit.CompanyId].ActivityNum += vsplit.OnLineNum + vsplit.OfficeNum
+							mapCompanyInteractionItem[vsplit.CompanyId].TripNum += vsplit.TripNum
+							mapCompanyInteractionItem[vsplit.CompanyId].RoadshowVideoNum += vsplit.RoadshowVideoNum
+							mapCompanyInteractionItem[vsplit.CompanyId].ActivityVideoNum += vsplit.ActivityVideoNum
+							mapCompanyInteractionItem[vsplit.CompanyId].ActivityVoiceNum += vsplit.ActivityVoiceNum
+							mapCompanyInteractionItem[vsplit.CompanyId].RoadshowNum += vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
 						}
 
 						//如果存在就修改不存在就新增

+ 11 - 9
utils/constants.go

@@ -4,7 +4,7 @@ const (
 	Md5Key = "Ks@h64WJ#tcVgG8$&WlNfqvLAtMgpxWN"
 )
 
-//常量定义
+// 常量定义
 const (
 	FormatTime             = "15:04:05"                //时间格式
 	FormatDate             = "2006-01-02"              //日期格式
@@ -28,7 +28,7 @@ const (
 	ApiUrl            = "https://vmp.hzinsights.com/v2api/"
 )
 
-//手机号,电子邮箱正则
+// 手机号,电子邮箱正则
 const (
 	RegularMobile             = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0-9])|(17[0-9])|(16[0-9])|(19[0-9]))\\d{8}$" //手机号码
 	RegularFixedTelephone     = "^(\\(\\d{3,4}\\)|\\d{3,4}-|\\s)?\\d{7,14}$"                                              //手机号码
@@ -36,7 +36,7 @@ const (
 	RegularEmail              = `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*`                                             //匹配电子邮箱
 )
 
-//聚合短信
+// 聚合短信
 var (
 	JhGnTplId = "250078" //聚合国内模板编码
 	JhGjTplId = "10054"  //聚合国内模板编码
@@ -45,7 +45,7 @@ var (
 	JhGjAppKey = "3326ad2c1047a4cd92ace153e6044ca3"
 )
 
-//OSS
+// OSS
 var (
 	Endpoint   string = "oss-cn-shanghai.aliyuncs.com"
 	Bucketname string = "hongze"
@@ -59,13 +59,13 @@ var (
 	AccessKeySecret string = "12kk1ptCHoGWedhBnKRVW5hRJzq9Fq"
 )
 
-//缓存key
+// 缓存key
 const (
 	CACHE_KEY_USER_VIEW           = "user_view_record"           //用户阅读数据
 	CACHE_KEY_ARTICLE_ID_TEMPLATE = "ce_lue_article_id_template" //策略平台同步过来的文章ID,做微信模板消息推送,同一篇报告12小时只推送一次
 )
 
-//模板消息推送类型
+// 模板消息推送类型
 const (
 	TEMPLATE_MSG_CYGX_ACTIVITY_ADD = 12 //查研观向小程序活动更新推送 12
 	TEMPLATE_MSG_CYGX_ARTICLE_ADD  = 13 //查研观向报告更新推送  13
@@ -98,6 +98,8 @@ const (
 	HZ_COMPANY_ID                    int    = 16                                                                                                                                                                                                 // 弘则公司的ID
 	HONG_GUAN_NAME                   string = "宏观"
 	HONG_GUAN_ID                     int    = 1
+	YAN_XUAN_ARTICLE_TYPE_IDS        string = "1,2,12" // 属于研选的报告类型ID
+	NO_YAN_XUAN_ARTICLE_TYPE_IDS     string = "13"     // 不属于研选的报告类型ID
 )
 
 const (
@@ -139,12 +141,12 @@ const (
 	COMPANY_PRODUCT_RAI_NAME  = "权益"
 )
 
-//微信模板消息推送公共接口的秘钥
+// 微信模板消息推送公共接口的秘钥
 const (
 	SendTemplateMsgAuthorization = "dc855fce962a639faa779cbdd4cd332f"
 )
 
-//模板消息地址路由
+// 模板消息地址路由
 const (
 	WX_MSG_PATH_ARTICLE_DETAIL           = "pageMy/reportDetail/reportDetail?id="            //文章详情模板消息地址
 	WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL  = "activityPages/specialDetail/specialDetail?id="   //专项调研活动模板消息地址
@@ -152,7 +154,7 @@ const (
 	WX_MSG_PATH_ACTIVITY_DETAIL          = "activityPages/activityDetail/activityDetail?id=" //活动模板消息地址
 )
 
-//模板消息地址路由
+// 模板消息地址路由
 const (
 	ACtIVITY_SPECIAL_EXPLAIN      = "此类调研具体行程尚未确定,待预报名人数满10人后弘则会确定行程并推送给您活动日期,只有在确定行程中再次报名才完成占位。"                        //专项调研说明
 	ACtIVITY_SPECIAL_TRIP_EXPLAIN = "此类调研时间安排已经确定,点击报名后按人次扣除对应机构的服务点数。由于每场活动人数有限,如果不能参加请提前48小时取消,未及时取消导致影响其他客户报名将会维持扣点。" //专项调研说明