Bladeren bron

no message

xingzai 2 jaren geleden
bovenliggende
commit
bae31acfdd
4 gewijzigde bestanden met toevoegingen van 80 en 29 verwijderingen
  1. 7 0
      controllers/research.go
  2. 18 8
      models/industrial_management.go
  3. 1 1
      models/report.go
  4. 54 20
      services/industrial_management.go

+ 7 - 0
controllers/research.go

@@ -136,6 +136,7 @@ func (this *MobileResearchController) ArticleNewList() {
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(models.ArticleResearchListResp)
 	for _, v := range list {
+
 		item := models.ArticleResearchResp{
 			ArticleId:       v.ArticleId,
 			ArticleTypeId:   v.ArticleTypeId,
@@ -153,6 +154,12 @@ func (this *MobileResearchController) ArticleNewList() {
 			ButtonStyle:     styleMap[v.ArticleTypeId],
 			List:            v.List,
 		}
+		if item.ArticleTypeName == "纪要" || item.ArticleTypeName == "沙龙" || item.ArticleTypeName == "专家访谈" {
+			item.Annotation = "核心观点:" + item.Annotation
+		} else {
+			item.Annotation = "核心结论:" + item.Annotation
+		}
+
 		resp.List = append(resp.List, &item)
 	}
 	resp.Paging = page

+ 18 - 8
models/industrial_management.go

@@ -171,11 +171,11 @@ ORDER BY
 }
 
 // 获取该产业下最新的文章详情
-func GetNewArticleDetailByIndustrialIds(industrialIdArr []int) (items []*IndustrialManagementArticle, err error) {
-	arrLen := len(industrialIdArr)
-	if arrLen == 0 {
-		return
-	}
+func GetNewArticleDetailByIndustrialIds(pars []interface{}, condition string) (items []*IndustrialManagementArticle, err error) {
+	//arrLen := len(industrialIdArr)
+	//if arrLen == 0 {
+	//	return
+	//}
 	o := orm.NewOrm()
 	sql := `SELECT
 			mg.industrial_management_id,
@@ -186,11 +186,10 @@ func GetNewArticleDetailByIndustrialIds(industrialIdArr []int) (items []*Industr
 			cygx_industrial_article_group_management AS mg
 			INNER JOIN cygx_article AS a ON mg.article_id = a.article_id 
 		WHERE
-			1 = 1
-			AND mg.industrial_management_id IN(` + utils.GetOrmInReplace(len(industrialIdArr)) + `)   
+			1 = 1   ` + condition + `
 		GROUP BY
 			mg.industrial_management_id `
-	_, err = o.Raw(sql, industrialIdArr).QueryRows(&items)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
 
@@ -316,6 +315,17 @@ func GetTopOneMonthArtReadNumIndustry(condition string, pars []interface{}) (ite
 	return
 }
 
+// GetTopOneMonthArtReadNumIndustry 获取近一个月报告阅读数量最多的产业信息 根据行业分组
+func GetTopOneMonthArtReadNumIndustryAll(condition string, pars []interface{}) (items []*IndustrialManagement, err error) {
+	sql := `SELECT * FROM cygx_industrial_management WHERE 1 = 1 `
+	if condition != `` {
+		sql += condition
+	}
+	sql += ` ORDER BY article_read_num DESC `
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 // GetTopIndustryFollowData 获取关注度最高的产业关注数据
 func GetTopIndustryFollowData(startSize, pageSize int, condition string, pars []interface{}) (list []*IndustrialManagement, err error) {
 	sql := `SELECT

+ 1 - 1
models/report.go

@@ -702,7 +702,7 @@ func GetThemeHeatList(userId int, condition, conditionOrder string, startSize, p
           	MAX( a.publish_date ) AS publish_date,
 			MIN(a.publish_date) AS min_report_time,
 			( SELECT count( 1 ) FROM cygx_industry_fllow AS f  WHERE f.industrial_management_id = m.industrial_management_id  AND user_id =? AND f.type = 1  ) AS fllow_num,
-			( SELECT count( 1 ) FROM cygx_industry_fllow AS f  WHERE f.industrial_management_id = m.industrial_management_id  AND f.type = 1  ) AS sum_num
+			m.article_read_num + ( SELECT count( 1 ) FROM cygx_activity_meet_detail_log AS la  WHERE la.activity_id  IN  (SELECT activity_id FROM cygx_industrial_activity_group_management WHERE industrial_management_id = m.industrial_management_id  ) AND DATE_SUB( CURDATE(), INTERVAL 30 DAY ) <= date( la.activity_time ) ) AS sum_num
 		FROM
 			cygx_industrial_management AS m
 			LEFT JOIN cygx_industrial_article_group_management AS mg ON mg.industrial_management_id = m.industrial_management_id

+ 54 - 20
services/industrial_management.go

@@ -91,6 +91,12 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 			fllowMap[v.IndustrialManagementId] = v.IndustrialManagementId
 		}
 	}
+
+	hotMap, e := IndustrialManagementHotMapGropuPermission()
+	if e != nil {
+		err = errors.New("获取hot标签失败,IndustrialManagementHotMapGropuPermission " + e.Error())
+		return
+	}
 	var condition string
 	var pars []interface{}
 	articleTypeIds, _ := GetYanXuanArticleTypeIds()
@@ -100,7 +106,7 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 	}
 	if articleTypeIds != "" {
 		if resource == "Yx" {
-			condition = ` AND a.article_type_id  IN (` + articleTypeIds + `)	`
+			condition = ` AND a.publish_status = 1 AND a.article_type_id  IN (` + articleTypeIds + `)	`
 		} else {
 			condition = ` AND a.article_type_id  NOT  IN (` + articleTypeIds + `)	`
 		}
@@ -121,6 +127,7 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 		if fllowMap[v.IndustrialManagementId] > 0 {
 			list[k].IsFollow = true
 		}
+		v.IsHot = hotMap[v.IndustrialManagementId]
 		industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
 		if _, ok := mapindustrialId[v.IndustrialManagementId]; !ok {
 			continue
@@ -135,12 +142,11 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 		}
 		v.AuthInfo = au
 	}
-
 	if len(industrialIdArr) > 0 {
 		//合并产业关联的标的
-		condition += ` AND 	m.industrial_management_id  IN (` + utils.GetOrmInReplace(len(industrialIdArr)) + `)`
+		conditionSubject := condition + ` AND 	m.industrial_management_id  IN (` + utils.GetOrmInReplace(len(industrialIdArr)) + `)`
 		pars = append(pars, industrialIdArr)
-		listSubjcet, err = models.GetIndustrialSubjectAllByIndustrialId(pars, condition)
+		listSubjcet, err = models.GetIndustrialSubjectAllByIndustrialId(pars, conditionSubject)
 		if err != nil {
 			return
 		}
@@ -157,8 +163,11 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 	mapUPdateTime := make(map[int]string)
 	articleIdArr := make([]int, 0)
 	//获取这些产业下最新更新的文章
-
-	listUpdateTime, err := models.GetNewArticleDetailByIndustrialIds(industrialIdArr)
+	var conditionindustrial string
+	var parsindustrial []interface{}
+	conditionindustrial = condition + ` AND mg.industrial_management_id  IN (` + utils.GetOrmInReplace(len(industrialIdArr)) + `)`
+	parsindustrial = append(parsindustrial, industrialIdArr)
+	listUpdateTime, err := models.GetNewArticleDetailByIndustrialIds(parsindustrial, conditionindustrial)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		return
 	}
@@ -247,22 +256,11 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 			}
 			list[k].IsFollow = true
 		}
-
 		list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
-		if userId > 0 {
-			//如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
-			if mapHistroyindustrialId[v.IndustrialManagementId] == 0 || timeLineRedMap[v.IndustrialManagementId] {
-				if user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
-					list[k].IsRed = true
-				}
-			}
-		} else {
-			if utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
-				list[k].IsRed = true
-			}
-			list[k].IsFollow = true
-		}
 
+		if resource == "Yx" {
+			list[k].IsRed = false
+		}
 		// 关联报告发布时间均在3个月内则标记New
 		if v.MinReportTime != "" {
 			t, e := time.Parse(utils.FormatDateTime, v.MinReportTime)
@@ -344,3 +342,39 @@ func GetUserFollowIndustrialMap(user *models.WxUserItem) (mapResp map[int]int, e
 	mapResp = fllowMap
 	return
 }
+
+// IndustrialManagementHotMapGropuPermission获取近一个月报告阅读数量最多的产业信息 根据行业分组
+func IndustrialManagementHotMapGropuPermission() (mapResp map[int]bool, err error) {
+	var topCond string
+	var topPars []interface{}
+	toplist, err := models.GetTopOneMonthArtReadNumIndustryAll(topCond, topPars)
+	if err != nil {
+		return
+	}
+	mapPermission := make(map[int][]*models.IndustrialManagement)
+	mapPermissionMax := make(map[int]int)
+
+	for _, v := range toplist {
+		item := new(models.IndustrialManagement)
+		item.ChartPermissionId = v.ChartPermissionId
+		item.IndustrialManagementId = v.IndustrialManagementId
+		item.ArticleReadNum = v.ArticleReadNum
+		mapPermission[v.ChartPermissionId] = append(mapPermission[v.ChartPermissionId], item)
+	}
+	for k, v := range mapPermission {
+		for _, item := range v {
+			//mapPermissionMax[k] = item.ArticleReadNum
+			if item.ArticleReadNum > mapPermissionMax[k] {
+				mapPermissionMax[k] = item.ArticleReadNum
+			}
+		}
+	}
+
+	mapResp = make(map[int]bool, 0)
+	for _, v := range toplist {
+		if v.ArticleReadNum == mapPermissionMax[v.ChartPermissionId] {
+			mapResp[v.IndustrialManagementId] = true
+		}
+	}
+	return
+}