Browse Source

Merge branch 'cygx_company_interaction_num_05-20' of http://8.136.199.33:3000/hongze/hongze_cygx

xingzai 9 months ago
parent
commit
49634bc965
5 changed files with 827 additions and 23 deletions
  1. 8 0
      models/company.go
  2. 100 21
      models/company_interaction_num.go
  3. 2 0
      models/crm_company.go
  4. 276 0
      models/user_interaction_num.go
  5. 441 2
      services/wx_user.go

+ 8 - 0
models/company.go

@@ -275,3 +275,11 @@ func UpdateComapanyInteractionNum(interactionNum, interactionNumSeller, companyI
 	_, err = o.Raw(sql, interactionNum, interactionNumSeller, companyId).Exec()
 	return
 }
+
+// 获取有机构互动量的公司
+func GetCompanyInteractionNumList() (items []*Company, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT *  FROM company  WHERE  interaction_num > 0  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 100 - 21
models/company_interaction_num.go

@@ -6,25 +6,28 @@ import (
 )
 
 type CygxCompanyInteractionNum struct {
-	Id                  int       `orm:"column(id);pk"`
-	CompanyId           int       `description:"用户ID"`
-	ArticleHistoryNum   int       `description:"文章浏览数量"`
-	ArticleCountNum     int       `description:"文章收藏数量"`
-	ChartCountNum       int       `description:"图表收藏"`
-	IndustryFllowNum    int       `description:"产业关注数量"`
-	DepartmentFollowNum int       `description:"作者关注数量"`
-	KeyWordNum          int       `description:"关键词搜索次数"`
-	ActivityOnLineNum   int       `description:"线上活动报名次数"`
-	ActivityOfficeNum   int       `description:"线下活动报名次数"`
-	ActivityNum         int       `description:"活动报名次数"`
-	TripNum             int       `description:"专项产业调研数量"`
-	RoadshowVideoNum    int       `description:"产业视频播放量"`
-	ActivityVideoNum    int       `description:"活动视频播放量"`
-	ActivityVoiceNum    int       `description:"活动音频播放量"`
-	RoadshowNum         int       `description:"路演播放总数量"`
-	TagNum              int       `description:"标签点击次数"`
-	CreateTime          time.Time `description:"创建时间"`
-	ModifyTime          time.Time `description:"更新时间"`
+	Id                       int       `orm:"column(id);pk"`
+	CompanyId                int       `description:"用户ID"`
+	ArticleHistoryNum        int       `description:"文章浏览数量"`
+	ArticleCountNum          int       `description:"文章收藏数量"`
+	ChartCountNum            int       `description:"图表收藏"`
+	IndustryFllowNum         int       `description:"产业关注数量"`
+	DepartmentFollowNum      int       `description:"作者关注数量"`
+	KeyWordNum               int       `description:"关键词搜索次数"`
+	ActivityOnLineNum        int       `description:"线上活动报名次数"`
+	ActivityOfficeNum        int       `description:"线下活动报名次数"`
+	ActivityNum              int       `description:"活动报名次数"`
+	TripNum                  int       `description:"专项产业调研数量"`
+	RoadshowVideoNum         int       `description:"产业视频播放量"`
+	ActivityVideoNum         int       `description:"活动视频播放量"`
+	ActivityVoiceNum         int       `description:"活动音频播放量"`
+	RoadshowNum              int       `description:"路演播放总数量"`
+	TagNum                   int       `description:"标签点击次数"`
+	YanxuanSpecialNum        int       `description:"研选专栏阅读数量"`
+	YanxuanSpecialCollectNum int       `description:"研选专栏收藏数量"`
+	YanxuanSpecialFollowNum  int       `description:"研选专栏作者关注数量"`
+	CreateTime               time.Time `description:"创建时间"`
+	ModifyTime               time.Time `description:"更新时间"`
 }
 
 // 添加
@@ -68,9 +71,85 @@ func GetCygxCompanyInteractionNumList() (items []*CygxCompanyInteractionNum, err
 	return
 }
 
-// 批量添加用户互动信息
+// 批量添加企业互动信息
 func AddCygxCompanyInteractionNumList(items []*CygxCompanyInteractionNum) (lastId int64, err error) {
 	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, items)
+	_, err = o.InsertMulti(len(items), items)
+	return
+}
+
+// UpdateActivitySignupDetailMulti 批量修改
+func UpdateCygxCompanyInteractionNumMulti(items []*CygxCompanyInteractionNum) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw(` UPDATE cygx_company_interaction_num SET 
+							article_history_num = ?,
+							article_count_num = ?,
+							industry_fllow_num = ?,
+							department_follow_num = ?,
+							key_word_num = ?,
+							activity_num = ?,
+							chart_count_num = ?,
+							trip_num = ?,
+							roadshow_video_num = ?,
+							activity_video_num = ?,
+							activity_voice_num = ?,
+							roadshow_num = ?,
+							tag_num = ?
+							WHERE company_id = ? `).Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(
+			v.ArticleHistoryNum,
+			v.ArticleCountNum,
+			v.ChartCountNum,
+			v.IndustryFllowNum,
+			v.DepartmentFollowNum,
+			v.KeyWordNum,
+			v.ActivityNum,
+			v.TripNum,
+			v.RoadshowVideoNum,
+			v.ActivityVideoNum,
+			v.ActivityVoiceNum,
+			v.RoadshowNum,
+			v.TagNum,
+			v.CompanyId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// 企业互动量
+type CompanyInteractionNumReq struct {
+	CompanyId            int `description:"用户ID"`
+	InteractionNum       int `description:"互动总量"`
+	InteractionNumSeller int `description:"销售可以查看的互动总量"`
+}
+
+// UpdateCompanyInteractionNumMulti 批量修改客户互动量
+func UpdateCompanyInteractionNumMulti(items []*CompanyInteractionNumReq) (err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	p, err := o.Raw(` UPDATE company SET interaction_num = ? ,  interaction_num_seller = ?  WHERE company_id=? `).Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(
+			v.InteractionNum,
+			v.InteractionNumSeller,
+			v.CompanyId)
+		if err != nil {
+			return
+		}
+	}
 	return
 }

+ 2 - 0
models/crm_company.go

@@ -36,6 +36,8 @@ type Company struct {
 	RegionType            string    `description:"地区类型,国内,国外"`
 	OpenCompanyCode       string    `description:"开放给第三方的客户编码,不让第三方定位我们的客户信息"`
 	TripartiteCompanyCode string    `description:"第三方给过来的客户编码,判断客户是否存在"`
+	InteractionNum        int       `description:"互动总量"`
+	InteractionNumSeller  int       `description:"销售可以查看的互动总量"`
 }
 
 type CompanyLog struct {

+ 276 - 0
models/user_interaction_num.go

@@ -1,7 +1,9 @@
 package models
 
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
 	"time"
 )
 
@@ -74,3 +76,277 @@ func AddCygxUserInteractionNumList(items []*CygxUserInteractionNum) (lastId int6
 	_, err = o.InsertMulti(1, items)
 	return
 }
+
+// 联系人互动数量
+type CygxUserInteractionNumResp struct {
+	UserId         int `description:"用户ID"`
+	CompanyId      int `description:"公司ID"`
+	InteractionNum int `description:"互动数量"`
+}
+
+// 用户阅读记录数量统计
+func GetCygxArticleHistoryRecordInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_article_and_yanxuan_record AS h
+			INNER JOIN cygx_article AS art ON art.article_id = h.source_id 
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1 AND h.source = 'article'   ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户收藏文章数量统计
+func GetCygxArticleCollectInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_article_collect AS h
+			INNER JOIN cygx_article AS art ON art.article_id = h.article_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户收藏图表数量统计
+func GetCygxChartCollectInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_chart_collect AS h
+			INNER JOIN cygx_chart_all AS art ON art.chart_id = h.chart_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户关注产业数量统计
+func GetCygxIndustryFllowInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_industry_fllow AS h
+			INNER JOIN cygx_industrial_management AS art ON art.industrial_management_id = h.industrial_management_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  AND h.type = 1  AND  h.source   IN (0,1,2) ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户搜索关键词数量统计
+func GetCygxSearchKeyWordInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_search_key_word AS h
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户活动报名参会数量统计
+func GetCygxActivitySignupInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_activity_signup_detail AS h
+			INNER JOIN cygx_activity AS art ON art.activity_id = h.activity_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户专项调研活动报名参会数量统计
+func GetCygxActivitySpecialSignupInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_activity_special_meeting_detail AS h
+			INNER JOIN cygx_activity_special AS art ON art.activity_id = h.activity_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户路演精华播放数量统计
+func GetCygxMicroRoadshowVideoHistoryInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_micro_roadshow_video_history AS h
+			INNER JOIN cygx_micro_roadshow_video AS art ON art.video_id = h.video_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户活动视频播放数量统计
+func GetCygxActivityVideoHistoryInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_activity_video_history AS h
+			INNER JOIN cygx_activity_video AS art ON art.activity_id = h.activity_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户活动音频播放数量统计
+func GetCygxActivityVoiceHistoryInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_activity_voice_history AS h
+			INNER JOIN cygx_activity_voice AS art ON art.activity_id = h.activity_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户首页标签点击量数量统计
+func GetCygxTagHistoryInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_tag_history AS h
+			INNER JOIN cygx_tag AS art ON art.tag_id = h.tag_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户关注研选作者数量统计
+func GetCygxArticleDepartmentFollowInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_article_department_follow AS h
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户收藏研选专栏数量统计
+func GetCygxYanxuanSpecialCollectInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_yanxuan_special_collect AS h
+			INNER JOIN cygx_yanxuan_special AS art ON art.id = h.yanxuan_special_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户关注研选专栏作者数量统计
+func GetCygxYanxuanSpecialFollowInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_yanxuan_special_follow AS h
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 用户研选专栏阅读数量数量统计
+func GetCygxYanxuanSpecialRecordInteractionNum(condition string) (items []*CygxUserInteractionNumResp, err error) {
+	o := orm.NewOrm()
+	var sql string
+	sql += ` SELECT
+			COUNT( 1 ) AS interaction_num,
+			h.user_id,
+			h.company_id 
+		FROM
+			cygx_yanxuan_special_record AS h
+			INNER JOIN cygx_yanxuan_special AS art ON art.id = h.yanxuan_special_id
+			INNER JOIN %s.wx_user AS w ON w.user_id = h.user_id  WHERE 1=1  ` + condition + ` GROUP BY w.user_id `
+	databaseName := utils.GetWeeklyDatabase()
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 441 - 2
services/wx_user.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
@@ -10,7 +11,7 @@ import (
 	"time"
 )
 
-func UpdateWxUserLabel(cont context.Context) (err error) {
+func UpdateWxUserLabelOLd(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
 			go utils.SendAlarmMsg("更新用户标签失败;Err:"+err.Error(), 2)
@@ -780,7 +781,7 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 	}
 
 	//更新用户标签以及权重
-	go UpdateUserLabelWeight()
+	//go UpdateUserLabelWeight()
 	return
 }
 
@@ -1057,3 +1058,441 @@ func init123123() {
 		}
 	}
 }
+
+//func init() {
+//	UpdateWxUserLabelNew()
+//}
+
+func UpdateWxUserLabel(cont context.Context) (err error) {
+	//func UpdateWxUserLabel() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("更新用户标签失败UpdateWxUserLabel, err:", err.Error()), 2)
+		}
+	}()
+
+	mapComapnyInteractionNum := make(map[int]int)                                   // 机构互动数量
+	mapComapnyInteractionNumSeller := make(map[int]int)                             // 销售可查看的机构互动数量
+	mapComapnyInteractionSeller := make(map[int]bool)                               // 跟销售建立绑定关系的用户
+	mapComapnyInteractionNumItem := make(map[int]*models.CygxCompanyInteractionNum) // 公司互动详情结构体
+	var comapnyInteractionNumItemAdd []*models.CygxCompanyInteractionNum            // 公司互动详情结构体新增
+	var comapnyInteractionNumItemUpdate []*models.CygxCompanyInteractionNum         // 公司互动详情结构体修改
+
+	//获取跟销售建立绑定关系的用户并记录切片
+	listUserSeller, e := models.GetUserSellerRelationUserList()
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetUserSellerRelationUserList, Err: " + e.Error())
+		return
+	}
+	for _, v := range listUserSeller {
+		mapComapnyInteractionSeller[v.UserId] = true
+	}
+
+	var condition string
+	//condition = ` AND h.create_time < '%s'  AND h.company_id IN ( 398,17773)  `
+	condition = ` AND h.create_time < '%s'  `
+	condition = fmt.Sprintf(condition, time.Now().Format(utils.FormatDate)) // 截止昨天的所有数据
+
+	//fmt.Println(condition)
+	//报告阅读记录1
+	{
+		listArticleHistoryRecord, e := models.GetCygxArticleHistoryRecordInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxArticleHistoryRecordInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listArticleHistoryRecord {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].ArticleHistoryNum += v.InteractionNum
+		}
+
+	}
+
+	//报告收藏记录2
+	{
+		listArticleCollect, e := models.GetCygxArticleCollectInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxArticleCollectInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listArticleCollect {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].ArticleCountNum += v.InteractionNum
+		}
+	}
+
+	//图表收藏记录3
+	{
+		listChartCollect, e := models.GetCygxChartCollectInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxChartCollectInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listChartCollect {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].ChartCountNum += v.InteractionNum
+		}
+	}
+
+	//用户关注产业数量4
+	{
+		listIndustryFllow, e := models.GetCygxIndustryFllowInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxIndustryFllowInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listIndustryFllow {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].IndustryFllowNum += v.InteractionNum
+		}
+	}
+
+	//用户搜索关键词数量5
+	{
+		listSearchKeyWord, e := models.GetCygxSearchKeyWordInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxSearchKeyWordInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listSearchKeyWord {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].KeyWordNum += v.InteractionNum
+		}
+	}
+
+	//用户活动报名参会数量6
+	{
+		listActivitySignup, e := models.GetCygxActivitySignupInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxActivitySignupInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listActivitySignup {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].ActivityNum += v.InteractionNum
+		}
+	}
+
+	//用户专项调研活动报名参会数量7
+	{
+		listActivitySpecialSignup, e := models.GetCygxActivitySpecialSignupInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxActivitySpecialSignupInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listActivitySpecialSignup {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].TripNum += v.InteractionNum
+		}
+	}
+
+	//用户路演精华播放数量8
+	{
+		listMicroRoadshowVideoHistory, e := models.GetCygxMicroRoadshowVideoHistoryInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxMicroRoadshowVideoHistoryInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listMicroRoadshowVideoHistory {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].RoadshowNum += v.InteractionNum
+		}
+	}
+
+	//用户活动视频播放数量9
+	{
+		listActivityVideoHistory, e := models.GetCygxActivityVideoHistoryInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxActivityVideoHistoryInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listActivityVideoHistory {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].ActivityVideoNum += v.InteractionNum
+		}
+	}
+
+	//用户活动音频播放数量10
+	{
+		listActivityVoiceHistory, e := models.GetCygxActivityVoiceHistoryInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxActivityVoiceHistoryInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listActivityVoiceHistory {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].ActivityVoiceNum += v.InteractionNum
+		}
+	}
+
+	//用户首页标签点击量数量11
+	{
+		listTagHistory, e := models.GetCygxTagHistoryInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxTagHistoryInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listTagHistory {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].TagNum += v.InteractionNum
+		}
+	}
+
+	//用户关注文章作者数量12
+	{
+		listArticleDepartmentFollow, e := models.GetCygxArticleDepartmentFollowInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxArticleDepartmentFollowInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listArticleDepartmentFollow {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].DepartmentFollowNum += v.InteractionNum
+		}
+	}
+
+	//用户收藏研选专栏数量13
+	//{
+	//	listYanxuanSpecialCollect, e := models.GetCygxYanxuanSpecialCollectInteractionNum(condition)
+	//	if e != nil {
+	//		err = errors.New("GetCygxYanxuanSpecialCollectInteractionNum, Err: " + e.Error())
+	//		return
+	//	}
+	//	for _, v := range listYanxuanSpecialCollect {
+	//		mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+	//		if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+	//			mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+	//		}
+	//
+	//		if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+	//			mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+	//		}
+	//		mapComapnyInteractionNumItem[v.CompanyId].YanxuanSpecialCollectNum += v.InteractionNum
+	//	}
+	//}
+
+	//用户关注研选专栏作者数量统计14
+	//{
+	//	listYanxuanSpecialFollow, e := models.GetCygxYanxuanSpecialFollowInteractionNum(condition)
+	//	if e != nil {
+	//		err = errors.New("GetCygxYanxuanSpecialFollowInteractionNum, Err: " + e.Error())
+	//		return
+	//	}
+	//	for _, v := range listYanxuanSpecialFollow {
+	//		mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+	//		if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+	//			mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+	//		}
+	//		if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+	//			mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+	//		}
+	//		mapComapnyInteractionNumItem[v.CompanyId].YanxuanSpecialFollowNum += v.InteractionNum
+	//	}
+	//}
+
+	//用户研选专栏阅读数量数量15
+	{
+		listYanxuanSpecialFollow, e := models.GetCygxYanxuanSpecialRecordInteractionNum(condition)
+		if e != nil {
+			err = errors.New("GetCygxYanxuanSpecialRecordInteractionNum, Err: " + e.Error())
+			return
+		}
+		for _, v := range listYanxuanSpecialFollow {
+			mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
+			if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
+				mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
+			}
+
+			if mapComapnyInteractionNumItem[v.CompanyId] == nil {
+				mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
+			}
+			mapComapnyInteractionNumItem[v.CompanyId].YanxuanSpecialNum += v.InteractionNum
+		}
+	}
+
+	mapCompanyInteraction := make(map[int]bool)
+	mapCompanyInteractionItem := make(map[int]*models.CygxCompanyInteractionNum)
+	listCompanyInteractionNum, e := models.GetCygxCompanyInteractionNumList() // 有过互动记录的公司
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxCompanyInteractionNumList, Err: " + e.Error())
+		return
+	}
+
+	for _, v := range listCompanyInteractionNum {
+		mapCompanyInteraction[v.CompanyId] = true
+		mapCompanyInteractionItem[v.CompanyId] = v
+
+	}
+
+	var itemsCompanyInteractionNums []*models.CompanyInteractionNumReq // 公司总的互动量结构体
+
+	companyInteractionNumList, e := models.GetCompanyInteractionNumList() // 获取有机构互动的公司
+	mapInteractionNumOld := make(map[int]int)                             //历史公司总的互动量
+	mapInteractionNumSellerOld := make(map[int]int)                       //历史公司关联销售所能查看的互动量
+	for _, v := range companyInteractionNumList {
+		mapInteractionNumOld[v.CompanyId] = v.InteractionNum
+		mapInteractionNumSellerOld[v.CompanyId] = v.InteractionNumSeller
+	}
+
+	for k, v := range mapComapnyInteractionNumItem {
+		v.CompanyId = k
+		if mapCompanyInteraction[k] {
+			itemOld := mapCompanyInteractionItem[v.CompanyId]
+
+			//ArticleHistoryNum        int       `description:"文章浏览数量"`
+			//ArticleCountNum          int       `description:"文章收藏数量"`
+			//ChartCountNum            int       `description:"图表收藏"`
+			//IndustryFllowNum         int       `description:"产业关注数量"`
+			//DepartmentFollowNum      int       `description:"作者关注数量"`
+			//KeyWordNum               int       `description:"关键词搜索次数"`
+			//ActivityOnLineNum        int       `description:"线上活动报名次数"`
+			//ActivityOfficeNum        int       `description:"线下活动报名次数"`
+			//ActivityNum              int       `description:"活动报名次数"`
+			//TripNum                  int       `description:"专项产业调研数量"`
+			//RoadshowVideoNum         int       `description:"产业视频播放量"`
+			//ActivityVideoNum         int       `description:"活动视频播放量"`
+			//ActivityVoiceNum         int       `description:"活动音频播放量"`
+			//RoadshowNum              int       `description:"路演播放总数量"`
+			//TagNum                   int       `description:"标签点击次数"`
+			//YanxuanSpecialNum        int       `description:"研选专栏阅读数量"`
+			//YanxuanSpecialCollectNum int       `description:"研选专栏收藏数量"`
+			//YanxuanSpecialFollowNum  int       `description:"研选专栏作者关注数量"`
+
+			//如果这些数据对比不一样,那么就对这条数据进行更新
+			//if itemOld != nil && (itemOld.ArticleHistoryNum != v.ArticleHistoryNum || itemOld.ArticleCountNum != v.ArticleCountNum || itemOld.ChartCountNum != v.ChartCountNum || itemOld.IndustryFllowNum != v.IndustryFllowNum || itemOld.DepartmentFollowNum != v.DepartmentFollowNum || itemOld.KeyWordNum != v.KeyWordNum || itemOld.ActivityNum != v.ActivityNum || itemOld.TripNum != v.TripNum || itemOld.RoadshowVideoNum != v.RoadshowVideoNum || itemOld.ActivityVideoNum != v.ActivityVideoNum || itemOld.ActivityVoiceNum != v.ActivityVoiceNum || itemOld.RoadshowNum != v.RoadshowNum || itemOld.TagNum != v.TagNum || itemOld.YanxuanSpecialNum != v.YanxuanSpecialNum || itemOld.YanxuanSpecialCollectNum != v.YanxuanSpecialCollectNum || itemOld.YanxuanSpecialFollowNum != v.YanxuanSpecialFollowNum) {
+			if itemOld != nil && (itemOld.ArticleHistoryNum != v.ArticleHistoryNum || itemOld.ArticleCountNum != v.ArticleCountNum || itemOld.ChartCountNum != v.ChartCountNum || itemOld.IndustryFllowNum != v.IndustryFllowNum || itemOld.DepartmentFollowNum != v.DepartmentFollowNum || itemOld.KeyWordNum != v.KeyWordNum || itemOld.ActivityNum != v.ActivityNum || itemOld.TripNum != v.TripNum || itemOld.RoadshowVideoNum != v.RoadshowVideoNum || itemOld.ActivityVideoNum != v.ActivityVideoNum || itemOld.ActivityVoiceNum != v.ActivityVoiceNum || itemOld.RoadshowNum != v.RoadshowNum || itemOld.TagNum != v.TagNum) {
+				comapnyInteractionNumItemUpdate = append(comapnyInteractionNumItemUpdate, v)
+			}
+
+		} else {
+			v.CreateTime = time.Now()
+			v.ModifyTime = time.Now()
+			comapnyInteractionNumItemAdd = append(comapnyInteractionNumItemAdd, v)
+		}
+
+		//对比历史数据如果不一样就进行修改
+		if mapInteractionNumOld[v.CompanyId] != mapComapnyInteractionNum[v.CompanyId] || mapInteractionNumSellerOld[v.CompanyId] != mapComapnyInteractionNumSeller[v.CompanyId] {
+			itemCompanyInteractionNums := new(models.CompanyInteractionNumReq)
+			itemCompanyInteractionNums.CompanyId = k
+			itemCompanyInteractionNums.InteractionNum = mapComapnyInteractionNum[v.CompanyId]
+			itemCompanyInteractionNums.InteractionNumSeller = mapComapnyInteractionNumSeller[v.CompanyId]
+			itemsCompanyInteractionNums = append(itemsCompanyInteractionNums, itemCompanyInteractionNums)
+		}
+
+	}
+
+	//for _, v := range comapnyInteractionNumItemUpdate {
+	//	fmt.Println(v)
+	//}
+
+	//return
+
+	//批量插入公司互动详情
+	if len(comapnyInteractionNumItemAdd) > 0 {
+		_, e = models.AddCygxCompanyInteractionNumList(comapnyInteractionNumItemAdd)
+		if e != nil {
+			err = errors.New("AddCygxCompanyInteractionNumList, Err: " + e.Error())
+			return
+		}
+	}
+
+	// 批量修改公司互动详情
+	if len(comapnyInteractionNumItemUpdate) > 0 {
+		e = models.UpdateCygxCompanyInteractionNumMulti(comapnyInteractionNumItemUpdate)
+		if e != nil {
+			err = errors.New("UpdateCygxCompanyInteractionNumMulti, Err: " + e.Error())
+			return
+		}
+	}
+
+	// 批量修改公司互动总量
+	if len(itemsCompanyInteractionNums) > 0 {
+		e = models.UpdateCompanyInteractionNumMulti(itemsCompanyInteractionNums)
+		if e != nil {
+			err = errors.New("UpdateCompanyInteractionNumMulti, Err: " + e.Error())
+			return
+		}
+	}
+
+	//CompanyInteractionNumReq
+	fmt.Println("add", len(comapnyInteractionNumItemAdd))
+	fmt.Println("edit", len(comapnyInteractionNumItemUpdate))
+	fmt.Println("Update", len(itemsCompanyInteractionNums))
+
+	//fmt.Println(mapComapnyInteractionNum)
+	return
+}