report_billboard.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. categoryId, err := models.GetCategoryId(chartPermissionId)
  51. if err != nil && err.Error() != utils.ErrNoRow() {
  52. br.Msg = "获取信息失败"
  53. br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error()
  54. return
  55. }
  56. if categoryId != "" {
  57. topCond += ` AND a.category_id IN (` + categoryId + `)`
  58. }
  59. }
  60. topList, e := models.GetTopReadRecordArticleListByCondition(topNum, topCond, topPars)
  61. if e != nil {
  62. br.Msg = "获取失败"
  63. br.ErrMsg = "获取报告阅读增量排行榜失败, Err:" + e.Error()
  64. return
  65. }
  66. list = topList
  67. }
  68. // 报告收藏榜
  69. if source == 2 {
  70. var collectCond string
  71. var collectPars []interface{}
  72. if chartPermissionId > 0 {
  73. categoryId, err := models.GetCategoryId(chartPermissionId)
  74. if err != nil && err.Error() != utils.ErrNoRow() {
  75. br.Msg = "获取信息失败"
  76. br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error()
  77. return
  78. }
  79. if categoryId != "" {
  80. collectCond += ` AND a.category_id IN (` + categoryId + `)`
  81. }
  82. }
  83. // 根据关注时间一个月前至昨日的增量数据排序
  84. nowTime := time.Now().Local()
  85. startTime := nowTime.AddDate(0, -1, 0)
  86. endTime := nowTime.AddDate(0, 0, -1)
  87. collectCond += ` AND ac.create_time BETWEEN ? AND ?`
  88. collectPars = append(collectPars, startTime, endTime)
  89. collectList, e := models.GetReportCollectionBillboardList(topNum, collectPars, collectCond)
  90. if e != nil {
  91. br.Msg = "获取失败"
  92. br.ErrMsg = "获取报告收藏排行榜失败, Err:" + e.Error()
  93. return
  94. }
  95. list = collectList
  96. }
  97. var err error
  98. resp := new(models.ReportBillboardListResp)
  99. resp.List, err = services.HandleArticleCategoryImg(list)
  100. if err != nil {
  101. br.Msg = "获取失败"
  102. br.ErrMsg = "获取报告封面图片失败, Err:" + err.Error()
  103. return
  104. }
  105. br.Ret = 200
  106. br.Success = true
  107. br.Msg = "获取成功"
  108. br.Data = resp
  109. }