package controllers import ( "hongze/hongze_clpt/models" "hongze/hongze_clpt/services" "hongze/hongze_clpt/utils" "time" ) //报告榜单 type ReportBillboardController struct { BaseAuthController } type ReportBillboardCommonController struct { BaseCommonController } type MobileReportBillboardController struct { BaseAuthMobileController } // @Title 阅读飙升榜/报告收藏榜 // @Description 获取阅读飙升榜/报告收藏榜接口 // @Param ChartPermissionId query int false "分类ID" // @Param Source query int true "来源 1:阅读飙升 ,2:报告收藏" // @Success 200 {object} models.ReportBillboardListResp // @router /list [get] func (this *MobileReportBillboardController) ReadList() { 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") source, _ := this.GetInt("Source") sourceArr := []int{1, 2} if !utils.InArrayByInt(sourceArr, source) { br.Msg = "来源有误" return } topNum := utils.PageSize15 list := make([]*models.ArticleListResp, 0) // 阅读飙升榜 if source == 1 { var topCond string var topPars []interface{} if chartPermissionId > 0 { topCond += ` AND chart_permission_id = ?` topPars = append(topPars, chartPermissionId) } topList, e := models.GetTopReadRecordArticleListByCondition(topNum, topCond, topPars) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取报告阅读增量排行榜失败, Err:" + e.Error() return } list = topList } // 报告收藏榜 if source == 2 { var collectCond string var collectPars []interface{} if chartPermissionId > 0 { collectCond += ` AND m.chart_permission_id = ?` collectPars = append(collectPars, chartPermissionId) } // 根据关注时间一个月前至昨日的增量数据排序 nowTime := time.Now().Local() startTime := nowTime.AddDate(0, -1, 0) endTime := nowTime.AddDate(0, 0, -1) collectCond += ` AND ac.create_time BETWEEN ? AND ?` collectPars = append(collectPars, startTime, endTime) collectList, e := models.GetReportCollectionBillboardList(topNum, collectPars, collectCond) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取报告收藏排行榜失败, Err:" + e.Error() return } list = collectList } articleIds := make([]int, 0) for i := range list { articleIds = append(articleIds, list[i].ArticleId) } // 报告关联产业信息 industryMap := make(map[int][]*models.IndustrialManagementIdInt, 0) if len(articleIds) > 0 { var industryCond string var industryPars []interface{} industryCond += ` AND mg.article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `)` industryPars = append(industryPars, articleIds) industryList, e := models.GetIndustrialListByarticleId(industryPars, industryCond) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取报告关联的产业信息失败, Err: " + e.Error() return } for i := range industryList { v := industryList[i] industryMap[v.ArticleId] = append(industryMap[v.ArticleId], &models.IndustrialManagementIdInt{ ArticleId: v.ArticleId, IndustrialManagementId: v.IndustrialManagementId, IndustryName: v.IndustryName, ChartPermissionId: v.ChartPermissionId, }) } } for k, v := range list { if len(industryMap[v.ArticleId]) > 0 { list[k].List = industryMap[v.ArticleId] } else { list[k].List = make([]*models.IndustrialManagementIdInt, 0) } } var err error resp := new(models.ReportBillboardListResp) resp.List, err = services.HandleArticleCategoryImg(list) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取报告封面图片失败, Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }