article_collect.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package models
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "hongze/hongze_cygx/utils"
  5. "time"
  6. )
  7. type CygxArticleCollect struct {
  8. Id int `orm:"column(id);pk"`
  9. ArticleId int
  10. ActivityVoiceId int
  11. VideoId int
  12. UserId int
  13. CreateTime time.Time
  14. Mobile string `description:"手机号"`
  15. Email string `description:"邮箱"`
  16. CompanyId int `description:"公司id"`
  17. CompanyName string `description:"公司名称"`
  18. RealName string `description:"用户实际名称"`
  19. }
  20. //添加收藏信息
  21. func AddCygxArticleCollect(item *CygxArticleCollect) (lastId int64, err error) {
  22. o := orm.NewOrm()
  23. lastId, err = o.Insert(item)
  24. return
  25. }
  26. type ArticleCollectReq struct {
  27. ArticleId int `description:"报告id"`
  28. }
  29. type ArticleCollectResp struct {
  30. Status int `description:"1:收藏,2:取消收藏"`
  31. CollectCount int `description:"收藏总数"`
  32. }
  33. func RemoveArticleCollect(userId, articleId int) (err error) {
  34. o := orm.NewOrm()
  35. sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND article_id=? `
  36. _, err = o.Raw(sql, userId, articleId).Exec()
  37. return
  38. }
  39. func GetArticleCollectUsersCount(articleId int) (count int, err error) {
  40. sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE article_id=? `
  41. err = orm.NewOrm().Raw(sql, articleId).QueryRow(&count)
  42. return
  43. }
  44. func GetArticleCollectCount(userId, articleId int) (count int, err error) {
  45. sql := `SELECT COUNT(1) AS count FROM cygx_article_collect WHERE user_id=? AND article_id=? `
  46. err = orm.NewOrm().Raw(sql, userId, articleId).QueryRow(&count)
  47. return
  48. }
  49. type ArticleCollectList struct {
  50. Id int `orm:"column(id);pk"`
  51. ArticleId int
  52. UserId int
  53. CreateTime time.Time
  54. Title string `description:"标题"`
  55. TitleEn string `description:"英文标题 "`
  56. UpdateFrequency string `description:"更新周期"`
  57. CreateDate string `description:"创建时间"`
  58. PublishDate string `description:"发布时间"`
  59. Body string `description:"内容"`
  60. Abstract string `description:"摘要"`
  61. CategoryName string `description:"一级分类"`
  62. SubCategoryName string `description:"二级分类"`
  63. }
  64. func GetCygxArticleCollectList(condition string) (items []*CygxArticleCollect, err error) {
  65. o := orm.NewOrm()
  66. sql := `SELECT * FROM cygx_article_collect WHERE 1 =1 ` + condition + ` GROUP BY user_id `
  67. _, err = o.Raw(sql).QueryRows(&items)
  68. return
  69. }
  70. //修改用户收藏文章的相关信息
  71. func UpdateCygxArticleCollect(wxUser *WxUserItem) (err error) {
  72. o := orm.NewOrm()
  73. var sql string
  74. if wxUser.Mobile != "" {
  75. sql = `UPDATE cygx_article_collect SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
  76. _, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
  77. } else if wxUser.Email != "" {
  78. sql = `UPDATE cygx_article_collect SET user_id=?,company_id=?,company_name=?,mobile=?,real_name=? WHERE email=? `
  79. _, err = o.Raw(sql, wxUser.UserId, wxUser.CompanyId, wxUser.CompanyName, wxUser.Mobile, wxUser.RealName, wxUser.Email).Exec()
  80. }
  81. return
  82. }
  83. type CygxArticleCollectCountRep struct {
  84. ArticleId int `description:"文章ID"`
  85. Num int `description:"数量"`
  86. }
  87. //获取文章被收藏的数量
  88. func GetUserArticleCollectList() (items []*CygxArticleCollectCountRep, err error) {
  89. o := orm.NewOrm()
  90. sql := `SELECT
  91. COUNT( 1 ) AS num,
  92. f.article_id
  93. FROM
  94. cygx_article_collect AS f
  95. INNER JOIN wx_user AS u ON u.user_id = f.user_id
  96. INNER JOIN cygx_article AS a ON a.article_id = f.article_id
  97. WHERE
  98. 1 = 1
  99. GROUP BY
  100. f.article_id
  101. ORDER BY
  102. num DESC
  103. LIMIT 30 `
  104. _, err = o.Raw(sql).QueryRows(&items)
  105. return
  106. }
  107. //修改文章收藏的数量
  108. func UpdateArticleCollectCountNum(num, articleId int) (err error) {
  109. o := orm.NewOrm()
  110. sql := `UPDATE cygx_article SET user_collection_num = ? WHERE article_id = ?`
  111. _, err = o.Raw(sql, num, articleId).Exec()
  112. return
  113. }
  114. type CygxArticleNum struct {
  115. ArticleId int `description:"文章ID"`
  116. IsCollect bool `description:"本人是否收藏"`
  117. Pv int `description:"PV"`
  118. CollectNum int `description:"收藏人数"`
  119. }
  120. // GetArticleCollectNum 根据文章ID获取收藏数量的列表
  121. func GetArticleCollectNum(articleId []string, uid int) (items []*CygxArticleNum, err error) {
  122. lenarticleId := len(articleId)
  123. if lenarticleId == 0 {
  124. return
  125. }
  126. sql := `SELECT
  127. a.article_id,
  128. ( SELECT count( 1 ) FROM cygx_article_history_record_newpv AS h WHERE h.article_id = a.article_id ) AS pv,
  129. ( SELECT count( 1 ) FROM cygx_article_collect AS ac INNER JOIN wx_user as u ON u.user_id = ac.user_id WHERE ac.article_id = a.article_id ) AS collect_num,
  130. ( SELECT count( 1 ) FROM cygx_article_collect AS ac INNER JOIN wx_user as u ON u.user_id = ac.user_id WHERE ac.article_id = a.article_id AND DATE_SUB( CURDATE(), INTERVAL 30 DAY ) <= date( ac.create_time ) ) AS collect_num_order,
  131. ( SELECT count( 1 ) FROM cygx_article_collect AS ac WHERE ac.article_id = a.article_id AND user_id = ? ) AS is_collect
  132. FROM
  133. cygx_article AS a WHERE 1 = 1 AND article_id IN (` + utils.GetOrmInReplace(lenarticleId) + `) `
  134. o := orm.NewOrm()
  135. _, err = o.Raw(sql, uid, articleId).QueryRows(&items)
  136. return
  137. }
  138. type MicroRoadshowCollectList struct {
  139. AudioIds string
  140. VideoIds string
  141. }