xingzai 2 лет назад
Родитель
Сommit
b08f8adecf

+ 7 - 1
controllers/report.go

@@ -300,7 +300,13 @@ func (this *MobileReportController) IndustryList() {
 		}
 	}
 
-	list, err = services.HandleIndustryList(list, user, "")
+	var resource string
+	if ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
+		resource = utils.REOURCE_YX
+	} else {
+		resource = utils.REOURCE_HZ
+	}
+	list, err = services.HandleIndustryList(list, user, resource)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()

+ 25 - 0
models/industrial_article_group_management.go

@@ -85,3 +85,28 @@ func GetIndustrialDepartmentList() (items []*IndustrialDepartmentListResp, err e
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+type CygxIndustrialArticleGroupManagementResp struct {
+	ArticleId              int       `description:"文章ID"`
+	IndustrialManagementId int       `description:"cygx_industrial_management表的主键ID"`
+	PublishDate            time.Time `description:"发布时间"`
+}
+
+// GetCygxIndustrialArticleGroupManagement  获取产业关联的所有文章
+func GetCygxIndustrialArticleGroupManagement(condition string, pars []interface{}) (list []*CygxIndustrialArticleGroupManagementResp, err error) {
+	sql := `SELECT
+			mg.industrial_management_id,
+			a.article_id,
+			a.publish_date
+		FROM
+			cygx_industrial_article_group_management AS mg
+			INNER JOIN cygx_article AS a ON a.article_id = mg.article_id 
+		WHERE
+			1 = 1 
+			AND a.publish_status = 1 `
+	if condition != `` {
+		sql += condition
+	}
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	return
+}

+ 45 - 0
services/article_red.go

@@ -159,3 +159,48 @@ func GetUserArticleHistoryRecord(user *models.WxUserItem) (articleIdMap map[int]
 	}
 	return
 }
+
+// GetUserArticleHistoryIndustrialNewPublishDate  获取产业关联的最新的文章用户是否阅读
+func GetUserArticleHistoryIndustrialNewPublishDate(user *models.WxUserItem, industrialIdArr []int, articleTypeIds, resource string) (mapIndustrialArticleHistory map[int]bool, err error) {
+	var condition string
+	var pars []interface{}
+	articleIdMap, err := GetUserArticleHistoryRecord(user)
+	if err != nil {
+		return
+	}
+	if resource == utils.REOURCE_YX {
+		condition = ` AND a.publish_status = 1 AND a.article_type_id  IN (` + articleTypeIds + `)	`
+	} else {
+		condition = ` AND a.article_type_id  = 0	`
+	}
+	condition += ` AND mg.industrial_management_id  IN (` + utils.GetOrmInReplace(len(industrialIdArr)) + `)`
+	pars = append(pars, industrialIdArr)
+
+	list, err := models.GetCygxIndustrialArticleGroupManagement(condition, pars)
+	if err != nil {
+		return
+	}
+	mapIndustrialArticle := make(map[int][]*models.CygxIndustrialArticleGroupManagementResp)
+	mapIndustrialArticleMax := make(map[int]int, 0)
+	mapIndustrialArticleHistory = make(map[int]bool, 0)
+	mapIndustrialArticleMaxTime := make(map[int]time.Time)
+	for _, v := range list {
+		item := new(models.CygxIndustrialArticleGroupManagementResp)
+		item.IndustrialManagementId = v.IndustrialManagementId
+		item.ArticleId = v.ArticleId
+		item.PublishDate = v.PublishDate
+		mapIndustrialArticle[v.IndustrialManagementId] = append(mapIndustrialArticle[v.IndustrialManagementId], item)
+	}
+	for k, v := range mapIndustrialArticle {
+		for _, item := range v {
+			if item.PublishDate.After(mapIndustrialArticleMaxTime[k]) {
+				mapIndustrialArticleMaxTime[k] = item.PublishDate
+				mapIndustrialArticleMax[k] = item.ArticleId
+			}
+		}
+	}
+	for _, v := range industrialIdArr {
+		mapIndustrialArticleHistory[v] = articleIdMap[mapIndustrialArticleMax[v]]
+	}
+	return
+}

+ 8 - 1
services/industrial_management.go

@@ -111,6 +111,7 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 			condition = ` AND a.article_type_id  NOT  IN (` + articleTypeIds + `)	`
 		}
 	}
+
 	mapindustrialId, e := GetMicroRoadshowVideoMap()
 	if e != nil {
 		err = e
@@ -160,6 +161,12 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 			}
 		}
 	}
+	//获取产业关联的最新的文章时间
+	mapIndustrialArticleHistory, err := GetUserArticleHistoryIndustrialNewPublishDate(user, industrialIdArr, articleTypeIds, resource)
+	//fmt.Println(mapIndustrialArticleHistory)
+	if err != nil {
+		return
+	}
 	mapUPdateTime := make(map[int]string)
 	articleIdArr := make([]int, 0)
 	//获取这些产业下最新更新的文章
@@ -245,7 +252,7 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 		list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
 		if userId > 0 {
 			//如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
-			if mapHistroyindustrialId[v.IndustrialManagementId] == 0 || timeLineRedMap[v.IndustrialManagementId] {
+			if !mapIndustrialArticleHistory[v.IndustrialManagementId] || 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
 				}

+ 2 - 0
utils/constants.go

@@ -91,6 +91,8 @@ const (
 	HONG_GUAN_ID                     int    = 1
 	HZ_COMPANY_ID                    int    = 16
 	YAN_XUAN_ARTICLE_TYPE_IDS        string = "1,2,12" // 属于研选的报告类型ID
+	REOURCE_YX                       string = "Yx"
+	REOURCE_HZ                       string = "Hz"
 )
 
 // 模板消息推送类型