Browse Source

查研观向7.0

xingzai 2 years ago
parent
commit
2381c87d66

+ 155 - 170
controllers/report_billboard.go

@@ -5,6 +5,8 @@ import (
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
 	"strconv"
+	"strings"
+	"time"
 )
 
 //报告榜单
@@ -45,35 +47,6 @@ func (this *ReportBillboardController) CompanyTableList() {
 // @Success 200 {object} models.IndustrialManagementList
 // @router /industry/fllowList [get]
 func (this *ReportBillboardController) FllowList() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	user := this.User
-	if user == nil {
-		br.Msg = "请重新登录"
-		br.Ret = 408
-		return
-	}
-	chartPermissionId, _ := this.GetInt("ChartPermissionId")
-	if chartPermissionId < 1 {
-		br.Msg = "请输入行业ID"
-		return
-	}
-	resp := new(models.IndustrialManagementList)
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// @Title 阅读飙升榜
-// @Description 获取阅读飙升榜接口
-// @Param   ChartPermissionId   query   int  true       "分类ID"
-// @Success 200 {object} models.IndustrialManagementList
-// @router /industry/readList [get]
-func (this *ReportBillboardController) ReadList() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -86,90 +59,81 @@ func (this *ReportBillboardController) ReadList() {
 		return
 	}
 	uid := user.UserId
-
-	ChartPermissionId, _ := this.GetInt("ChartPermissionId")
-	orderColumn := this.GetString("OrderColumn")
-
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
-	var orderSrt string
-	var condition string
 	var startSize int
-	resp := new(models.IndustrialManagementList)
 	if pageSize <= 0 {
-		pageSize = utils.PageSize20
+		pageSize = utils.PageSize15
 	}
 	if currentIndex <= 0 {
 		currentIndex = 1
 	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-	var sqlChartPermissionId string
-	if ChartPermissionId > 0 {
-		sqlChartPermissionId += ` AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + ` ) `
-		condition += ` AND man.chart_permission_id IN (` + strconv.Itoa(ChartPermissionId) + `)`
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	if chartPermissionId < 1 {
+		br.Msg = "请输入行业ID"
+		return
 	}
-	var list []*models.IndustrialManagement
-	total, err := models.GetIndustrialManagementAllCount(condition)
+	var condition string
+	var pars []interface{}
+	var orderSrt string
+	var industrialManagementIds string
+	condition += ` 	AND man.chart_permission_id = ?  `
+	pars = append(pars, chartPermissionId)
+	orderSrt = " man.user_fllow_num DESC  " // 排序方式
+	list, err := models.GetIndustrialManagementFllowBillboard(pars, condition, orderSrt, startSize, pageSize)
 	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取数量失败,Err:" + err.Error()
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetIndustrialManagementFllowBillboard Err:" + err.Error()
 		return
 	}
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	if orderColumn == "" {
-		orderColumn = "NewTime"
+	fllowList, err := models.GetUserFllowIndustrialList(uid)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetUserFllowIndustrialList Err:" + err.Error()
+		return
 	}
-	if orderColumn == "NewTime" {
-		orderSrt = "update_time DESC"
-	} else {
-		orderSrt = "man.recommended_index DESC,update_time DESC"
+	fllowMap := make(map[int]int)
+	if len(fllowList) > 0 {
+		for _, v := range fllowList {
+			fllowMap[v.IndustrialManagementId] = uid
+		}
 	}
-	if ChartPermissionId == 0 {
-		ChartPermissionId = 20
+	for k, v := range list {
+		if fllowMap[v.IndustrialManagementId] > 0 {
+			list[k].IsFollow = 1
+		}
+		industrialManagementIds += strconv.Itoa(v.IndustrialManagementId) + ","
 	}
-	detailHot3, err := models.GetIndustrialManagementHot3(ChartPermissionId)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取信息失败,Err:" + err.Error()
-		return
+	industrialManagementIds = strings.TrimRight(industrialManagementIds, ",")
+	silceindustrialManagementIds := strings.Split(industrialManagementIds, ",")
+	//获取关联的标的
+	pars = make([]interface{}, 0)
+	industrialIdList := make([]string, 0)
+	for _, v := range silceindustrialManagementIds {
+		industrialIdList = append(industrialIdList, v)
 	}
-
-	list, err = models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize, pageSize)
+	condition = `AND s.industrial_management_id IN (  ` + utils.GetOrmInReplace(len(silceindustrialManagementIds)) + ` )  `
+	pars = append(pars, industrialIdList)
+	subjectList, err := models.GetSubjectList(pars, condition)
 	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetSubjectList Err:" + err.Error()
 		return
 	}
-	for k, v := range list {
-		industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
-			return
-		}
-		list[k].IndustrialSubjectList = industrialSubjectList
-		list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime)
-		newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
-			return
-		}
-		list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
-		recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId)
-			return
-		}
-		if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(newArtinfo.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(newArtinfo.PublishDate)) {
-			list[k].IsRed = true
-		}
-		if v.ArticleReadNum >= detailHot3.ArticleReadNum {
-			list[k].IsHot = true
+	subjectMap := make(map[int][]*models.IndustrialSubject)
+	if len(fllowList) > 0 {
+		for _, v := range subjectList {
+			item := new(models.IndustrialSubject)
+			item.SubjectName = v.SubjectName
+			item.IndustrialManagementId = v.IndustrialManagementId
+			subjectMap[v.IndustrialManagementId] = append(subjectMap[v.IndustrialManagementId], item)
 		}
 	}
-
+	for k, v := range list {
+		list[k].IndustrialSubjectList = subjectMap[v.IndustrialManagementId]
+	}
+	page := paging.GetPaging(currentIndex, pageSize, len(list))
+	resp := new(models.IndustrialManagementList)
 	resp.List = list
 	resp.Paging = page
 	br.Ret = 200
@@ -178,12 +142,13 @@ func (this *ReportBillboardController) ReadList() {
 	br.Data = resp
 }
 
-// @Title 报告收藏榜
-// @Description 获取报告收藏榜接口
+// @Title 阅读飙升榜/报告收藏榜
+// @Description 获取阅读飙升榜/报告收藏榜接口
 // @Param   ChartPermissionId   query   int  true       "分类ID"
-// @Success 200 {object} models.IndustrialManagementList
-// @router /industry/collectList [get]
-func (this *ReportBillboardController) CollectList() {
+// @Param   Source   query   int  true       "来源 2:阅读飙升 ,3:报告收藏"
+// @Success 200 {object} models.ArticleReportBillboardLIstResp
+// @router /industry/readList [get]
+func (this *ReportBillboardController) ReadList() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -195,95 +160,115 @@ func (this *ReportBillboardController) CollectList() {
 		br.Ret = 408
 		return
 	}
-	uid := user.UserId
-
-	ChartPermissionId, _ := this.GetInt("ChartPermissionId")
-	orderColumn := this.GetString("OrderColumn")
-
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	var orderSrt string
-	var condition string
-	var startSize int
-	resp := new(models.IndustrialManagementList)
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	source, _ := this.GetInt("Source")
+	var list []*models.ArticleReportBillboardResp
+	if chartPermissionId < 1 {
+		br.Msg = "请输入行业ID"
+		return
 	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-	var sqlChartPermissionId string
-	if ChartPermissionId > 0 {
-		sqlChartPermissionId += ` AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + ` ) `
-		condition += ` AND man.chart_permission_id IN (` + strconv.Itoa(ChartPermissionId) + `)`
+	var err error
+	var condition string
+	var pars []interface{}
+	condition += ` 	AND m.chart_permission_id = ?  `
+	pars = append(pars, chartPermissionId)
+	if source == 2 {
+		//阅读飙升榜
+		var conditionPv string
+		var articleTopIds string
+		conditionPv = condition
+		dateTime := time.Now().AddDate(0, 0, -15).Format(utils.FormatDate)
+		conditionPv += `  AND l.create_time > ?  `
+		pars = append(pars, dateTime)
+		listTop, err := models.GetCygxArticleHistoryAllTop(pars, conditionPv)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxArticleHistoryAllTop Err:" + err.Error()
+			return
+		}
+		for _, v := range listTop {
+			articleTopIds += strconv.Itoa(v.ArticleId) + ","
+			item := new(models.ArticleReportBillboardResp)
+			item.ArticleId = v.ArticleId
+			list = append(list, item)
+		}
+		articleTopIds = strings.TrimRight(articleTopIds, ",")
+		//获取文章关联的产业
+		pars = make([]interface{}, 0)
+		articleIdList := make([]string, 0)
+		silcearticleIds := strings.Split(articleTopIds, ",")
+		for _, v := range silcearticleIds {
+			articleIdList = append(articleIdList, v)
+		}
+		condition = ` AND a.article_id IN (  ` + utils.GetOrmInReplace(len(silcearticleIds)) + ` )  `
+		pars = append(pars, articleIdList)
+		condition += ` 	AND m.chart_permission_id = ?  `
+		pars = append(pars, chartPermissionId)
+		listPv, err := models.GetReportPvBillboardList(pars, condition)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetReportPvBillboardList Err:" + err.Error()
+			return
+		}
+		//按照查询出来的顺序赋值
+		mapPv := make(map[int]*models.ArticleReportBillboardResp)
+		for _, v := range listPv {
+			mapPv[v.ArticleId] = v
+		}
+		for k, v := range list {
+			list[k] = mapPv[v.ArticleId]
+		}
+	} else {
+		//获取报告收藏
+		condition += `GROUP BY	a.article_id ORDER BY a.user_collection_num DESC,	ac.id DESC,	a.publish_date DESC LIMIT 15   `
+		list, err = models.GetReportCollectionBillboardList(pars, condition)
 	}
-	var list []*models.IndustrialManagement
-	total, err := models.GetIndustrialManagementAllCount(condition)
 	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取数量失败,Err:" + err.Error()
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetSubjectList Err:" + err.Error()
 		return
 	}
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	if orderColumn == "" {
-		orderColumn = "NewTime"
-	}
-	if orderColumn == "NewTime" {
-		orderSrt = "update_time DESC"
-	} else {
-		orderSrt = "man.recommended_index DESC,update_time DESC"
+	var articleIds string
+	for _, v := range list {
+		articleIds += strconv.Itoa(v.ArticleId) + ","
 	}
-	if ChartPermissionId == 0 {
-		ChartPermissionId = 20
+	articleIds = strings.TrimRight(articleIds, ",")
+	silcearticleIds := strings.Split(articleIds, ",")
+	//获取文章关联的产业
+	pars = make([]interface{}, 0)
+	articleIdList := make([]string, 0)
+	for _, v := range silcearticleIds {
+		articleIdList = append(articleIdList, v)
 	}
-	detailHot3, err := models.GetIndustrialManagementHot3(ChartPermissionId)
+	condition = ` AND mg.article_id IN (  ` + utils.GetOrmInReplace(len(silcearticleIds)) + ` )  `
+	pars = append(pars, articleIdList)
+	industrialList, err := models.GetIndustrialListByarticleId(pars, condition)
 	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetSubjectList Err:" + err.Error()
 		return
 	}
-
-	list, err = models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
-		return
+	industrialMap := make(map[int][]*models.IndustrialManagementIdInt)
+	if len(industrialList) > 0 {
+		for _, v := range industrialList {
+			item := new(models.IndustrialManagementIdInt)
+			item.ArticleId = v.ArticleId
+			item.IndustrialManagementId = v.IndustrialManagementId
+			item.IndustryName = v.IndustryName
+			industrialMap[v.ArticleId] = append(industrialMap[v.ArticleId], item)
+		}
 	}
 	for k, v := range list {
-		industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
-			return
-		}
-		list[k].IndustrialSubjectList = industrialSubjectList
-		list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime)
-		newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
-			return
-		}
-		list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
-		recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId)
-			return
-		}
-		if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(newArtinfo.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(newArtinfo.PublishDate)) {
-			list[k].IsRed = true
-		}
-		if v.ArticleReadNum >= detailHot3.ArticleReadNum {
-			list[k].IsHot = true
+		if len(industrialMap[v.ArticleId]) > 0 {
+			list[k].List = industrialMap[v.ArticleId]
+		} else {
+			list[k].List = make([]*models.IndustrialManagementIdInt, 0)
 		}
 	}
-
+	resp := new(models.ArticleReportBillboardLIstResp)
 	resp.List = list
-	resp.Paging = page
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
-}
+}

+ 34 - 0
models/article_collect.go

@@ -88,3 +88,37 @@ func UpdateCygxArticleCollect(wxUser *WxUserItem) (err error) {
 	}
 	return
 }
+
+type CygxArticleCollectCountRep struct {
+	ArticleId int `description:"文章ID"`
+	Num       int `description:"数量"`
+}
+
+//获取文章被收藏的数量
+func GetUserArticleCollectList() (items []*CygxArticleCollectCountRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			COUNT( 1 ) AS num,
+			f.article_id 
+		FROM
+			cygx_article_collect AS f
+			INNER JOIN wx_user AS u ON u.user_id = f.user_id
+			INNER JOIN cygx_article AS a ON a.article_id = f.article_id 
+		WHERE
+			1 = 1 
+		GROUP BY
+			f.article_id 
+		ORDER BY
+			num DESC 
+			LIMIT 30 `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//修改文章收藏的数量
+func UpdateArticleCollectCountNum(num, articleId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE cygx_article SET user_collection_num = ? WHERE article_id = ?`
+	_, err = o.Raw(sql, num, articleId).Exec()
+	return
+}

+ 28 - 0
models/article_history_record_newpv.go

@@ -263,3 +263,31 @@ FROM
 	err = o.Raw(sqlCount).QueryRow(&count)
 	return
 }
+
+type CygxArticleHistoryAllTopResp struct {
+	Pv        int `description:"阅读PV"`
+	ArticleId int `description:"文章id"`
+	Num       int `description:"数量"`
+}
+
+//获取近15天之内的阅读数据最多的15报告
+func GetCygxArticleHistoryAllTop(pars []interface{}, condition string) (items []*CygxArticleHistoryAllTopResp, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+			COUNT( 1 ) AS pv,
+			a.article_id 
+		FROM
+			cygx_article_history_record_all AS l
+			INNER JOIN cygx_article AS a ON a.article_id = l.article_id
+			INNER JOIN cygx_report_mapping AS m ON m.category_id = a.category_id 
+			WHERE
+				1 = 1 
+				AND l.platfor = 1` + condition + `
+			GROUP BY
+				l.article_id 
+			ORDER BY
+				pv DESC ,a.publish_date DESC 
+				LIMIT 15 `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 61 - 0
models/industrial_management.go

@@ -455,3 +455,64 @@ func GetActivityIdListBySubjecName(subjectName string) (items []*ActivityIdRep,
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+//产业关注榜
+func GetIndustrialManagementFllowBillboard(pars []interface{}, condition, orderSrt string, startSize, pageSize int) (items []*IndustrialManagement, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+				man.* 
+			FROM
+				cygx_industrial_management AS man
+				INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
+				INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
+				INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id 
+			WHERE
+				1 = 1 
+				AND re.report_type = 2 
+				AND art.is_report = 1 
+				AND art.is_class = 1 
+				AND art.publish_status = 1 ` + condition + ` GROUP BY man.industrial_management_id  ORDER BY ` + orderSrt + ` LIMIT ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//获取标的列表
+func GetSubjectList(pars []interface{}, condition string) (items []*IndustrialManagementIdInt, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			subject_name,
+			s.industrial_management_id 
+		FROM
+			cygx_industrial_subject AS s
+			INNER JOIN cygx_industrial_article_group_subject AS sg ON sg.industrial_subject_id = s.industrial_subject_id 
+		WHERE
+			1 = 1 ` + condition + `
+		GROUP BY
+			s.industrial_subject_id`
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+//获取标的列表
+func GetIndustrialListByarticleId(pars []interface{}, condition string) (items []*IndustrialManagementIdInt, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			mg.article_id,
+			m.industry_name,
+			mg.industrial_management_id 
+		FROM
+			cygx_industrial_management AS m
+			INNER JOIN cygx_industrial_article_group_management AS mg ON mg.industrial_management_id = m.industrial_management_id 
+		WHERE
+			1 = 1  ` + condition + ` GROUP BY  mg.article_id,	mg.industrial_management_id `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+//修改产业关注数量
+func UpdateIndustrialManagementFllowNum(num, industrialManagementId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE cygx_industrial_management SET user_fllow_num = ? WHERE industrial_management_id = ?`
+	_, err = o.Raw(sql, num, industrialManagementId).Exec()
+	return
+}

+ 44 - 0
models/industry_fllow.go

@@ -77,3 +77,47 @@ func UpdateCygxIndustryFllow(wxUser *WxUserItem) (err error) {
 	}
 	return
 }
+
+//获取用户关注的产业列表
+func GetUserFllowIndustrialList(userId int) (items []*CygxIndustryFllow, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			f.user_id,
+			m.industry_name,
+			m.industrial_management_id 
+		FROM
+			cygx_industry_fllow AS f
+			INNER JOIN wx_user AS u ON f.user_id = u.user_id
+			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id 
+		WHERE
+			1 = 1 
+			AND f.user_id = ? `
+	_, err = o.Raw(sql, userId).QueryRows(&items)
+	return
+}
+
+type CygxIndustryFllowCountRep struct {
+	IndustrialManagementId int `description:"产业D"`
+	Num                    int `description:"数量"`
+}
+
+//获取产业被关注的数量
+func GetUserFllowIndustrialCountList() (items []*CygxIndustryFllowCountRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			COUNT( 1 ) AS num,
+			f.industrial_management_id 
+		FROM
+			cygx_industry_fllow AS f
+			INNER JOIN wx_user AS u ON u.user_id = f.user_id 
+			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id 
+		WHERE
+			1 = 1 
+		GROUP BY
+			f.industrial_management_id 
+		ORDER BY
+			num DESC 
+			LIMIT 30 `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 55 - 16
models/report.go

@@ -187,21 +187,6 @@ func IndustrialToArticleWhichDepartment(condition string, pars []interface{}, ui
 
 func GetWhichDepartmentCount(condition string) (count int, err error) {
 	o := orm.NewOrm()
-	//sql := `SELECT COUNT(*) count
-	//		FROM(
-	//		SELECT COUNT(1) count
-	//		FROM
-	//		cygx_article AS art
-	//		INNER JOIN cygx_industrial_article_group_management as mg ON mg.article_id = art.article_id
-	//		INNER JOIN cygx_industrial_management as m ON m.industrial_management_id = mg.industrial_management_id
-	//		INNER JOIN cygx_article_department as d ON d.department_id = art.department_id
-	//		WHERE 1 = 1
-	//		AND art.publish_status = 1`
-	//if condition != "" {
-	//	sql += condition
-	//}
-	//sql += ` ) AS num`
-
 	sql := `SELECT COUNT(1) count 
 			FROM
 			cygx_article AS art
@@ -221,7 +206,7 @@ type IsShow struct {
 	IsShow         bool `description:"是否展示"`
 	IsShowResearch bool `description:"研选是否展示限免"`
 	IsShowChart    bool `description:"图表是否展示限免"`
-	IsShowList    bool `description:"榜单是否展示"`
+	IsShowList     bool `description:"榜单是否展示"`
 }
 
 //获取用户是否有查看权限
@@ -702,3 +687,57 @@ type ReportBillboardTableResp struct {
 type ReportBillboardTableListResp struct {
 	List []*ReportBillboardTableResp
 }
+
+//报告榜单start
+type ArticleReportBillboardResp struct {
+	ArticleId   int    `description:"文章id"`
+	Title       string `description:"标题"`
+	PublishDate string `description:"发布时间"`
+	List        []*IndustrialManagementIdInt
+}
+
+type ArticleReportBillboardLIstResp struct {
+	List []*ArticleReportBillboardResp
+}
+
+//报告收藏榜单列表
+func GetReportCollectionBillboardList(pars []interface{}, condition string) (items []*ArticleReportBillboardResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			ac.id,
+			a.article_id,
+			a.title,
+			date_format( a.publish_date, '%Y-%m-%d' ) AS publish_date 
+		FROM
+			cygx_article AS a
+			INNER JOIN cygx_report_mapping AS m ON m.category_id = a.category_id
+			INNER JOIN cygx_article_collect AS ac ON ac.article_id = a.article_id 
+		WHERE
+			1 = 1 
+			AND a.publish_status = 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+//报告阅读榜单列表
+func GetReportPvBillboardList(pars []interface{}, condition string) (items []*ArticleReportBillboardResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			a.article_id,
+			a.title,
+			date_format( a.publish_date, '%Y-%m-%d' ) AS publish_date 
+		FROM
+			cygx_article AS a
+			INNER JOIN cygx_report_mapping AS m ON m.category_id = a.category_id
+		WHERE
+			1 = 1 
+			AND a.publish_status = 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 9 - 0
routers/commentsRouter_controllers.go

@@ -493,6 +493,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportBillboardController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportBillboardController"],
+        beego.ControllerComments{
+            Method: "ReadList",
+            Router: "/industry/readList",
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportBillboardController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportBillboardController"],
         beego.ControllerComments{
             Method: "CompanyTableList",

+ 52 - 0
services/industrial_management.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
 	"strings"
 )
 
@@ -94,3 +95,54 @@ func ChageIndustrialArticleNum(cont context.Context) (err error) {
 	}
 	return
 }
+
+func ReportBillboardUpdate(cont context.Context) (err error) {
+	//修改产业关注数量
+	go IndustryFllowCountUpdate()
+
+	//修改文章收藏数量
+	go ArticleCollectCountUpdate()
+	return
+}
+
+//修改产业关注数量
+func IndustryFllowCountUpdate() (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("修改产业关注数量信息失败"+err.Error(), 2)
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetCeLueArticlePv ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+		}
+	}()
+	fllowList, err := models.GetUserFllowIndustrialCountList()
+	if err != nil {
+		return
+	}
+	for _, v := range fllowList {
+		err = models.UpdateIndustrialManagementFllowNum(v.Num, v.IndustrialManagementId)
+		if err != nil {
+			return
+		}
+	}
+	return err
+}
+
+//修改文章收藏数量
+func ArticleCollectCountUpdate() (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("修改文章收藏数量信息失败"+err.Error(), 2)
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改文章收藏数量信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+		}
+	}()
+	collectList, err := models.GetUserArticleCollectList()
+	if err != nil {
+		return
+	}
+	for _, v := range collectList {
+		err = models.UpdateArticleCollectCountNum(v.Num, v.ArticleId)
+		if err != nil {
+			return
+		}
+	}
+	return err
+}

+ 4 - 0
services/task.go

@@ -74,6 +74,10 @@ func Task() {
 
 		getCeLueArticlePv := task.NewTask("getCeLueArticlePv", "0 */10 * * * *", GetCeLueArticlePv) //通过三方接口获取策略平台上的阅读记录
 		task.AddTask("getCeLueArticlePv", getCeLueArticlePv)
+
+		reportBillboardUpdate := task.NewTask("reportBillboardUpdate", "0 10 0 * * *", ReportBillboardUpdate) //报告榜单更新
+		task.AddTask("reportBillboardUpdate", reportBillboardUpdate)
+
 	}
 	if utils.RunMode != "release" {
 		getArticleListByApi := task.NewTask("getArticleListByApi", "0 */60 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章

+ 9 - 0
utils/common.go

@@ -697,3 +697,12 @@ func GetLocalIP() (ip string, err error) {
 	}
 	return
 }
+
+// GetOrmInReplace 获取orm的in查询替换?的方法
+func GetOrmInReplace(num int) string {
+	template := make([]string, num)
+	for i := 0; i < num; i++ {
+		template[i] = "?"
+	}
+	return strings.Join(template, ",")
+}