zhangchuanxing 1 mese fa
parent
commit
0377166a6a

+ 34 - 0
models/article_history_record_all.go

@@ -112,3 +112,37 @@ 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
+    		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
+}

+ 1 - 0
models/db.go

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

+ 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
+}

+ 8 - 0
models/report_selection_subject_history.go

@@ -34,3 +34,11 @@ 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
+}

+ 59 - 0
models/wx_user_rai_label.go

@@ -190,3 +190,62 @@ func AddWxUserRaiLabelLogMultiInit(items []*WxUserRaiLabelLog) (err error) {
 
 	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 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+		if err != nil {
+			return
+		}
+	}
+
+	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
+}

+ 41 - 0
services/report_selection.go

@@ -102,3 +102,44 @@ func GetReportSelectionLabelName(req models.AddCygxReportSelectionSubjectHistory
 	ReportSelectionWxUserRaiLabelRedisAdd(req.ArticleId, userId, time.Now(), "cygx_report_selection", labelName)
 	return
 }
+
+// 记录用户在重点公司单独点了某一个标签
+//func UpdateReportSelectionLabelNameInit() {
+//	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
+//	}
+//
+//	condition = ` AND article_id = ?  AND industrial_subject_id = ? AND  industrial_management_id = ? AND  third_id = ? `
+//	pars = append(pars, req.ArticleId, req.IndustrialSubjectId, req.IndustrialManagementId, req.ThirdId)
+//	listLog, e := models.GetCygxReportSelectionLog(condition, pars, 0, 9999)
+//	if e != nil {
+//		err = errors.New("GetCygxReportSelectionLog, Err: " + e.Error())
+//		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
+//		}
+//	}
+//	if labelName == "" {
+//		return
+//	}
+//	ReportSelectionWxUserRaiLabelRedisAdd(req.ArticleId, userId, time.Now(), "cygx_report_selection", labelName)
+//	return
+//}

+ 315 - 1
services/wx_user_rai_label.go

@@ -597,8 +597,96 @@ func ReportSelectionWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis)
 	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() {
-//	initCrm16_5Activity()
+//	//fmt.Println(GetArticlelabelArrByArticleId(11037))
+//	//initCrm16_5Article2()
 //}
 
 func initCrm16_5keyWord() {
@@ -803,6 +891,232 @@ func initCrm16_5Activity() {
 	}
 	fmt.Println(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 {
+					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 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 == "" {
+			item.Label = "重点推荐"
+		} else {
+			item.Label = "本周研究汇总"
+		}
+		item.SourceType = 8
+		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 {