ziwen 2 years ago
parent
commit
9cd20f06d9
4 changed files with 53 additions and 13 deletions
  1. 3 1
      controllers/report.go
  2. 8 0
      models/page_history_record.go
  3. 24 0
      models/report.go
  4. 18 12
      services/industrial_management.go

+ 3 - 1
controllers/report.go

@@ -632,8 +632,10 @@ func (this *ReportController) List() {
 		//	//list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
 		//}
 
+		//查询用户今天是否看过时间线
+		count, err := models.GetTimeLineRecordCount(user.UserId, industrialManagementId,time.Now().Format(utils.FormatDate))
 		for k, v := range list {
-			if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishTime)) {
+			if count == 0 && v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishTime)) {
 				list[k].IsRed = true
 			}
 			if v.VideoUrl != "" {

+ 8 - 0
models/page_history_record.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"strconv"
 	"time"
 )
 
@@ -48,4 +49,11 @@ func AddCygxPageHistoryRecord(item *CygxPageHistoryRecord) (lastId int64, err er
 
 type PageRouter struct {
 	PageRouter string
+}
+
+func GetTimeLineRecordCount(userId, industrialManagementId int, date string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM cygx_page_history_record WHERE user_id=? AND router = '/api/report/industry/ArticleList?PageSize=10&CurrentIndex=1&CategoryId=99999&IndustrialManagementId=`+strconv.Itoa(industrialManagementId)+ `' AND create_time > ? `
+	err = o.Raw(sql, userId, date).QueryRow(&count)
+	return
 }

+ 24 - 0
models/report.go

@@ -3,6 +3,7 @@ package models
 import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hongze_cygx/utils"
 	"strconv"
 	//"github.com/rdlucklib/rdluck_tools/paging"
 )
@@ -919,3 +920,26 @@ type ArticleIdReq struct {
 	PlaySeconds int    `description:"播放时长"`
 	PageRouter  string `description:"页面路径"`
 }
+
+type IndustrialReadNum struct {
+	IndustrialManagementId int `description:"产业id"`
+	ReadNum                int `description:"阅读次数"`
+}
+
+//获取该产业下文章的用户阅读次数-小红点用
+func GetReportIndustrialReadNumList(userId int, industrialIdArr []int) (items []*IndustrialReadNum, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.industrial_management_id, SUM(a.readnum) FROM (
+SELECT man_g.industrial_management_id,( SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(userId) + ` AND rec.article_id = a.article_id ) AS readnum 
+FROM
+	cygx_article AS a 
+	INNER JOIN cygx_industrial_article_group_management as man_g ON man_g.article_id = a.article_id
+WHERE
+	a.publish_status = 1 
+	AND a.is_class = 1
+	AND man_g.industrial_management_id IN (` + utils.GetOrmInReplace(len(industrialIdArr)) + `)  
+GROUP BY a.article_id ORDER BY publish_date DESC
+) AS a GROUP BY industrial_management_id`
+	_, err = o.Raw(sql, industrialIdArr).QueryRows(&items)
+	return
+}

+ 18 - 12
services/industrial_management.go

@@ -395,17 +395,22 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 		}
 	}
 
-	mapHistroyArticleId := make(map[int]int)
+	//mapHistroyArticleId := make(map[int]int)
 
-	if userId > 0 {
-		listArticleHistory, e := models.GetUserToArticleHistory(userId, articleIdArr)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("获取产业关联的视频失败,GetindustryVideo " + e.Error())
-			return
-		}
-		for _, v := range listArticleHistory {
-			mapHistroyArticleId[v.ArticleId] = v.ArticleId
-		}
+	//if userId > 0 {
+	//	listArticleHistory, e := models.GetUserToArticleHistory(userId, articleIdArr)
+	//	if e != nil && e.Error() != utils.ErrNoRow() {
+	//		err = errors.New("获取产业关联的视频失败,GetindustryVideo " + e.Error())
+	//		return
+	//	}
+	//	for _, v := range listArticleHistory {
+	//		mapHistroyArticleId[v.ArticleId] = v.ArticleId
+	//	}
+	//}
+	articleList, err := models.GetReportIndustrialReadNumList(userId, industrialIdArr)
+	mapHistroyindustrialId := make(map[int]int)
+	for _, v := range articleList {
+		mapHistroyindustrialId[v.IndustrialManagementId] = v.ReadNum
 	}
 	nowTime := time.Now().Local()
 	threeMonBefore := nowTime.AddDate(0, -3, 0)
@@ -413,7 +418,8 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 		list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
 		if userId > 0 {
 			//如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
-			if mapHistroyArticleId[v.ArticleId] == 0 && user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
+			//9.2修改为只要有未读的就标红
+			if mapHistroyindustrialId[v.IndustrialManagementId] == 0 && user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
 				list[k].IsRed = true
 			}
 		} else {
@@ -426,7 +432,7 @@ func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUser
 		list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
 		if userId > 0 {
 			//如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
-			if mapHistroyArticleId[v.ArticleId] == 0 && user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
+			if mapHistroyindustrialId[v.IndustrialManagementId] == 0 && user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
 				list[k].IsRed = true
 			}
 		} else {