浏览代码

Merge branch 'crm/crm_16.5' of http://8.136.199.33:3000/hongze/hongze_cygx into debug

zhangchuanxing 2 月之前
父节点
当前提交
071e54afb1

+ 10 - 1
models/activity.go

@@ -288,7 +288,7 @@ func GetAddActivityInfoByActivityId(ActivityId int) (item *ActivityDetail, err e
 // 获取活动详情
 func GetAddActivityDetailByActivityId(ActivityId int) (item *ActivityDetail, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT a.*,t.activity_type, FROM cygx_activity AS a 
+	sql := `SELECT a.*,t.activity_type FROM cygx_activity AS a 
 			INNER JOIN cygx_activity_type  as t ON t.activity_type_id = a.activity_type_id  WHERE activity_id=?  `
 	err = o.Raw(sql, ActivityId).QueryRow(&item)
 	return
@@ -1422,3 +1422,12 @@ func GetActivityIdListNoEnd() (items []*CygxActivity, err error) {
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// 获取活动详情
+func GetAddActivityDetailByActivityIdinitCrm16_5(ActivityId []int) (items []*ActivityDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.*,t.activity_type FROM cygx_activity AS a 
+			INNER JOIN cygx_activity_type  as t ON t.activity_type_id = a.activity_type_id  WHERE activity_id IN (` + utils.GetOrmInReplace(len(ActivityId)) + `) `
+	_, err = o.Raw(sql, ActivityId).QueryRows(&items)
+	return
+}

+ 35 - 0
models/article_history_record_all.go

@@ -112,3 +112,38 @@ func AddCygxArticleHistoryRecordAllMulti(itemsCelue []*CygxCelueArticleHistoryRe
 	}
 	return
 }
+
+// 列表
+func GetCygxArticleHistoryRecordAllListArticleIdCrm16_5() (items []*CygxArticleHistoryRecordAll, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			article_id
+		FROM
+			cygx_article_history_record_all 
+		WHERE
+			create_time > '2024-09-01' 
+			AND user_id > 0 
+			AND is_del = 0 
+		GROUP BY
+			article_id `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 列表
+func GetCygxArticleHistoryRecordAllListUserIdCrm16_5() (items []*CygxArticleHistoryRecordAll, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+    		create_time,
+    		article_id,
+    		mobile,
+			user_id
+		FROM
+			cygx_article_history_record_all 
+		WHERE
+			create_time > '2024-09-01' 
+			AND user_id > 0 
+			AND is_del = 0 `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 2 - 0
models/db.go

@@ -197,6 +197,8 @@ func init() {
 		new(time_line.CygxGushouTimeLineHistory),
 		new(CygxXzsChooseSend),
 		new(WxUserRaiLabel),
+		new(WxUserRaiLabelLog),
+		new(WxUserRaiArticleLabel),
 	)
 
 	initOrder()      // 订单模块

+ 15 - 0
models/industrial_activity_group_management.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
 	"time"
 )
 
@@ -107,3 +108,17 @@ func GetIndustrialActivityGroupManagementListByArticleId(activityId int) (items
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }
+
+// 列表
+func GetIndustrialActivityGroupManagementListByArticleIds(activityId []int) (items []*IndustrialActivityGroupManagementRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			m.industry_name,
+			am.activity_id
+			FROM cygx_industrial_activity_group_management  AS am
+			INNER JOIN  cygx_industrial_management AS m  ON m.industrial_management_id = am.industrial_management_id
+			WHERE
+			am.activity_id IN  (` + utils.GetOrmInReplace(len(activityId)) + `) AND m.source = 1 `
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
+	return
+}

+ 17 - 1
models/industrial_activity_group_subject.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
 	"time"
 )
 
@@ -16,6 +17,7 @@ type CygxIndustrialActivityGroupSubject struct {
 type SubjectActivityGroupManagementRep struct {
 	IndustrialSubjectId int    `description:"产业id"`
 	SubjectName         string `description:"标的名称"`
+	ActivityId          int    `description:"活动ID"`
 }
 
 // GetCygxIndustrialActivityGroupSubjectList 获取列表
@@ -42,7 +44,21 @@ func GetSubjectActivityGroupManagementListByActivityId(activityId int) (items []
 			cygx_industrial_subject  AS s
 			INNER JOIN cygx_industrial_activity_group_subject AS ag ON s.industrial_subject_id = ag.industrial_subject_id 
 			WHERE
-			ag.activity_id = ?`
+			ag.activity_id = ?  AND   ag.source = 1  `
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
+	return
+}
+
+// 列表
+func GetSubjectActivityGroupManagementListByActivityIds(activityId []int) (items []*SubjectActivityGroupManagementRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			s.subject_name,ag.activity_id
+			FROM
+			    cygx_industrial_activity_group_subject  AS ag
+			INNER JOIN cygx_industrial_subject  AS s  ON s.industrial_subject_id = ag.industrial_subject_id 
+			WHERE
+			ag.activity_id  IN  (` + utils.GetOrmInReplace(len(activityId)) + `)  AND   ag.source = 1  `
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }

+ 1 - 0
models/industrial_article_group_management.go

@@ -84,6 +84,7 @@ type IndustrialActivityGroupManagementRep struct {
 	IndustryName           string `description:"产业名称"`
 	ChartPermissionId      int    `description:"权限id"`
 	PermissionName         string `description:"行业名称"`
+	ActivityId             int    `description:"活动ID"`
 }
 
 // 列表

+ 12 - 0
models/industrial_management.go

@@ -928,3 +928,15 @@ func UpdateIndustrialManagementTimeLineData(industrialManagementId int, timeLine
 	_, err = o.Raw(sql, timeLineData, industrialManagementId).Exec()
 	return
 }
+
+// GetIndustryListByCondition 获取产业列表
+func GetIndustryListByConditionByIds(industrialManagementIds []int) (list []*IndustrialManagementRep, err error) {
+	lenArr := len(industrialManagementIds)
+	if lenArr == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_industrial_management WHERE  industrial_management_id IN (` + utils.GetOrmInReplace(lenArr) + `) `
+	_, err = o.Raw(sql, industrialManagementIds).QueryRows(&list)
+	return
+}

+ 9 - 0
models/industrial_subject.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
 )
 
 type CygxIndustrialSubject struct {
@@ -46,3 +47,11 @@ func GetArticleGroupSubjectList(pars []interface{}, condition string) (items []*
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+func GetIndustrialSubjectDetailByIds(industrialSubjectIds []int) (list []*CygxIndustrialSubject, err error) {
+	lenArr := len(industrialSubjectIds)
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_industrial_subject WHERE  industrial_subject_id IN (` + utils.GetOrmInReplace(lenArr) + `) `
+	_, err = o.Raw(sql, industrialSubjectIds).QueryRows(&list)
+	return
+}

+ 11 - 0
models/report_history_record.go

@@ -73,3 +73,14 @@ func GetCygxReportHistoryRecordListPv(condition string, pars []interface{}) (ite
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+// 列表
+func GetWxUserRaiCygxReportHistoryRecordCrm16_5() (items []*CygxReportHistoryRecord, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			*
+		FROM
+			cygx_report_history_record  WHERE report_type IN('bgjx','bzyjhz')  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 16 - 0
models/report_selection_subject_history.go

@@ -19,6 +19,7 @@ type CygxReportSelectionSubjectHistory struct {
 	IndustrialManagementId int       `description:"产业Id"`
 	RegisterPlatform       int       `description:"来源 1小程序,2:网页"`
 	ThirdId                int       `description:"类似产业、标的的三方ID"`
+	LableName              string    `description:"标签名称"`
 }
 
 type AddCygxReportSelectionSubjectHistoryReq struct {
@@ -34,3 +35,18 @@ func AddCygxReportSelectionSubjectHistory(item *CygxReportSelectionSubjectHistor
 	_, err = o.Insert(item)
 	return
 }
+
+// 列表
+func GetCygxReportSelectionSubjectHistory() (items []*CygxReportSelectionSubjectHistory, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_report_selection_subject_history as art WHERE 1= 1 `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+func UpdateCygxReportSelectionSubjectHistoryName(lableName string, id int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE cygx_report_selection_subject_history SET lable_name=? WHERE id = ? `
+	_, err = o.Raw(sql, lableName, id).Exec()
+	return
+}

+ 53 - 0
models/roadshow/rs_calendar.go

@@ -0,0 +1,53 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
+	"time"
+)
+
+type RsCalendar struct {
+	RsCalendarId     int    `orm:"column(rs_calendar_id);pk"`
+	SysUserId        int    `description:"创建人id"`
+	SysUserRealName  string `description:"创建人名称"`
+	ActivityType     string `description:"活动类型"`
+	RoadshowType     string `description:"路演形式"`
+	RoadshowPlatform string `description:"路演平台"`
+	CompanyId        int    `description:"客户id"`
+	CompanyName      string `description:"客户名称"`
+	Province         string `description:"省"`
+	ProvinceCode     string `description:"省编码"`
+	City             string `description:"市"`
+	CityCode         string `description:"市编码"`
+	District         string `description:"区"`
+	Theme            string `description:"会议主题"`
+	CooperationName  string `description:"合作方名称"`
+	Title            string `description:"展示在日历的标题"`
+	Source           int8   `description:"来源,0:自系统,1:上海方的"`
+	CreateTime       time.Time
+	ModifyTime       time.Time
+	ActivityCategory string `description:"活动类别"`
+	IsSynced         int    `description:"是否与上海同步 0:未同步 1:已同步"`
+	UnionCode        string `description:"公开会议联合编码"`
+	EnglishCompany   int    `description:"是否为英文客户: 0-否; 1-是"`
+	SellerId         int    `description:"销售id"`
+	ShareSellerId    int    `description:"共享销售员id"`
+}
+
+func GetRsCalendarById(rsCalendarId int) (item *RsCalendar, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM rs_calendar WHERE rs_calendar_id=? `
+	err = o.Raw(sql, rsCalendarId).QueryRow(&item)
+	return
+}
+
+// 列表
+func GetRsCalendarListInit(rsCalendarId []int) (items []*RsCalendar, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT
+    		*
+	FROM rs_calendar as  art 
+         WHERE 1=1  AND  rs_calendar_id IN  (` + utils.GetOrmInReplace(len(rsCalendarId)) + `)  `
+	_, err = o.Raw(sql, rsCalendarId).QueryRows(&items)
+	return
+}

+ 33 - 0
models/roadshow/rs_calendar_meeting_label_group.go

@@ -0,0 +1,33 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type RsCalendarMeetingLabelGroup struct {
+	LabelId      int       `orm:"column(label_id);pk" description:"主键ID"`
+	RsCalendarId int       `description:"路演ID"`
+	CreateTime   time.Time `description:"创建时间"`
+	ModifyTime   time.Time `description:"修改时间"`
+	AdminId      int       `description:"管理员ID"`
+	AdminName    string    `description:"管理员姓名"`
+	TagType      int       `description:"标签类型,1产业,2标的,3行业权限"`
+	TagId        int       `description:"标签ID"`
+}
+
+// 获取数量
+func GetRsCalendarMeetingLabelGroupByRsCalendarId(rsCalendarId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sqlCount := ` SELECT COUNT(1) AS count  FROM rs_calendar_meeting_label_group WHERE   rs_calendar_id   = ?`
+	err = o.Raw(sqlCount, rsCalendarId).QueryRow(&count)
+	return
+}
+
+// 根据多个路演ID获取研信息
+func GetRsCalendarMeetingLabelGroupListByRsCalendarId(rsCalendarId int) (item []*RsCalendarMeetingLabelGroup, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM rs_calendar_meeting_label_group WHERE rs_calendar_id  = ? `
+	_, err = o.Raw(sql, rsCalendarId).QueryRows(&item)
+	return
+}

+ 16 - 15
models/roadshow/rs_calendar_meeting_user.go

@@ -13,21 +13,22 @@ type RsCalendarMeetingUserResp struct {
 }
 
 type RsCalendarMeetingUser struct {
-	RsCalendarMeetingUserId int    `orm:"column(rs_calendar_meeting_user_id);pk" description:"主键ID"`
-	RsCalendarId            int    `description:"日程ID"`
-	UserId                  int    `description:"用户ID"`
-	Mobile                  string `description:"手机号"`
-	Email                   string `description:"邮箱"`
-	CompanyId               int    `description:"公司ID"`
-	CompanyName             string `description:"公司名称"`
-	RealName                string `description:"用户实际名称"`
-	Position                string `description:"职位"`
-	AdminId                 int    `description:"管理员ID"`
-	AdminName               string `description:"管理员姓名"`
-	StartDate               string `description:"开始日期"`
-	EndDate                 string `description:"结束日期"`
-	StartTime               string `description:"开始时间"`
-	EndTime                 string `description:"结束时间"`
+	RsCalendarMeetingUserId int       `orm:"column(rs_calendar_meeting_user_id);pk" description:"主键ID"`
+	RsCalendarId            int       `description:"日程ID"`
+	UserId                  int       `description:"用户ID"`
+	Mobile                  string    `description:"手机号"`
+	Email                   string    `description:"邮箱"`
+	CompanyId               int       `description:"公司ID"`
+	CompanyName             string    `description:"公司名称"`
+	RealName                string    `description:"用户实际名称"`
+	Position                string    `description:"职位"`
+	AdminId                 int       `description:"管理员ID"`
+	AdminName               string    `description:"管理员姓名"`
+	StartDate               string    `description:"开始日期"`
+	EndDate                 string    `description:"结束日期"`
+	StartTime               string    `description:"开始时间"`
+	EndTime                 string    `description:"结束时间"`
+	CreateTime              time.Time `description:"结束时间"`
 }
 
 // 列表

+ 21 - 0
models/search_key_word.go

@@ -61,3 +61,24 @@ func UpdateCygxSearchKeyWord(wxUser *WxUserItem) (err error) {
 	}
 	return
 }
+
+// 获取用户搜索词汇频率较高的词
+func GetSearchKeyWordinitCrm16_5() (items []*CygxSearchKeyWord, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	mobile,
+	key_word,
+	register_platform,
+	MAX(create_time) as  create_time
+	
+FROM
+	cygx_search_key_word 
+WHERE
+	create_time > '2024-09-01' 
+	AND user_id > 0 
+GROUP BY
+	mobile,
+	key_word`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 14 - 0
models/wx_user.go

@@ -589,6 +589,20 @@ func GetWxUserListByUserIdsArr(userIds []int) (list []*WxUserItem, err error) {
 	return
 }
 
+// GetWxUserListByUserIdsArr 根据用户ID集合获取用户
+func GetWxUserListByMobileArr(mobiles []string) (list []*WxUserItem, err error) {
+	lenArr := len(mobiles)
+	if lenArr == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := ` SELECT u.*, c.company_name FROM wx_user AS u
+			INNER JOIN company AS c ON c.company_id = u.company_id 
+			WHERE mobile IN (` + utils.GetOrmInReplace(lenArr) + `)  `
+	_, err = o.Raw(sql, mobiles).QueryRows(&list)
+	return
+}
+
 // GetWxUserByMobiles 根据用户手机号获取用户详情
 func GetWxUserByMobiles(mobiles []string) (items []*WxUser, err error) {
 	lenmobiles := len(mobiles)

+ 190 - 0
models/wx_user_rai_label.go

@@ -36,6 +36,26 @@ type WxUserRaiLabel struct {
 	TableName        string    `description:"数据来源的表名"`
 }
 
+// 标签记录表,所有内容都不删除
+type WxUserRaiLabelLog struct {
+	RaiLabelId       int       `orm:"column(rai_label_id);pk"`
+	UserId           int       `description:"用户ID"`
+	RealName         string    `description:"用户实际名称"`
+	Mobile           string    `description:"手机号"`
+	Email            string    `description:"邮箱"`
+	CompanyId        int       `description:"公司id"`
+	CompanyName      string    `description:"公司名称"`
+	Label            string    `description:"标签内容"`
+	SourceId         int       `description:"来源ID"`
+	SourceType       int       `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
+	SysUserId        int       `description:"创建人id"`
+	SysUserRealName  string    `description:"创建人名称"`
+	CreateTime       time.Time `description:"创建时间"`
+	ModifyTime       time.Time `description:"更新时间"`
+	RegisterPlatform int       `description:"来源 1小程序,2:网页"`
+	TableName        string    `description:"数据来源的表名"`
+}
+
 // 添加
 func AddWxUserRaiLabel(item *WxUserRaiLabel) (err error) {
 	o, err := orm.NewOrm().Begin()
@@ -59,6 +79,28 @@ func AddWxUserRaiLabel(item *WxUserRaiLabel) (err error) {
 	}
 
 	_, err = o.Insert(item)
+
+	if err != nil {
+		return
+	}
+
+	itemLog := new(WxUserRaiLabelLog)
+	itemLog.UserId = item.UserId
+	itemLog.RealName = item.RealName
+	itemLog.Mobile = item.Mobile
+	itemLog.Email = item.Email
+	itemLog.CompanyId = item.CompanyId
+	itemLog.CompanyName = item.CompanyName
+	itemLog.Label = item.Label
+	itemLog.SourceId = item.SourceId
+	itemLog.SourceType = item.SourceType
+	itemLog.SysUserId = item.SysUserId
+	itemLog.SysUserRealName = item.SysUserRealName
+	itemLog.CreateTime = item.CreateTime
+	itemLog.ModifyTime = item.ModifyTime
+	itemLog.RegisterPlatform = item.RegisterPlatform
+	itemLog.TableName = item.TableName
+	_, err = o.Insert(itemLog)
 	return
 }
 
@@ -76,6 +118,27 @@ func AddWxUserRaiLabelMulti(items []*WxUserRaiLabel, label []string, userId int)
 		}
 	}()
 
+	var itemLogs []*WxUserRaiLabelLog
+	for _, item := range items {
+		itemLog := new(WxUserRaiLabelLog)
+		itemLog.UserId = item.UserId
+		itemLog.RealName = item.RealName
+		itemLog.Mobile = item.Mobile
+		itemLog.Email = item.Email
+		itemLog.CompanyId = item.CompanyId
+		itemLog.CompanyName = item.CompanyName
+		itemLog.Label = item.Label
+		itemLog.SourceId = item.SourceId
+		itemLog.SourceType = item.SourceType
+		itemLog.SysUserId = item.SysUserId
+		itemLog.SysUserRealName = item.SysUserRealName
+		itemLog.CreateTime = item.CreateTime
+		itemLog.ModifyTime = item.ModifyTime
+		itemLog.RegisterPlatform = item.RegisterPlatform
+		itemLog.TableName = item.TableName
+		itemLogs = append(itemLogs, itemLog)
+	}
+
 	if len(label) > 0 {
 		//删除老的数据信息
 		sql := ` DELETE FROM wx_user_rai_label WHERE user_id = ? AND  label IN ('` + strings.Join(label, "','") + `')  `
@@ -85,6 +148,98 @@ func AddWxUserRaiLabelMulti(items []*WxUserRaiLabel, label []string, userId int)
 		}
 	}
 
+	//批量插入新的关联数据
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+		if err != nil {
+			return
+		}
+
+		_, err = o.InsertMulti(len(itemLogs), itemLogs)
+		if err != nil {
+			return
+		}
+	}
+
+	return
+}
+
+// 批量插入(脚本)
+func AddWxUserRaiLabelLogMultiInit(items []*WxUserRaiLabelLog) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	//批量插入新的关联数据
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+		if err != nil {
+			return
+		}
+	}
+
+	return
+}
+
+// 批量插入(脚本)
+func AddWxUserRaiLabelMultiInit(items []*WxUserRaiLabel) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	//批量插入新的关联数据
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+		if err != nil {
+			return
+		}
+	}
+
+	return
+}
+
+// 文章标签表(业务用不到,跑数据使用,别删)
+type WxUserRaiArticleLabel struct {
+	Id         int       `orm:"column(id);pk"`
+	ArticleId  int       `description:"报告id"`
+	Label      string    `description:"标签内容"`
+	CreateTime time.Time `description:"创建时间"`
+	SourceType int       `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
+}
+
+// 批量插入(脚本)
+func AddWxUserRaiArticleLabelMultiInit(items []*WxUserRaiArticleLabel) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
 	//批量插入新的关联数据
 	if len(items) > 0 {
 		//批量添加流水信息
@@ -96,3 +251,38 @@ func AddWxUserRaiLabelMulti(items []*WxUserRaiLabel, label []string, userId int)
 
 	return
 }
+
+// 列表
+func GetWxUserRaiArticleLabelCrm16_5() (items []*WxUserRaiArticleLabel, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			article_id 
+		FROM
+			wx_user_rai_article_label 
+		GROUP BY
+			article_id `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 列表
+func GetWxUserRaiArticleLabelAllCrm16_5() (items []*WxUserRaiArticleLabel, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			article_id,label,source_type
+		FROM
+			wx_user_rai_article_label  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 列表
+func GetWxUserRaiLabelLogAll() (items []*WxUserRaiLabelLog, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			*
+		FROM
+			wx_user_rai_label_log  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 1192 - 106
services/wx_user_rai_label.go

@@ -5,6 +5,7 @@ import (
 	"errors"
 	"fmt"
 	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/models/roadshow"
 	"hongze/hongze_cygx/utils"
 	"strconv"
 	"time"
@@ -106,7 +107,10 @@ func UpdateWxUserRaiLabelRedis() (err error) {
 					go ActivityWxUserRaiLabelRedisAddReduce(log)
 					fmt.Println("活动到会")
 					break
-
+				case 3, 5:
+					go RoadshowWxUserRaiLabelRedisAddReduce(log)
+					fmt.Println("活动到会")
+					break
 				default:
 					fmt.Println(string(b))
 					go utils.SendAlarmMsg("用户更新相关标签处理Redis队列消息失败:"+string(b), 2)
@@ -168,6 +172,11 @@ func KeyWordsWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err e
 	return
 }
 
+//func init() {
+//	log := models.WxUserRaiLabelRedis{UserId: 53840, SourceId: 1753, SourceType: 3, TableName: "", Label: "", CreateTime: time.Now(), RegisterPlatform: utils.REGISTER_PLATFORM}
+//	RoadshowWxUserRaiLabelRedisAddReduce(log)
+//}
+
 // 2:产业/个股标签(线下活动)、 4:产业/个股标签(线上活动)
 // 用户参加活动,相关标签
 func ActivityWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
@@ -227,12 +236,12 @@ func ActivityWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err e
 	}
 
 	//建立首页资源表,与标的 的关系
-	subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(sourceId)
+	subjectList, e := models.GetSubjectActivityGroupManagementListByActivityId(sourceId)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetSubjectArticleGroupManagementListByArtcileId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
 		return
 	}
-
+	//fmt.Println("subjectList", subjectList)
 	for _, v := range subjectList {
 		item := new(models.WxUserRaiLabel)
 		item.UserId = wxUser.UserId
@@ -281,12 +290,13 @@ func ActivityWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err e
 	return
 }
 
-// 7:产业/个股标签(报告)、8:报告类型标签
-func ArticleWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
+// 3:产业/个股标签(路演线下活动)、 5:产业/个股标签(路演线上活动)
+// 用户参加路演,相关标签
+func RoadshowWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println(err)
-			go utils.SendAlarmMsg("用户文章阅读更新相关标签,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("articleId", log.SourceId, "userId", log.UserId), 2)
+			go utils.SendAlarmMsg("用户参加路演,相关标签,处理Redis队列消息失败:RoadshowWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
 		}
 	}()
 	userId := log.UserId
@@ -296,113 +306,83 @@ func ArticleWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err er
 		err = errors.New("GetWxUserItemByUserId" + e.Error())
 		return
 	}
-	articleDetail, e := models.GetArticleDetailTestById(sourceId)
+
+	rsCalendar, e := roadshow.GetRsCalendarById(sourceId)
 	if e != nil {
-		err = errors.New("GetArticleDetailTestById" + e.Error())
+		err = errors.New("GetRsCalendarById" + e.Error())
 		return
 	}
-	articlePermission, e := models.GetArticlePermission(articleDetail.CategoryId)
-	if e != nil {
-		err = errors.New("GetArticlePermission" + e.Error())
-		return
+
+	var sourceType int
+	if rsCalendar.RoadshowType == "线下" {
+		sourceType = 3
+	} else {
+		sourceType = 5
 	}
-	if articlePermission == nil {
-		err = errors.New("报告权限不存在" + e.Error())
+
+	totalGroup, e := roadshow.GetRsCalendarMeetingLabelGroupByRsCalendarId(sourceId)
+	if e != nil {
+		err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
 		return
 	}
-	articlePermissionName := articlePermission.PermissionName
-	matchTypeName := articlePermission.MatchTypeName
-	matchTypeNameArr := []string{"季度策略", "科技前沿(周报)", "本周荟", "智造精粹"}
-
-	//1;四大行业汇总类报告:季度策略、科技前沿(周报)、本周荟、智造精粹以报告类型做标签
-	//2:策略、固收的所有报告,以报告类型做标签
-	if articlePermissionName == utils.CE_LUE_NAME || articlePermissionName == utils.GU_SHOU_NAME || utils.InArrayByStr(matchTypeNameArr, matchTypeName) { // 策略、固收的所有报告,以报告类型做标签
-		if matchTypeName == "季度策略" {
-			matchTypeName = articlePermissionName + matchTypeName //其中季度策略以:xx行业季度策略  呈现
-		}
-		item := new(models.WxUserRaiLabel)
-		item.UserId = wxUser.UserId
-		item.RealName = wxUser.RealName
-		item.Mobile = wxUser.Mobile
-		item.Email = wxUser.Email
-		item.CompanyId = wxUser.CompanyId
-		item.CompanyName = wxUser.CompanyName
-		item.Label = matchTypeName
-		item.SourceType = 8
-		item.SourceId = sourceId
-		item.CreateTime = log.CreateTime
-		item.ModifyTime = time.Now()
-		item.RegisterPlatform = log.RegisterPlatform
-		item.TableName = "cygx_article"
-		err = models.AddWxUserRaiLabel(item)
-		if e != nil {
-			err = errors.New("AddWxUserRaiLabel" + e.Error())
-			return
-		}
-	} else if articlePermissionName == utils.ZHOU_QI_NAME {
-		//周期的行业深度、调研纪要、产业跟踪这些系列的报告用领域做标签,其余的周期报告,都用报告类型(也就是ficc定义的类型)做标签
-		//其中周期的周度观点,以 周期周度观点 呈现
-		matchTypeNameArrZhouqi := []string{"行业深度", "调研纪要", "产业跟踪"}
-		if utils.InArrayByStr(matchTypeNameArrZhouqi, matchTypeName) {
-			matchTypeName = articleDetail.FieldName
-		}
-		item := new(models.WxUserRaiLabel)
-		item.UserId = wxUser.UserId
-		item.RealName = wxUser.RealName
-		item.Mobile = wxUser.Mobile
-		item.Email = wxUser.Email
-		item.CompanyId = wxUser.CompanyId
-		item.CompanyName = wxUser.CompanyName
-		item.Label = matchTypeName
-		item.SourceType = 8
-		item.SourceId = sourceId
-		item.CreateTime = log.CreateTime
-		item.ModifyTime = time.Now()
-		item.RegisterPlatform = log.RegisterPlatform
-		item.TableName = "cygx_article"
-		e = models.AddWxUserRaiLabel(item)
+	//var lebelDetail []*cygx.RaiServeTagResp
+	var label string
+	var labelArr []string
+	var items []*models.WxUserRaiLabel
+	if totalGroup > 0 {
+		listGroup, e := roadshow.GetRsCalendarMeetingLabelGroupListByRsCalendarId(sourceId)
 		if e != nil {
-			err = errors.New("AddWxUserRaiLabel" + e.Error())
+			err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
 			return
 		}
-	} else {
-		//正常的有产业报告
-		var labelArr []string
-		//建立首页资源表,与产业的关系
-		industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(sourceId)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("GetIndustrialArticleGroupManagementListByArticleId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
-			return
+		var industrialManagementIds []int
+		var industrialSubjectIds []int
+
+		mapindustrialManagementName := make(map[int]string)
+		mapindustrialSubjectName := make(map[int]string)
+		mapCelueName := make(map[int]string)
+		for _, v := range listGroup {
+			switch v.TagType {
+			case 1:
+				industrialManagementIds = append(industrialManagementIds, v.TagId)
+			case 2:
+				industrialSubjectIds = append(industrialSubjectIds, v.TagId)
+			case 3:
+				mapCelueName[v.TagId] = "策略"
+			}
 		}
 
-		var items []*models.WxUserRaiLabel
-		for _, v := range industrialList {
-			item := new(models.WxUserRaiLabel)
-			item.UserId = wxUser.UserId
-			item.RealName = wxUser.RealName
-			item.Mobile = wxUser.Mobile
-			item.Email = wxUser.Email
-			item.CompanyId = wxUser.CompanyId
-			item.CompanyName = wxUser.CompanyName
-			item.Label = v.IndustryName
-			item.SourceType = 7
-			item.SourceId = sourceId
-			item.CreateTime = log.CreateTime
-			item.ModifyTime = time.Now()
-			item.RegisterPlatform = log.RegisterPlatform
-			item.TableName = "cygx_article"
-			items = append(items, item)
-			labelArr = append(labelArr, v.IndustryName)
+		if len(industrialManagementIds) > 0 {
+			IndustryList, e := models.GetIndustryListByConditionByIds(industrialManagementIds)
+			if e != nil {
+				err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
+				return
+			}
+			for _, v := range IndustryList {
+				mapindustrialManagementName[v.IndustrialManagementId] = v.IndustryName
+			}
 		}
 
-		//建立首页资源表,与标的 的关系
-		subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(sourceId)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("GetSubjectArticleGroupManagementListByArtcileId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
-			return
+		if len(industrialSubjectIds) > 0 {
+			SubjectList, e := models.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
+			if e != nil {
+				err = errors.New("GetIndustrialSubjectDetailByIds" + e.Error())
+				return
+			}
+			for _, v := range SubjectList {
+				mapindustrialSubjectName[v.IndustrialSubjectId] = v.SubjectName
+			}
 		}
 
-		for _, v := range subjectList {
+		for _, v := range listGroup {
+			switch v.TagType {
+			case 1:
+				label = mapindustrialManagementName[v.TagId]
+			case 2:
+				label = mapindustrialSubjectName[v.TagId]
+			case 3:
+				label = mapCelueName[v.TagId]
+			}
 			item := new(models.WxUserRaiLabel)
 			item.UserId = wxUser.UserId
 			item.RealName = wxUser.RealName
@@ -410,21 +390,201 @@ func ArticleWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err er
 			item.Email = wxUser.Email
 			item.CompanyId = wxUser.CompanyId
 			item.CompanyName = wxUser.CompanyName
-			item.Label = v.SubjectName
-			item.SourceType = 7
+			item.Label = label
+			item.SourceType = sourceType
 			item.SourceId = sourceId
 			item.CreateTime = log.CreateTime
 			item.ModifyTime = time.Now()
 			item.RegisterPlatform = log.RegisterPlatform
-			item.TableName = "cygx_article"
+			item.TableName = ""
 			items = append(items, item)
-			labelArr = append(labelArr, v.SubjectName)
+			labelArr = append(labelArr, label)
 		}
-		e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
-		if e != nil {
-			err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
-			return
+	}
+
+	e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
+	if e != nil {
+		err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
+		return
+	}
+	return
+}
+
+// 7:产业/个股标签(报告)、8:报告类型标签
+func ArticleWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("用户文章阅读更新相关标签,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("articleId", log.SourceId, "userId", log.UserId), 2)
 		}
+	}()
+	userId := log.UserId
+	sourceId := log.SourceId
+	wxUser, e := models.GetWxUserItemByUserId(userId)
+	if e != nil {
+		err = errors.New("GetWxUserItemByUserId" + e.Error())
+		return
+	}
+	//articleDetail, e := models.GetArticleDetailTestById(sourceId)
+	//if e != nil {
+	//	err = errors.New("GetArticleDetailTestById" + e.Error())
+	//	return
+	//}
+
+	labelArr, sourceType := GetArticlelabelArrByArticleId(sourceId)
+	if len(labelArr) == 0 {
+		return
+	}
+	var items []*models.WxUserRaiLabel
+	for _, v := range labelArr {
+		item := new(models.WxUserRaiLabel)
+		item.UserId = wxUser.UserId
+		item.RealName = wxUser.RealName
+		item.Mobile = wxUser.Mobile
+		item.Email = wxUser.Email
+		item.CompanyId = wxUser.CompanyId
+		item.CompanyName = wxUser.CompanyName
+		item.Label = v
+		item.SourceType = sourceType
+		item.SourceId = sourceId
+		item.CreateTime = log.CreateTime
+		item.ModifyTime = time.Now()
+		item.RegisterPlatform = log.RegisterPlatform
+		item.TableName = "cygx_article"
+		items = append(items, item)
+		//labelArr = append(labelArr, v.IndustryName)
+	}
+
+	//articlePermission, e := models.GetArticlePermission(articleDetail.CategoryId)
+	//if e != nil {
+	//	err = errors.New("GetArticlePermission" + e.Error())
+	//	return
+	//}
+	//if articlePermission == nil {
+	//	err = errors.New("报告权限不存在" + e.Error())
+	//	return
+	//}
+	//articlePermissionName := articlePermission.PermissionName
+	//matchTypeName := articlePermission.MatchTypeName
+	//matchTypeNameArr := []string{"季度策略", "科技前沿(周报)", "本周荟", "智造精粹"}
+	//
+	////1;四大行业汇总类报告:季度策略、科技前沿(周报)、本周荟、智造精粹以报告类型做标签
+	////2:策略、固收的所有报告,以报告类型做标签
+	//if articlePermissionName == utils.CE_LUE_NAME || articlePermissionName == utils.GU_SHOU_NAME || utils.InArrayByStr(matchTypeNameArr, matchTypeName) { // 策略、固收的所有报告,以报告类型做标签
+	//	if matchTypeName == "季度策略" {
+	//		matchTypeName = articlePermissionName + matchTypeName //其中季度策略以:xx行业季度策略  呈现
+	//	}
+	//	item := new(models.WxUserRaiLabel)
+	//	item.UserId = wxUser.UserId
+	//	item.RealName = wxUser.RealName
+	//	item.Mobile = wxUser.Mobile
+	//	item.Email = wxUser.Email
+	//	item.CompanyId = wxUser.CompanyId
+	//	item.CompanyName = wxUser.CompanyName
+	//	item.Label = matchTypeName
+	//	item.SourceType = 8
+	//	item.SourceId = sourceId
+	//	item.CreateTime = log.CreateTime
+	//	item.ModifyTime = time.Now()
+	//	item.RegisterPlatform = log.RegisterPlatform
+	//	item.TableName = "cygx_article"
+	//	err = models.AddWxUserRaiLabel(item)
+	//	if e != nil {
+	//		err = errors.New("AddWxUserRaiLabel" + e.Error())
+	//		return
+	//	}
+	//} else if articlePermissionName == utils.ZHOU_QI_NAME {
+	//	//周期的行业深度、调研纪要、产业跟踪这些系列的报告用领域做标签,其余的周期报告,都用报告类型(也就是ficc定义的类型)做标签
+	//	//其中周期的周度观点,以 周期周度观点 呈现
+	//	matchTypeNameArrZhouqi := []string{"行业深度", "调研纪要", "产业跟踪"}
+	//	if utils.InArrayByStr(matchTypeNameArrZhouqi, matchTypeName) {
+	//		matchTypeName = articleDetail.FieldName
+	//	}
+	//	item := new(models.WxUserRaiLabel)
+	//	item.UserId = wxUser.UserId
+	//	item.RealName = wxUser.RealName
+	//	item.Mobile = wxUser.Mobile
+	//	item.Email = wxUser.Email
+	//	item.CompanyId = wxUser.CompanyId
+	//	item.CompanyName = wxUser.CompanyName
+	//	item.Label = matchTypeName
+	//	item.SourceType = 8
+	//	item.SourceId = sourceId
+	//	item.CreateTime = log.CreateTime
+	//	item.ModifyTime = time.Now()
+	//	item.RegisterPlatform = log.RegisterPlatform
+	//	item.TableName = "cygx_article"
+	//	e = models.AddWxUserRaiLabel(item)
+	//	if e != nil {
+	//		err = errors.New("AddWxUserRaiLabel" + e.Error())
+	//		return
+	//	}
+	//} else {
+	//	//正常的有产业报告
+	//	var labelArr []string
+	//	//建立首页资源表,与产业的关系
+	//	industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(sourceId)
+	//	if e != nil && e.Error() != utils.ErrNoRow() {
+	//		err = errors.New("GetIndustrialArticleGroupManagementListByArticleId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
+	//		return
+	//	}
+	//
+	//	var items []*models.WxUserRaiLabel
+	//	for _, v := range industrialList {
+	//		item := new(models.WxUserRaiLabel)
+	//		item.UserId = wxUser.UserId
+	//		item.RealName = wxUser.RealName
+	//		item.Mobile = wxUser.Mobile
+	//		item.Email = wxUser.Email
+	//		item.CompanyId = wxUser.CompanyId
+	//		item.CompanyName = wxUser.CompanyName
+	//		item.Label = v.IndustryName
+	//		item.SourceType = 7
+	//		item.SourceId = sourceId
+	//		item.CreateTime = log.CreateTime
+	//		item.ModifyTime = time.Now()
+	//		item.RegisterPlatform = log.RegisterPlatform
+	//		item.TableName = "cygx_article"
+	//		items = append(items, item)
+	//		labelArr = append(labelArr, v.IndustryName)
+	//	}
+	//
+	//	//建立首页资源表,与标的 的关系
+	//	subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(sourceId)
+	//	if e != nil && e.Error() != utils.ErrNoRow() {
+	//		err = errors.New("GetSubjectArticleGroupManagementListByArtcileId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
+	//		return
+	//	}
+	//
+	//	for _, v := range subjectList {
+	//		item := new(models.WxUserRaiLabel)
+	//		item.UserId = wxUser.UserId
+	//		item.RealName = wxUser.RealName
+	//		item.Mobile = wxUser.Mobile
+	//		item.Email = wxUser.Email
+	//		item.CompanyId = wxUser.CompanyId
+	//		item.CompanyName = wxUser.CompanyName
+	//		item.Label = v.SubjectName
+	//		item.SourceType = 7
+	//		item.SourceId = sourceId
+	//		item.CreateTime = log.CreateTime
+	//		item.ModifyTime = time.Now()
+	//		item.RegisterPlatform = log.RegisterPlatform
+	//		item.TableName = "cygx_article"
+	//		items = append(items, item)
+	//		labelArr = append(labelArr, v.SubjectName)
+	//	}
+	//	e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
+	//	if e != nil {
+	//		err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
+	//		return
+	//	}
+	//}
+
+	e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
+	if e != nil {
+		err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
+		return
 	}
 
 	return
@@ -465,6 +625,932 @@ func ReportSelectionWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis)
 		err = errors.New("AddWxUserRaiLabel" + e.Error())
 		return
 	}
+	return
+}
+
+func GetArticlelabelArrByArticleId(articleId int) (labelArr []string, sourceType int) {
+	articleDetail, e := models.GetArticleDetailTestById(articleId)
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+	if articleDetail.ArticleTypeId > 0 {
+		//正常的有产业报告
+		//建立首页资源表,与产业的关系
+		industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(articleId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			fmt.Println(e)
+			return
+		}
+		for _, v := range industrialList {
+			labelArr = append(labelArr, v.IndustryName)
+		}
+		//建立首页资源表,与标的 的关系
+		subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(articleId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			fmt.Println(e)
+			return
+		}
+		for _, v := range subjectList {
+			labelArr = append(labelArr, v.SubjectName)
+		}
+		sourceType = 7
+		return
+	}
+	articlePermission, e := models.GetArticlePermission(articleDetail.CategoryId)
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+	if articlePermission == nil {
+		fmt.Println(e)
+		return
+	}
+	articlePermissionName := articlePermission.PermissionName
+	matchTypeName := articlePermission.MatchTypeName
+	matchTypeNameArr := []string{"季度策略", "科技前沿(周报)", "本周荟", "智造精粹"}
+
+	//1;四大行业汇总类报告:季度策略、科技前沿(周报)、本周荟、智造精粹以报告类型做标签
+	//2:策略、固收的所有报告,以报告类型做标签
+	//var labelArr []string
+	if articlePermissionName == utils.CE_LUE_NAME || articlePermissionName == utils.GU_SHOU_NAME || utils.InArrayByStr(matchTypeNameArr, matchTypeName) { // 策略、固收的所有报告,以报告类型做标签
+		if matchTypeName == "季度策略" {
+			matchTypeName = articlePermissionName + matchTypeName //其中季度策略以:xx行业季度策略  呈现
+		}
+		labelArr = append(labelArr, matchTypeName)
+		sourceType = 8
+	} else if articlePermissionName == utils.ZHOU_QI_NAME {
+		//周期的行业深度、调研纪要、产业跟踪这些系列的报告用领域做标签,其余的周期报告,都用报告类型(也就是ficc定义的类型)做标签
+		//其中周期的周度观点,以 周期周度观点 呈现
+		matchTypeNameArrZhouqi := []string{"行业深度", "调研纪要", "产业跟踪"}
+		if utils.InArrayByStr(matchTypeNameArrZhouqi, matchTypeName) {
+			matchTypeName = articleDetail.FieldName
+		}
+		labelArr = append(labelArr, matchTypeName)
+		sourceType = 8
+	} else {
+
+		//正常的有产业报告
+		//建立首页资源表,与产业的关系
+		industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(articleId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			fmt.Println(e)
+			return
+		}
+		for _, v := range industrialList {
+			labelArr = append(labelArr, v.IndustryName)
+		}
+		//建立首页资源表,与标的 的关系
+		subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(articleId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			fmt.Println(e)
+			return
+		}
+		for _, v := range subjectList {
+			labelArr = append(labelArr, v.SubjectName)
+		}
+		sourceType = 7
+	}
 
 	return
 }
+
+//func init() {
+//	//fmt.Println(GetArticlelabelArrByArticleId(11037))
+//	//initCrm16_5Article2()
+//}
+
+func initCrm16_5keyWord() {
+
+	listKeyWords, err := models.GetSearchKeyWordinitCrm16_5()
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var mobiles []string
+	mapMobile := make(map[string]bool)
+	for _, v := range listKeyWords {
+		if mapMobile[v.Mobile] || v.Mobile == "" {
+			continue
+		}
+		mapMobile[v.Mobile] = true
+		mobiles = append(mobiles, v.Mobile)
+	}
+
+	listUser, err := models.GetWxUserListByMobileArr(mobiles)
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	mapUser := make(map[string]*models.WxUserItem)
+
+	for _, v := range listUser {
+		mapUser[v.Mobile] = v
+	}
+
+	var items []*models.WxUserRaiLabelLog
+	for _, v := range listKeyWords {
+		if mapUser[v.Mobile] == nil || v.Mobile == "" {
+			continue
+		}
+
+		wxUser := mapUser[v.Mobile]
+		item := new(models.WxUserRaiLabelLog)
+		item.UserId = wxUser.UserId
+		item.RealName = wxUser.RealName
+		item.Mobile = wxUser.Mobile
+		item.Email = wxUser.Email
+		item.CompanyId = wxUser.CompanyId
+		item.CompanyName = wxUser.CompanyName
+		item.Label = v.KeyWord
+		item.SourceType = 1
+		item.CreateTime = v.CreateTime
+		item.ModifyTime = time.Now()
+		item.RegisterPlatform = v.RegisterPlatform
+		items = append(items, item)
+	}
+	fmt.Println(len(items))
+
+	var itemsAdd []*models.WxUserRaiLabelLog
+	if len(items) > 0 {
+		for _, v := range items {
+			itemsAdd = append(itemsAdd, v)
+			if len(items)%2000 == 0 {
+				err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+				if err != nil {
+					return
+				}
+				itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
+			}
+
+		}
+	}
+	if len(itemsAdd) > 0 {
+		err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+		if err != nil {
+			return
+		}
+	}
+	fmt.Println("endAddWxUserRaiLabelLogMultiInit")
+}
+
+func initCrm16_5Activity() {
+	var condition string
+	var pars []interface{}
+	condition += ` AND	create_time > '2024-09-01'   AND  (is_meeting =1 OR duration != '')  `
+	pars = append(pars)
+	//获取提交到会的人员信息
+	signUpDetailList, err := models.GetSignupDetailList(condition, pars)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var mobiles []string
+
+	mapMobile := make(map[string]bool)
+
+	for _, v := range signUpDetailList {
+		if mapMobile[v.Mobile] || v.Mobile == "" {
+			continue
+		}
+		mapMobile[v.Mobile] = true
+		mobiles = append(mobiles, v.Mobile)
+	}
+
+	var activityIds []int
+	mapactivityId := make(map[int]bool)
+	for _, v := range signUpDetailList {
+		if mapactivityId[v.ActivityId] {
+			continue
+		}
+		mapactivityId[v.ActivityId] = true
+		activityIds = append(activityIds, v.ActivityId)
+	}
+
+	listUser, err := models.GetWxUserListByMobileArr(mobiles)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	mapUser := make(map[string]*models.WxUserItem)
+	for _, v := range listUser {
+		mapUser[v.Mobile] = v
+	}
+
+	activityDetailList, e := models.GetAddActivityDetailByActivityIdinitCrm16_5(activityIds)
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+
+	sourceTypemap := make(map[int]int)
+	mapLabel := make(map[int]string)
+
+	for _, v := range activityDetailList {
+		if v.ActivityType == 1 {
+			sourceTypemap[v.ActivityId] = 4
+		} else {
+			sourceTypemap[v.ActivityId] = 2
+		}
+		mapLabel[v.ActivityId] = v.Label
+	}
+
+	//正常的有产业报告
+
+	//建立首页资源表,与产业的关系
+	industrialList, e := models.GetIndustrialActivityGroupManagementListByArticleIds(activityIds)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		fmt.Println(e)
+		return
+	}
+
+	//建立首页资源表,与标的 的关系
+	subjectList, e := models.GetSubjectActivityGroupManagementListByActivityIds(activityIds)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		fmt.Println(e)
+		return
+	}
+
+	var items []*models.WxUserRaiLabelLog
+	for _, v := range signUpDetailList {
+		if mapUser[v.Mobile] == nil || v.Mobile == "" {
+			continue
+		}
+		var haseName bool
+		wxUser := mapUser[v.Mobile]
+		for _, vI := range industrialList {
+			if vI.ActivityId != v.ActivityId {
+				continue
+			}
+			haseName = true
+			item := new(models.WxUserRaiLabelLog)
+			item.UserId = wxUser.UserId
+			item.RealName = wxUser.RealName
+			item.Mobile = wxUser.Mobile
+			item.Email = wxUser.Email
+			item.CompanyId = wxUser.CompanyId
+			item.CompanyName = wxUser.CompanyName
+			item.Label = vI.IndustryName
+			item.SourceType = sourceTypemap[v.ActivityId]
+			item.SourceId = v.ActivityId
+			item.CreateTime = v.CreateTime
+			item.ModifyTime = time.Now()
+			item.TableName = ""
+			//item.RegisterPlatform = v.RegisterPlatform
+			items = append(items, item)
+		}
+
+		for _, vs := range subjectList {
+			if vs.ActivityId != v.ActivityId {
+				continue
+			}
+			haseName = true
+			item := new(models.WxUserRaiLabelLog)
+			item.UserId = wxUser.UserId
+			item.RealName = wxUser.RealName
+			item.Mobile = wxUser.Mobile
+			item.Email = wxUser.Email
+			item.CompanyId = wxUser.CompanyId
+			item.CompanyName = wxUser.CompanyName
+			item.Label = vs.SubjectName
+			item.SourceType = sourceTypemap[v.ActivityId]
+			item.SourceId = v.ActivityId
+			item.CreateTime = v.CreateTime
+			item.ModifyTime = time.Now()
+			//item.RegisterPlatform = v.RegisterPlatform
+			items = append(items, item)
+		}
+
+		//如果两个标签都没有,就添加临时标签
+		if !haseName {
+			item := new(models.WxUserRaiLabelLog)
+			item.UserId = wxUser.UserId
+			item.RealName = wxUser.RealName
+			item.Mobile = wxUser.Mobile
+			item.Email = wxUser.Email
+			item.CompanyId = wxUser.CompanyId
+			item.CompanyName = wxUser.CompanyName
+			item.Label = mapLabel[v.ActivityId]
+			item.SourceType = sourceTypemap[v.ActivityId]
+			item.SourceId = v.ActivityId
+			item.CreateTime = v.CreateTime
+			item.ModifyTime = time.Now()
+			//item.RegisterPlatform = v.RegisterPlatform
+			item.TableName = ""
+			items = append(items, item)
+		}
+
+	}
+	//fmt.Println("initCrm16_5Activity", len(items))
+	//return
+	var itemsAdd []*models.WxUserRaiLabelLog
+	if len(items) > 0 {
+		for _, v := range items {
+			itemsAdd = append(itemsAdd, v)
+			if len(itemsAdd)%2000 == 0 {
+				err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+				if err != nil {
+					return
+				}
+				itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
+			}
+
+		}
+	}
+	if len(itemsAdd) > 0 {
+		err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+		if err != nil {
+			return
+		}
+	}
+	fmt.Println("endAddWxUserRaiLabelLogMultiInit")
+}
+
+func initCrm16_5Article() {
+	var condition string
+	var pars []interface{}
+	condition += `  `
+	pars = append(pars)
+
+	listArticleIds, err := models.GetCygxArticleHistoryRecordAllListArticleIdCrm16_5()
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	fmt.Println("listArticleIds", len(listArticleIds))
+	listHave, err := models.GetWxUserRaiArticleLabelCrm16_5()
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	mapArticleId := make(map[int]bool)
+	for _, v := range listHave {
+		mapArticleId[v.ArticleId] = true
+	}
+	for k, v := range listArticleIds {
+		fmt.Println(k)
+		labelArr, sourceType := GetArticlelabelArrByArticleId(v.ArticleId)
+		if len(labelArr) == 0 {
+			continue
+		}
+		var items []*models.WxUserRaiArticleLabel
+		for _, v2 := range labelArr {
+			item := new(models.WxUserRaiArticleLabel)
+			item.ArticleId = v.ArticleId
+			item.Label = v2
+			item.SourceType = sourceType
+			item.CreateTime = time.Now()
+			items = append(items, item)
+		}
+
+		err = models.AddWxUserRaiArticleLabelMultiInit(items)
+		time.Sleep(time.Millisecond * 100)
+		fmt.Println(err)
+	}
+
+}
+
+func initCrm16_5Article2() {
+	var condition string
+	var pars []interface{}
+	condition += `  `
+	pars = append(pars)
+	//获取提交到会的人员信息
+	listArticleIds, err := models.GetCygxArticleHistoryRecordAllListUserIdCrm16_5()
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	fmt.Println("listArticleIds", len(listArticleIds))
+
+	mapUserId := make(map[string]bool)
+	var mobiles []string
+	for _, v := range listArticleIds {
+		if mapUserId[v.Mobile] {
+			continue
+		}
+		mobiles = append(mobiles, v.Mobile)
+		mapUserId[v.Mobile] = true
+	}
+
+	listUser, err := models.GetWxUserListByMobileArr(mobiles)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	mapUser := make(map[string]*models.WxUserItem)
+	for _, v := range listUser {
+		mapUser[v.Mobile] = v
+	}
+
+	listArticleLabel, err := models.GetWxUserRaiArticleLabelAllCrm16_5()
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	mapArticleLabel := make(map[int][]string)
+	mapArticleType := make(map[int]int)
+	for _, v := range listArticleLabel {
+		mapArticleLabel[v.ArticleId] = append(mapArticleLabel[v.ArticleId], v.Label)
+		mapArticleType[v.ArticleId] = v.SourceType
+	}
+
+	var items []*models.WxUserRaiLabelLog
+	for _, v := range listArticleIds {
+		if mapUser[v.Mobile] == nil || v.Mobile == "" {
+			continue
+		}
+		if len(mapArticleLabel[v.ArticleId]) == 0 {
+			continue
+		}
+		wxUser := mapUser[v.Mobile]
+		for _, vI := range mapArticleLabel[v.ArticleId] {
+			item := new(models.WxUserRaiLabelLog)
+			item.UserId = wxUser.UserId
+			item.RealName = wxUser.RealName
+			item.Mobile = wxUser.Mobile
+			item.Email = wxUser.Email
+			item.CompanyId = wxUser.CompanyId
+			item.CompanyName = wxUser.CompanyName
+			item.Label = vI
+			item.SourceType = mapArticleType[v.ArticleId]
+			item.SourceId = v.ArticleId
+			item.CreateTime = utils.StrTimeToTime(v.CreateTime)
+			item.ModifyTime = time.Now()
+			item.TableName = "cygx_article"
+			//item.RegisterPlatform = v.RegisterPlatform
+			items = append(items, item)
+		}
+
+	}
+	fmt.Println("items", len(items))
+
+	var itemsAdd []*models.WxUserRaiLabelLog
+	if len(items) > 0 {
+		for _, v := range items {
+			itemsAdd = append(itemsAdd, v)
+			if len(itemsAdd)%2000 == 0 {
+				err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+				if err != nil {
+					fmt.Println(err)
+					return
+				}
+				itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
+			}
+
+		}
+	}
+	if len(itemsAdd) > 0 {
+		err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+		if err != nil {
+			fmt.Println(err)
+			return
+		}
+	}
+	fmt.Println("endAddWxUserRaiLabelLogMultiInit")
+
+}
+
+////func init() {
+//	//initCrm16_5keyWord()
+//	//initCrm16_5Activity()
+//	//initCrm16_5Article2()
+//	//initCrm16_5ReportHistory()
+//	//initCrm16_5ReportHistory_2()
+//	//initCrm16_5Roadshow()
+//
+//	fmt.Println("end RO")
+//
+//	initCrm16_5wx_user_rai_label()
+//
+//	fmt.Println("end RO2")
+//}
+
+// 记录用户在重点公司单独点了某一个标签
+func initCrm16_5ReportHistory_0() {
+	var err error
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("SendCygxReportSelectionLogApplyTemplateMsg Err"+err.Error(), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+
+	listhistory, err := models.GetCygxReportSelectionSubjectHistory()
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	for kH, vH := range listhistory {
+		fmt.Println(kH)
+		pars = make([]interface{}, 0)
+		condition = ` AND article_id = ?  AND industrial_subject_id = ? AND  industrial_management_id = ? AND  third_id = ? `
+		pars = append(pars, vH.ArticleId, vH.IndustrialSubjectId, vH.IndustrialManagementId, vH.ThirdId)
+		listLog, e := models.GetCygxReportSelectionLog(condition, pars, 0, 9999)
+		if e != nil {
+			err = errors.New("GetCygxReportSelectionLog, Err: " + e.Error())
+			fmt.Println(err)
+			return
+		}
+		var labelName string
+		for _, v2 := range listLog {
+			if v2.ThirdId > 0 {
+				labelName = v2.ThirdName
+			} else if v2.IndustrialSubjectId == 0 && v2.IndustrialManagementId != "" {
+				labelName = v2.IndustrialManagementNames
+			} else {
+				labelName = v2.SubjectName
+			}
+		}
+		err = models.UpdateCygxReportSelectionSubjectHistoryName(labelName, vH.Id)
+		if err != nil {
+			fmt.Println(err)
+			return
+		}
+	}
+	fmt.Println("end")
+
+	return
+}
+
+func initCrm16_5ReportHistory() {
+
+	listReportHistory, err := models.GetWxUserRaiCygxReportHistoryRecordCrm16_5()
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var mobiles []string
+	mapMobile := make(map[string]bool)
+	for _, v := range listReportHistory {
+		if mapMobile[v.Mobile] || v.Mobile == "" {
+			continue
+		}
+		mapMobile[v.Mobile] = true
+		mobiles = append(mobiles, v.Mobile)
+	}
+
+	listUser, err := models.GetWxUserListByMobileArr(mobiles)
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	mapUser := make(map[string]*models.WxUserItem)
+
+	for _, v := range listUser {
+		mapUser[v.Mobile] = v
+	}
+
+	var items []*models.WxUserRaiLabelLog
+	for _, v := range listReportHistory {
+		if mapUser[v.Mobile] == nil || v.Mobile == "" {
+			continue
+		}
+		wxUser := mapUser[v.Mobile]
+		item := new(models.WxUserRaiLabelLog)
+		item.UserId = wxUser.UserId
+		item.RealName = wxUser.RealName
+		item.Mobile = wxUser.Mobile
+		item.Email = wxUser.Email
+		item.CompanyId = wxUser.CompanyId
+		item.CompanyName = wxUser.CompanyName
+		if v.ReportType == "bgjx" {
+			item.Label = "重点推荐"
+			item.TableName = "cygx_report_selection"
+		} else {
+			item.Label = "本周研究汇总"
+			item.TableName = "cygx_research_summary"
+		}
+		item.SourceId = v.ArticleId
+		item.SourceType = 8
+		item.CreateTime = v.CreateTime
+		item.ModifyTime = time.Now()
+		item.RegisterPlatform = v.RegisterPlatform
+		items = append(items, item)
+	}
+	fmt.Println("items", len(items))
+
+	var itemsAdd []*models.WxUserRaiLabelLog
+	if len(items) > 0 {
+		for _, v := range items {
+			itemsAdd = append(itemsAdd, v)
+			if len(items)%2000 == 0 {
+				err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+				if err != nil {
+					return
+				}
+				itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
+			}
+		}
+	}
+	if len(itemsAdd) > 0 {
+		err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+		if err != nil {
+			return
+		}
+	}
+	fmt.Println("endAddWxUserRaiLabelLogMultiInit")
+}
+
+func initCrm16_5ReportHistory_2() {
+
+	listReportHistory, err := models.GetCygxReportSelectionSubjectHistory()
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var mobiles []string
+	mapMobile := make(map[string]bool)
+	for _, v := range listReportHistory {
+		if mapMobile[v.Mobile] || v.Mobile == "" {
+			continue
+		}
+		mapMobile[v.Mobile] = true
+		mobiles = append(mobiles, v.Mobile)
+	}
+
+	listUser, err := models.GetWxUserListByMobileArr(mobiles)
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	mapUser := make(map[string]*models.WxUserItem)
+	for _, v := range listUser {
+		mapUser[v.Mobile] = v
+	}
+
+	var items []*models.WxUserRaiLabelLog
+	for _, v := range listReportHistory {
+		if mapUser[v.Mobile] == nil || v.Mobile == "" || v.LableName == "" {
+			continue
+		}
+		wxUser := mapUser[v.Mobile]
+		item := new(models.WxUserRaiLabelLog)
+		item.UserId = wxUser.UserId
+		item.RealName = wxUser.RealName
+		item.Mobile = wxUser.Mobile
+		item.Email = wxUser.Email
+		item.CompanyId = wxUser.CompanyId
+		item.CompanyName = wxUser.CompanyName
+		item.Label = v.LableName
+		item.SourceType = 8
+		item.CreateTime = v.CreateTime
+		item.ModifyTime = time.Now()
+		item.RegisterPlatform = v.RegisterPlatform
+		items = append(items, item)
+	}
+	fmt.Println("items", len(items))
+
+	var itemsAdd []*models.WxUserRaiLabelLog
+	if len(items) > 0 {
+		for _, v := range items {
+			itemsAdd = append(itemsAdd, v)
+			if len(items)%2000 == 0 {
+				err = models.AddWxUserRaiLabelLogMultiInit(items)
+				if err != nil {
+					return
+				}
+				itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
+			}
+
+		}
+	}
+	if len(itemsAdd) > 0 {
+		err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+		if err != nil {
+			return
+		}
+	}
+	fmt.Println("endAddWxUserRaiLabelLogMultiInit")
+}
+
+func initCrm16_5Roadshow() {
+	var condition string
+	var pars []interface{}
+	condition = " "
+	calendarMeetingUserList, e := roadshow.GetRsCalendarMeetingUserList(condition+"  ORDER BY rs.start_date ASC ", pars)
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+	var rsCalendarIds []int
+	for _, v := range calendarMeetingUserList {
+		rsCalendarIds = append(rsCalendarIds, v.RsCalendarId)
+	}
+
+	var mobiles []string
+	mapMobile := make(map[string]bool)
+	for _, v := range calendarMeetingUserList {
+		if mapMobile[v.Mobile] || v.Mobile == "" {
+			continue
+		}
+		mapMobile[v.Mobile] = true
+		mobiles = append(mobiles, v.Mobile)
+	}
+
+	RsCalendarListInit, e := roadshow.GetRsCalendarListInit(rsCalendarIds)
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+	mapRoadshowType := make(map[int]int)
+	for _, v := range RsCalendarListInit {
+		if v.RoadshowType == "线下" {
+			mapRoadshowType[v.RsCalendarId] = 3
+		} else {
+			mapRoadshowType[v.RsCalendarId] = 5
+		}
+	}
+
+	listUser, err := models.GetWxUserListByMobileArr(mobiles)
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	mapUser := make(map[string]*models.WxUserItem)
+
+	for _, v := range listUser {
+		mapUser[v.Mobile] = v
+	}
+
+	var items []*models.WxUserRaiLabelLog
+	for _, v := range calendarMeetingUserList {
+		if mapUser[v.Mobile] == nil || v.Mobile == "" {
+			continue
+		}
+		wxUser := mapUser[v.Mobile]
+		var sourceType int
+		sourceType = mapRoadshowType[v.RsCalendarId]
+
+		totalGroup, e := roadshow.GetRsCalendarMeetingLabelGroupByRsCalendarId(v.RsCalendarId)
+		if e != nil {
+			err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
+			return
+		}
+		//var lebelDetail []*cygx.RaiServeTagResp
+		var label string
+		var labelArr []string
+		if totalGroup > 0 {
+			listGroup, e := roadshow.GetRsCalendarMeetingLabelGroupListByRsCalendarId(v.RsCalendarId)
+			if e != nil {
+				err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
+				return
+			}
+			var industrialManagementIds []int
+			var industrialSubjectIds []int
+
+			mapindustrialManagementName := make(map[int]string)
+			mapindustrialSubjectName := make(map[int]string)
+			mapCelueName := make(map[int]string)
+			for _, vG := range listGroup {
+				switch vG.TagType {
+				case 1:
+					industrialManagementIds = append(industrialManagementIds, vG.TagId)
+				case 2:
+					industrialSubjectIds = append(industrialSubjectIds, vG.TagId)
+				case 3:
+					mapCelueName[vG.TagId] = "策略"
+				}
+			}
+
+			if len(industrialManagementIds) > 0 {
+				IndustryList, e := models.GetIndustryListByConditionByIds(industrialManagementIds)
+				if e != nil {
+					err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
+					return
+				}
+				for _, vI := range IndustryList {
+					mapindustrialManagementName[vI.IndustrialManagementId] = vI.IndustryName
+				}
+			}
+
+			if len(industrialSubjectIds) > 0 {
+				SubjectList, e := models.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
+				if e != nil {
+					err = errors.New("GetIndustrialSubjectDetailByIds" + e.Error())
+					return
+				}
+				for _, vS := range SubjectList {
+					mapindustrialSubjectName[vS.IndustrialSubjectId] = vS.SubjectName
+				}
+			}
+
+			for _, vG := range listGroup {
+				switch vG.TagType {
+				case 1:
+					label = mapindustrialManagementName[vG.TagId]
+				case 2:
+					label = mapindustrialSubjectName[vG.TagId]
+				case 3:
+					label = mapCelueName[vG.TagId]
+				}
+				item := new(models.WxUserRaiLabelLog)
+				item.UserId = wxUser.UserId
+				item.RealName = wxUser.RealName
+				item.Mobile = wxUser.Mobile
+				item.Email = wxUser.Email
+				item.CompanyId = wxUser.CompanyId
+				item.CompanyName = wxUser.CompanyName
+				item.Label = label
+				item.SourceType = sourceType
+				item.SourceId = v.RsCalendarId
+				item.CreateTime = v.CreateTime
+				item.ModifyTime = time.Now()
+				//item.RegisterPlatform = log.RegisterPlatform
+				item.TableName = ""
+				items = append(items, item)
+				labelArr = append(labelArr, label)
+			}
+		}
+	}
+	fmt.Println("items", len(items))
+
+	var itemsAdd []*models.WxUserRaiLabelLog
+	if len(items) > 0 {
+		for _, v := range items {
+			itemsAdd = append(itemsAdd, v)
+			if len(items)%2000 == 0 {
+				err = models.AddWxUserRaiLabelLogMultiInit(items)
+				if err != nil {
+					return
+				}
+				itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
+			}
+		}
+	}
+	if len(itemsAdd) > 0 {
+		err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
+		if err != nil {
+			return
+		}
+	}
+	fmt.Println("endAddWxUserRaiLabelLogMultiInit")
+}
+
+func initCrm16_5wx_user_rai_label() {
+
+	listAll, err := models.GetWxUserRaiLabelLogAll()
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	mapMobileLabel := make(map[string]bool)
+	var items []*models.WxUserRaiLabel
+	for _, v := range listAll {
+		if mapMobileLabel[fmt.Sprint(v.Mobile, "__", v.Label)] {
+			continue
+		}
+		item := new(models.WxUserRaiLabel)
+		item.UserId = v.UserId
+		item.RealName = v.RealName
+		item.Mobile = v.Mobile
+		item.Email = v.Email
+		item.CompanyId = v.CompanyId
+		item.CompanyName = v.CompanyName
+		item.Label = v.Label
+		item.SourceId = v.SourceId
+		item.SourceType = v.SourceType
+		item.CreateTime = v.CreateTime
+		item.ModifyTime = v.ModifyTime
+		item.RegisterPlatform = v.RegisterPlatform
+		item.TableName = v.TableName
+		items = append(items, item)
+
+		mapMobileLabel[fmt.Sprint(v.Mobile, "__", v.Label)] = true
+	}
+
+	var itemsAdd []*models.WxUserRaiLabel
+	if len(items) > 0 {
+		for _, v := range items {
+			itemsAdd = append(itemsAdd, v)
+			if len(items)%2000 == 0 {
+				err = models.AddWxUserRaiLabelMultiInit(items)
+				if err != nil {
+					return
+				}
+				itemsAdd = make([]*models.WxUserRaiLabel, 0)
+			}
+		}
+	}
+	if len(itemsAdd) > 0 {
+		err = models.AddWxUserRaiLabelMultiInit(itemsAdd)
+		if err != nil {
+			return
+		}
+	}
+
+	fmt.Println("endAddWxUserRaiLabelLogMultiInit")
+}

+ 1 - 1
utils/constants.go

@@ -143,7 +143,7 @@ const (
 
 const (
 	SHANG_HAI_CRM_API_TOKEN = "SHANG_HAI_CRM_API_TOKEN"
-	WX_USER_RAI_LABEL_KEY   = "WX_USER_RAI_LABEL_KEY" //用户列表标签key
+	WX_USER_RAI_LABEL_KEY   = "CYGX_WX_USER_RAI_LABEL_KEY" //用户列表标签key
 )
 
 // 邀请机构标识