article_history_record.go 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package models
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "hongze/hongze_clpt/utils"
  5. "time"
  6. )
  7. type CygxArticleHistoryResp struct {
  8. Pv int `description:"阅读PV"`
  9. ArticleId int `description:"文章id"`
  10. Num int `description:"数量"`
  11. }
  12. // ArticleTopHistoryRecord 报告阅读飙升榜
  13. type ArticleTopHistoryRecord struct {
  14. Id int `orm:"column(id);pk"`
  15. ArticleId int `description:"文章ID"`
  16. Title string `description:"文章标题"`
  17. PublishDate string `description:"发布日期"`
  18. ChartPermissionId int `description:"行业ID"`
  19. PermissionName string `description:"行业名称"`
  20. Pv int `description:"PV"`
  21. CreateTime time.Time `description:"创建时间"`
  22. }
  23. //获取用户阅读记录
  24. func GetUserToArticleCount(uid, articleId int) (count int, err error) {
  25. sqlCount := `SELECT COUNT(1) AS count FROM cygx_article_history_record WHERE user_id=? AND article_id=? `
  26. o := orm.NewOrm()
  27. err = o.Raw(sqlCount, uid, articleId).QueryRow(&count)
  28. return
  29. }
  30. //获取用户阅读记录
  31. func GetUserToArticleHistory(uid int, articleIdArr []int) (items []*CygxArticleHistoryResp, err error) {
  32. arrLen := len(articleIdArr)
  33. if arrLen == 0 {
  34. return
  35. }
  36. sql := `SELECT
  37. article_id
  38. FROM
  39. cygx_article_history_record
  40. WHERE
  41. 1 = 1
  42. AND user_id = ?
  43. AND article_id IN (` + utils.GetOrmInReplace(len(articleIdArr)) + `)
  44. GROUP BY
  45. article_id `
  46. o := orm.NewOrm()
  47. _, err = o.Raw(sql, uid, articleIdArr).QueryRows(&items)
  48. return
  49. }
  50. // GetTopReadRecordArticleListByCondition 获取阅读量排行榜
  51. func GetTopReadRecordArticleListByCondition(limit int, condition string, pars []interface{}) (list []*ArticleListResp, err error) {
  52. sql := `SELECT
  53. a.title,
  54. a.article_id,
  55. a.publish_date,
  56. a.annotation,
  57. a.abstract,
  58. m.chart_permission_name,
  59. a.category_id
  60. FROM
  61. cygx_article_top_history_record as r
  62. INNER JOIN cygx_article as a ON a.article_id = r.article_id
  63. INNER JOIN cygx_report_mapping as m ON m.category_id = a.category_id_two`
  64. if condition != `` {
  65. sql += condition
  66. }
  67. sql += ` GROUP BY a.article_id ORDER BY r.pv DESC, a.publish_date DESC LIMIT ?`
  68. _, err = orm.NewOrm().Raw(sql, pars, limit).QueryRows(&list)
  69. return
  70. }
  71. // GetTopReadRecordArticleListByConditionYx 获取研选阅读量排行榜
  72. func GetTopReadRecordArticleListByConditionYx(limit int, condition string, pars []interface{}) (list []*ArticleListResp, err error) {
  73. sql := `SELECT
  74. a.article_id,
  75. a.title,
  76. a.publish_date,
  77. '31' AS chart_permission_id,
  78. '买方研选' AS permission_name,
  79. COUNT( 1 ) AS pv
  80. FROM
  81. cygx_article_history_record_newpv AS l
  82. JOIN cygx_article AS a ON a.article_id = l.article_id
  83. WHERE
  84. a.publish_status = 1 `
  85. if condition != `` {
  86. sql += condition
  87. }
  88. sql += ` GROUP BY a.article_id ORDER BY pv DESC, a.publish_date DESC LIMIT ?`
  89. _, err = orm.NewOrm().Raw(sql, pars, limit).QueryRows(&list)
  90. return
  91. }