report_billboard.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package controllers
  2. import (
  3. "hongze/hongze_clpt/models"
  4. "hongze/hongze_clpt/services"
  5. "hongze/hongze_clpt/utils"
  6. "time"
  7. )
  8. //报告榜单
  9. type ReportBillboardController struct {
  10. BaseAuthController
  11. }
  12. type ReportBillboardCommonController struct {
  13. BaseCommonController
  14. }
  15. type MobileReportBillboardController struct {
  16. BaseAuthMobileController
  17. }
  18. // @Title 阅读飙升榜/报告收藏榜
  19. // @Description 获取阅读飙升榜/报告收藏榜接口
  20. // @Param ChartPermissionId query int false "分类ID"
  21. // @Param Source query int true "来源 1:阅读飙升 ,2:报告收藏"
  22. // @Success 200 {object} models.ReportBillboardListResp
  23. // @router /list [get]
  24. func (this *MobileReportBillboardController) ReadList() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. user := this.User
  31. if user == nil {
  32. br.Msg = "请重新登录"
  33. br.Ret = 408
  34. return
  35. }
  36. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  37. source, _ := this.GetInt("Source")
  38. sourceArr := []int{1, 2}
  39. if !utils.InArrayByInt(sourceArr, source) {
  40. br.Msg = "来源有误"
  41. return
  42. }
  43. topNum := utils.PageSize15
  44. list := make([]*models.ArticleListResp, 0)
  45. // 阅读飙升榜
  46. if source == 1 {
  47. var topCond string
  48. var topPars []interface{}
  49. if chartPermissionId > 0 {
  50. topCond += ` AND chart_permission_id = ?`
  51. topPars = append(topPars, chartPermissionId)
  52. }
  53. topList, e := models.GetTopReadRecordArticleListByCondition(topNum, topCond, topPars)
  54. if e != nil {
  55. br.Msg = "获取失败"
  56. br.ErrMsg = "获取报告阅读增量排行榜失败, Err:" + e.Error()
  57. return
  58. }
  59. list = topList
  60. }
  61. // 报告收藏榜
  62. if source == 2 {
  63. var collectCond string
  64. var collectPars []interface{}
  65. if chartPermissionId > 0 {
  66. collectCond += ` AND m.chart_permission_id = ?`
  67. collectPars = append(collectPars, chartPermissionId)
  68. }
  69. // 根据关注时间一个月前至昨日的增量数据排序
  70. nowTime := time.Now().Local()
  71. startTime := nowTime.AddDate(0, -1, 0)
  72. endTime := nowTime.AddDate(0, 0, -1)
  73. collectCond += ` AND ac.create_time BETWEEN ? AND ?`
  74. collectPars = append(collectPars, startTime, endTime)
  75. collectList, e := models.GetReportCollectionBillboardList(topNum, collectPars, collectCond)
  76. if e != nil {
  77. br.Msg = "获取失败"
  78. br.ErrMsg = "获取报告收藏排行榜失败, Err:" + e.Error()
  79. return
  80. }
  81. list = collectList
  82. }
  83. articleIds := make([]int, 0)
  84. for i := range list {
  85. articleIds = append(articleIds, list[i].ArticleId)
  86. }
  87. // 报告关联产业信息
  88. industryMap := make(map[int][]*models.IndustrialManagementIdInt, 0)
  89. if len(articleIds) > 0 {
  90. var industryCond string
  91. var industryPars []interface{}
  92. industryCond += ` AND mg.article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `)`
  93. industryPars = append(industryPars, articleIds)
  94. industryList, e := models.GetIndustrialListByarticleId(industryPars, industryCond)
  95. if e != nil {
  96. br.Msg = "获取失败"
  97. br.ErrMsg = "获取报告关联的产业信息失败, Err: " + e.Error()
  98. return
  99. }
  100. for i := range industryList {
  101. v := industryList[i]
  102. industryMap[v.ArticleId] = append(industryMap[v.ArticleId], &models.IndustrialManagementIdInt{
  103. ArticleId: v.ArticleId,
  104. IndustrialManagementId: v.IndustrialManagementId,
  105. IndustryName: v.IndustryName,
  106. ChartPermissionId: v.ChartPermissionId,
  107. })
  108. }
  109. }
  110. for k, v := range list {
  111. if len(industryMap[v.ArticleId]) > 0 {
  112. list[k].List = industryMap[v.ArticleId]
  113. } else {
  114. list[k].List = make([]*models.IndustrialManagementIdInt, 0)
  115. }
  116. }
  117. var err error
  118. resp := new(models.ReportBillboardListResp)
  119. resp.List, err = services.HandleArticleCategoryImg(list)
  120. if err != nil {
  121. br.Msg = "获取失败"
  122. br.ErrMsg = "获取报告封面图片失败, Err:" + err.Error()
  123. return
  124. }
  125. br.Ret = 200
  126. br.Success = true
  127. br.Msg = "获取成功"
  128. br.Data = resp
  129. }