Explorar el Código

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

xingzai hace 10 meses
padre
commit
6c50d55526
Se han modificado 4 ficheros con 449 adiciones y 16 borrados
  1. 0 14
      controllers/chart_permission.go
  2. 33 0
      models/article.go
  3. 5 1
      models/report.go
  4. 411 1
      services/article.go

+ 0 - 14
controllers/chart_permission.go

@@ -230,20 +230,6 @@ func (this *ChartPermissionAuthController) StrategyDetail() {
 		resp.List = append(resp.List, v)
 	}
 
-	if chartPermissionId == utils.CE_LUE_ID {
-		for _, v := range resp.List {
-			switch v.ListGroup {
-			case 1:
-				resp.ListGroup1 = append(resp.ListGroup1, v)
-			case 2:
-				resp.ListGroup2 = append(resp.ListGroup2, v)
-			case 3:
-				resp.ListGroup3 = append(resp.ListGroup3, v)
-			case 4:
-				resp.ListGroup4 = append(resp.ListGroup4, v)
-			}
-		}
-	}
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 33 - 0
models/article.go

@@ -960,3 +960,36 @@ func GetCygxCygxArticleListByConditionSoloTag(articleTypeCondSlice, activityType
 
 	return
 }
+
+// 获取文章列表
+func GetArticleInit13_5() (items []*ArticleDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	art.title,
+	art.article_id,
+	art.category_id,
+	art.publish_date,
+	art.is_class,
+	art.publish_status,
+	art.is_filter,
+	art.stock,
+	art.field_name,
+	art.id,
+	art.article_id_md5,
+	re.chart_permission_name,
+	re.match_type_name,
+	art.sub_category_name,
+	re.chart_permission_id 
+FROM
+	cygx_article AS art
+	LEFT JOIN cygx_report_mapping AS ret ON ret.category_id = art.category_id_two
+	LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id
+	LEFT JOIN cygx_industrial_article_group_management AS man ON man.article_id = art.article_id 
+WHERE
+	1 = 1 
+	
+	AND art.category_id IN ( SELECT category_id FROM cygx_report_mapping WHERE match_type_name = '热点问答' ) 
+	AND re.chart_permission_id = 22   	GROUP BY  art.article_id `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 5 - 1
models/report.go

@@ -224,6 +224,8 @@ func IndustrialToArticleAndProductInteriorCategoryNew(industrialManagementId int
 	o := orm.NewOrm()
 	sql := `SELECT
 			map.match_type_name,
+			map.sort,
+			map.id,
 			map.id AS category_id 
 		FROM
 			cygx_report_mapping_cygx AS map
@@ -242,6 +244,8 @@ func IndustrialToArticleAndProductInteriorCategoryNew(industrialManagementId int
 			map.match_type_name UNION ALL
 		SELECT
 			map.match_type_name,
+			map.sort,
+			map.id,
 			map.id AS category_id 
 		FROM
 			cygx_report_mapping_cygx AS map
@@ -254,7 +258,7 @@ func IndustrialToArticleAndProductInteriorCategoryNew(industrialManagementId int
 			AND art.visible_range = 1 
 			AND man_g.industrial_management_id = ? 
 		GROUP BY
-			map.match_type_name`
+				map.match_type_name  	ORDER BY  id ASC ,  sort DESC   `
 	_, err = o.Raw(sql, industrialManagementId, industrialManagementId).QueryRows(&items)
 	return
 }

+ 411 - 1
services/article.go

@@ -736,7 +736,7 @@ func UpdateArticleByRedis() (err error) {
 //	//for i := 8648; i < 9004; i++ {
 //	//	HandleArticleListByApi(9552)
 //	//}
-//	HandleArticleListByApi(9551)
+//	HandleArticleListByApi(10875)
 //	//UpdateArticleResourceData(9551)
 //}
 
@@ -864,6 +864,19 @@ func HandleArticleListByApi(artcleId int) (err error) {
 		item.CategoryIdTwo = exitMap[articleResult.SeriesId]
 		item.SubCategoryName = articleResult.Series.Name
 		item.Cover = cover
+
+		{
+			//这两种情况特殊处理
+			if articleResult.Field.Name == "宏观利率" {
+				item.CategoryId = 10070
+				item.CategoryIdTwo = item.CategoryId
+			}
+			if articleResult.Field.Name == "信用" {
+				item.CategoryId = 10082
+				item.CategoryIdTwo = item.CategoryId
+			}
+		}
+
 		if len(articleResult.Stock) > 0 {
 			var stock string
 			for _, vS := range articleResult.Stock {
@@ -2287,3 +2300,400 @@ func GetYxArticleIdMap(articleIds []int) (mapResp map[int]bool) {
 	}
 	return
 }
+
+//func init() {
+//
+//	listarticle, err := models.GetArticleInit13_5()
+//	fmt.Println(err)
+//	fmt.Println("listarticle", len(listarticle))
+//
+//	for _, v := range listarticle {
+//		HandleArticleListByApiInit13_5(v.ArticleId)
+//	}
+//	//HandleArticleListByApiInit13_5(10825)
+//
+//}
+
+// 处理同步过来的文章
+func HandleArticleListByApiInit13_5(artcleId int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("处理同步策略平台数据失败"+"GetArticleListByApi ErrMsg:"+err.Error()+"artcleId:"+strconv.Itoa(artcleId), 2)
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error()+"artcleId:"+strconv.Itoa(artcleId), utils.EmailSendToUsers)
+		}
+	}()
+	var clueApiUrl string
+	clueApiUrl = fmt.Sprint(utils.ApiUrl, "articles/", artcleId)
+	fmt.Println(clueApiUrl)
+
+	authorization := utils.ApiAuthorization
+	body, err := PublicGetDate(clueApiUrl, authorization)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var articleResultDate models.ArticleDetailResultApi
+	err = json.Unmarshal(body, &articleResultDate)
+	if err != nil {
+		fmt.Println("Getres.PublicGetDate Err:", err.Error())
+		return err
+	}
+	item := new(models.CygxShanghaiCompanyLog)
+	item.CreateTime = time.Now()
+	item.Url = clueApiUrl
+	item.Body = ""
+	item.Result = string(body)
+
+	articleResult := articleResultDate.Data
+
+	exitMap := make(map[int]int)
+	categoryIdMap := make(map[int]int)
+	classMap := make(map[int]int)
+	reportMap := make(map[int]int)
+	summaryMap := make(map[int]int)
+	listMap, err := models.GetArticleApiMap()
+	if err != nil {
+		fmt.Println("GetlistMap Err:", err.Error())
+		return err
+	}
+
+	//新旧分类 反向隐射,是否归类,是否是报告,是否是纪要库
+	for _, v := range listMap {
+		exitMap[v.SeriesId] = v.OldId
+		categoryIdMap[v.SeriesId] = v.OldIdMap
+		if v.IsClass == 1 {
+			classMap[v.OldId] = 1
+		}
+		if v.IsReport == 1 {
+			reportMap[v.OldId] = 1
+		}
+		if v.IsSummary == 1 {
+			summaryMap[v.OldId] = 1
+		}
+	}
+	var list []*models.Tactics2
+	var listArticleData []*models.CygxArticleData
+	var listAuthor []*models.CygxArticleAuthor
+	//如果是英文报告 ,或者香港类型那么则不同步  publish_area   :all  全部  ;hk 香港
+	if articleResult.TypeId == 9 || articleResult.PublishArea != "all" {
+		// 如果是英文报告,或者是香港报告就进行删除处理
+		err = models.UpdateArticlePublish(artcleId, 0)
+		if err != nil {
+			fmt.Println("UpdateArticlePublish Err:", err.Error())
+			return err
+		}
+		UpdateArticleResourceData(artcleId) //把数据写入 cygx_resource_data 表
+		return
+	}
+
+	var cover string
+	if articleResult.Series.Name == "图解市场" {
+		cover = GetArticleCoverByChartFirst(articleResult.Content.Body)
+	} else if articleResult.Series.Name == "行业深度" {
+		cover = articleResult.Cover
+	}
+	fmt.Println(cover)
+	//return
+	//状态等于 2 跟 4 的进行同步 IsActive 为false 软删除的也不同步
+	if exitMap[articleResult.SeriesId] > 0 && (articleResult.PublishStatus == 2 || articleResult.PublishStatus == 4) && articleResult.IsActive {
+		articleResult.PublishDate = time.Date(articleResult.PublishDate.Year(), articleResult.PublishDate.Month(), articleResult.PublishDate.Day(), articleResult.PublishDate.Hour(), articleResult.PublishDate.Minute(), articleResult.PublishDate.Second(), articleResult.PublishDate.Nanosecond(), time.Local)
+		item := new(models.Tactics2)
+		itemArticleData := new(models.CygxArticleData)
+		itemArticleData.ArticleId = articleResult.ArticleId
+		itemArticleData.Cover = articleResult.Cover
+		itemArticleData.CreateTime = time.Now()
+		listArticleData = append(listArticleData, itemArticleData)
+		itemAuthor := new(models.CygxArticleAuthor)
+		item.ArticleId = articleResult.ArticleId
+		item.Title = articleResult.Title
+		item.TitleEn = articleResult.TitleEn
+		item.File = articleResult.File
+		if articleResult.Frequency == "日度" {
+			item.UpdateFrequency = "daily"
+		} else if articleResult.Frequency == "周度" {
+			item.UpdateFrequency = "weekly"
+		} else if articleResult.Frequency == "月度" {
+			item.UpdateFrequency = "monthly"
+		} else if articleResult.Frequency == "季度" {
+			item.UpdateFrequency = "quarterly"
+		} else if articleResult.Frequency == "年度" {
+			item.UpdateFrequency = "yearly"
+		} else {
+			item.UpdateFrequency = "unknow"
+		}
+		item.CreateDate = articleResult.CreateDate
+		item.PublishDate = articleResult.PublishDate.Add(time.Hour * 8)
+		item.PublishStatus = 1
+		item.Body = articleResult.Content.Body
+		item.Abstract = articleResult.Content.Abstract
+		item.Annotation = articleResult.Content.Annotation
+		item.CategoryName = articleResult.Industry.Name
+		item.CategoryId = categoryIdMap[articleResult.SeriesId]
+		item.CategoryIdTwo = exitMap[articleResult.SeriesId]
+		item.SubCategoryName = articleResult.Series.Name
+		item.Cover = cover
+
+		fmt.Println("item.CategoryIdTwo", item.CategoryIdTwo)
+		fmt.Println("item.CategoryId", item.CategoryId)
+
+		{
+			//这两种情况特殊处理
+			if articleResult.Field.Name == "宏观利率" {
+				item.CategoryId = 10070
+				item.CategoryIdTwo = item.CategoryId
+			}
+			if articleResult.Field.Name == "信用" {
+				item.CategoryId = 10082
+				item.CategoryIdTwo = item.CategoryId
+			}
+		}
+
+		if len(articleResult.Stock) > 0 {
+			var stock string
+			for _, vS := range articleResult.Stock {
+				stock += vS + "/"
+			}
+			stock = strings.TrimRight(stock, "/")
+			item.Stock = stock
+		}
+		item.FieldName = articleResult.Field.Name
+		item.TypeName = articleResult.Type.Name
+		item.UpdateDate = articleResult.UpdateDate
+		item.CeLueFieldId = articleResult.Field.Id
+		list = append(list, item)
+		itemAuthor.ArticleId = articleResult.ArticleId
+		itemAuthor.Name = articleResult.Author.Name
+		itemAuthor.Mobile = articleResult.Author.PhoneNumber
+		fmt.Println(articleResult.Cover)
+		listAuthor = append(listAuthor, itemAuthor)
+	} else {
+		// 如果这篇文章没有发布,那么就不作处理。
+		err = models.UpdateArticlePublish(artcleId, 0)
+		if err != nil {
+			fmt.Println("UpdateArticlePublish Err:", err.Error())
+			return err
+		}
+		UpdateArticleResourceData(artcleId) //把数据写入 cygx_resource_data 表
+		//go UpdateResourceData(artcleId, "article", "delete", time.Now().Format(utils.FormatDateTime))
+		return
+	}
+
+	fmt.Println("同步文章条数:", len(list))
+	listCustomArticle, err := models.GetCustomArticleId() //手动归类的文章,不替换文章类型
+	if err != nil {
+		fmt.Println("GetTacticsList Err:", err.Error())
+		return err
+	}
+	listGetMatchTypeName, errMatch := models.GetMatchTypeNamenNotNull() //手动归类的文章,不替换文章类型
+	if errMatch != nil {
+		fmt.Println("GetTacticsList Err:", errMatch.Error())
+		return err
+	}
+	//mapCategoryIdSet := make(map[int]int)
+	//for _, vMatch := range listGetMatchTypeName {
+	//	mapCategoryIdSet[vMatch.CategoryId] = vMatch.CategoryIdSet
+	//}
+	fmt.Println("list len:", len(list))
+	noSummaryArticleIds := "" //非纪要库类型的文章ID
+	listNoSummaryArticleIds := strings.Split(noSummaryArticleIds, ",")
+	for k, v := range list {
+		//同步匹配类型
+		matchTypeName := ""
+		for _, vMatch := range listGetMatchTypeName {
+			if v.CategoryId == vMatch.CategoryId {
+				matchTypeName = vMatch.MatchTypeName
+			}
+		}
+		//是否属于纪要库的数据
+		//if _, has := summaryMap[v.CategoryId]; has {
+		//	v.IsSummary = 1
+		//}
+		if v.TypeName == "纪要" {
+			v.IsSummary = 1
+		}
+		//排除不属于纪要库类型的文章
+		for _, vArt := range listNoSummaryArticleIds {
+			vArtInt, _ := strconv.Atoi(vArt)
+			if v.ArticleId == vArtInt {
+				v.IsSummary = 0
+			}
+		}
+		if _, has := reportMap[v.CategoryIdTwo]; has {
+			v.IsReport = 1
+			if _, ok := classMap[v.CategoryIdTwo]; ok {
+				v.IsClass = 1
+				v.ReportType = 1 //是否属于行业报告
+			} else {
+				v.ReportType = 2 //是否属于产业报告
+			}
+		}
+		v.Department = "弘则权益研究"
+		//判断是否已经存在
+		if v.ArticleId < 0 {
+			fmt.Println("AddCygxArticle Err:")
+			return err
+		}
+		var count int
+		count, err = models.GetArticleCountById(v.ArticleId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println("AddCygxArticle Err:", err.Error())
+			return err
+		}
+		v.Body = strings.Replace(v.Body, "http://vmp.hzinsights.com", "https://vmp.hzinsights.com", -1)
+		expertNumStr, expertContentStr, interviewDateStr, _, bodyReturn := BodyAnalysis2(v.Body)
+		if strings.Index(v.Body, "报告全文(") > 0 && strings.Index(v.Body, "PDF格式报告下载.pdf") > 0 {
+			v.Body = strings.Replace(v.Body, "报告全文(", "", -1)
+			v.Body = strings.Replace(v.Body, "PDF格式报告下载.pdf", "", -1)
+			v.Body = strings.Replace(v.Body, "):", "", -1)
+		}
+		var titleNew string
+		titleNew = v.Title
+		// 7资金流向 、11大类资产 、51每日复盘 、80医药周报、9估值研究
+		if v.CategoryId == 7 || v.CategoryId == 11 || v.CategoryId == 51 || v.CategoryId == 9 {
+			if v.UpdateFrequency == "daily" {
+				var daystr string
+				daystr = strconv.Itoa(v.PublishDate.Day())
+				if len(daystr) == 1 {
+					daystr = "0" + daystr
+				}
+				titleNew = v.Title + "(" + strconv.Itoa(v.PublishDate.Year())[2:len(strconv.Itoa(v.PublishDate.Year()))-0] + v.PublishDate.Format("01") + daystr + ")"
+			} else if v.UpdateFrequency == "weekly" {
+				titleNew = v.Title + utils.WeekByDate(v.PublishDate)
+			}
+		}
+		if v.CategoryId == 80 {
+			titleNew = v.Title + utils.WeekByDate(v.PublishDate)
+		}
+
+		//类型是综述报告的,不区分是什么系列,统一归类到对应产业的路演精华
+		if articleResult.Type.Name == "综述报告" {
+			detailCategory, err := models.GetdetailByCategoryIdLyjh(v.CategoryIdTwo)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				return err
+			}
+			v.CategoryId = detailCategory.CategoryId
+			v.IsSummary = 0
+		}
+
+		if count > 0 {
+			fmt.Println(k, v.ArticleId, "edit")
+
+			bodyText, _ := GetReportContentTextSubNew(v.Body)
+
+			var isCustom bool
+			updateParams := make(map[string]interface{})
+			//updateParams["Title"] = v.Title
+			updateParams["Title"] = titleNew
+			updateParams["TitleEn"] = v.TitleEn
+			updateParams["UpdateFrequency"] = v.UpdateFrequency
+			updateParams["CreateDate"] = v.CreateDate
+			updateParams["PublishDate"] = v.PublishDate
+			//updateParams["Body"] = html.EscapeString(v.Body)
+			updateParams["Body"] = html.EscapeString(bodyReturn)
+			updateParams["BodyText"] = bodyText
+			updateParams["Abstract"] = html.EscapeString(v.Abstract)
+			updateParams["CategoryName"] = v.CategoryName
+			for _, vCustom := range listCustomArticle {
+				if v.ArticleId == vCustom.ArticleId {
+					fmt.Println("手动归类的文章:" + strconv.Itoa(v.ArticleId))
+					isCustom = true
+				}
+			}
+			if isCustom == false {
+				updateParams["CategoryId"] = v.CategoryId
+				updateParams["MatchTypeName"] = matchTypeName
+				updateParams["IsSummary"] = v.IsSummary
+				updateParams["IsReport"] = v.IsReport
+				updateParams["ReportType"] = v.ReportType
+				updateParams["SubCategoryName"] = v.SubCategoryName
+			}
+			//updateParams["CategoryId"] = v.CategoryId
+			updateParams["PublishStatus"] = 1
+			updateParams["ExpertBackground"] = expertContentStr
+			updateParams["ExpertNumber"] = expertNumStr
+			updateParams["InterviewDate"] = interviewDateStr
+			//updateParams["IsClass"] = v.IsClass
+			v.Department = "弘则权益研究"
+			updateParams["Department"] = v.Department
+			updateParams["FileLink"] = v.File
+			updateParams["Stock"] = v.Stock
+			updateParams["FieldName"] = v.FieldName
+			updateParams["Annotation"] = v.Annotation
+			updateParams["TypeName"] = v.TypeName
+			updateParams["ModifyTimeByCl"] = v.UpdateDate
+			updateParams["CeLueFieldId"] = v.CeLueFieldId
+			updateParams["Cover"] = v.Cover
+			//whereParam := map[string]interface{}{"article_id": v.ArticleId}
+			//err = models.UpdateByExpr(models.CygxArticle{}, whereParam, updateParams)
+			//if err != nil {
+			//	fmt.Println("UpdateByExpr Err:" + err.Error())
+			//	return err
+			//}
+			fmt.Println("v.ReportType", v.ReportType)
+
+			//if v.ReportType == 2 {
+			var subjectStr string
+			var industrialManagementIdStr string
+			var industrialSubjectIdStr string
+
+			sliceSubjects := strings.Split(v.Stock, "/")
+			mapManagementForSubject := make(map[string]string)
+			mapIndustrialId := make(map[int]int)
+			if len(sliceSubjects) > 0 {
+				for _, vSubject := range sliceSubjects {
+					sliceKuohao := strings.Split(vSubject, "(")           //过滤括号
+					sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
+					subject := sliceXiahuaxian[0]
+					subjectStr += "'" + subject + "',"
+				}
+				//获取该产业下所对应的行业图片
+				detailCategory, errCategory := models.GetdetailByCategoryIdOne(v.CategoryId)
+				if errCategory != nil {
+					fmt.Println("GetdetailByCategoryIdOne Err:", err.Error())
+					return err
+				}
+				subjectStr = strings.TrimRight(subjectStr, ",")
+				if subjectStr != "" {
+					listIndustrial, err := models.GetIndustrialManagementForSubjecName(subjectStr, detailCategory.ChartPermissionId)
+					if err != nil {
+						fmt.Println("GetIndustrialManagementForSubjecName Err:", err.Error())
+						return err
+					}
+					subjectStr = strings.Replace(subjectStr, "','", "】【", -1)
+					subjectStr = strings.Replace(subjectStr, "'", "", -1)
+					subjectStr = "【" + subjectStr + "】"
+					if len(listIndustrial) > 0 {
+						for _, vIndustrial := range listIndustrial {
+							if _, ok := mapIndustrialId[vIndustrial.IndustrialManagementId]; !ok {
+								industrialManagementIdStr += strconv.Itoa(vIndustrial.IndustrialManagementId) + ","
+							}
+							mapIndustrialId[vIndustrial.IndustrialManagementId] = vIndustrial.IndustrialManagementId
+							industrialSubjectIdStr += strconv.Itoa(vIndustrial.IndustrialSubjectId) + ","
+							mapManagementForSubject[vIndustrial.IndustryName] += vIndustrial.SubjectName + "/"
+							if vIndustrial.LayoutTime == "0000-00-00 00:00:00" {
+								go models.UpdateIndustrialManagementLayoutTime(v.PublishDate.AddDate(0, 0, -10).Format(utils.FormatDateTime), vIndustrial.IndustrialManagementId)
+							}
+						}
+
+						industrialManagementIdStr = strings.TrimRight(industrialManagementIdStr, ",")
+						industrialSubjectIdStr = strings.TrimRight(industrialSubjectIdStr, ",")
+						if industrialManagementIdStr != "" {
+							err = models.ReportArticleClassificationEditNew(artcleId, industrialManagementIdStr, v.ArticleId, industrialSubjectIdStr)
+							if err != nil {
+								fmt.Println("ReportArticleClassificationEditNew Err:", err.Error())
+								return err
+							}
+						}
+					}
+					//}
+				}
+			}
+
+		}
+	}
+
+	AddComprehensiveIndustrialSource("Hz", artcleId) // 同步到综合页面的搜索引擎(添加产业资源包)
+
+	AddCygxReportMappingCategoryGroupByArticleId(artcleId)
+	return err
+}