article_history.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package services
  2. import (
  3. "errors"
  4. "hongze/hongze_clpt/models"
  5. "hongze/hongze_clpt/utils"
  6. "strconv"
  7. "time"
  8. )
  9. // 记录用户文章浏览记录
  10. func ArticleHistory(articleId int, user *models.WxUserItem) (err error) {
  11. defer func() {
  12. if err != nil {
  13. go utils.SendAlarmMsg("记录用户文章浏览记录,失败"+err.Error(), 2)
  14. }
  15. }()
  16. uid := user.UserId
  17. key := "CYGX_ARTICLE_" + strconv.Itoa(articleId) + "_" + strconv.Itoa(uid)
  18. if !utils.Rc.IsExist(key) {
  19. //新增浏览记录
  20. //这个表貌似没怎么用了,暂时保留记录
  21. record := new(models.CygxArticleViewRecord)
  22. record.UserId = uid
  23. record.ArticleId = articleId
  24. record.CreateTime = time.Now()
  25. record.Mobile = user.Mobile
  26. record.Email = user.Email
  27. record.CompanyId = user.CompanyId
  28. record.CompanyName = user.CompanyName
  29. _, e := models.AddCygxArticleViewRecord(record)
  30. if e != nil {
  31. err = errors.New("AddCygxArticleViewRecord, Err: " + e.Error())
  32. return
  33. }
  34. e = models.ModifyReportLastViewTime(uid)
  35. if e != nil {
  36. err = errors.New("ModifyReportLastViewTime, Err: " + e.Error())
  37. return
  38. }
  39. utils.Rc.Put(key, 1, 2*time.Second)
  40. }
  41. return
  42. }
  43. // 记录用户文章浏览记录带时长
  44. func ArticleHistoryStopTime(articleId, stopTime, outType int, user *models.WxUserItem) (err error) {
  45. defer func() {
  46. if err != nil {
  47. go utils.SendAlarmMsg("记录用户文章浏览记录带时长,失败"+err.Error(), 2)
  48. }
  49. }()
  50. if stopTime < 3 {
  51. return
  52. }
  53. uid := user.UserId
  54. key := "CYGX_ARTICLE_PV" + strconv.Itoa(articleId) + "_" + strconv.Itoa(uid) + "_" + strconv.Itoa(user.CompanyId) + "_" + strconv.Itoa(outType)
  55. if !utils.Rc.IsExist(key) {
  56. record := new(models.CygxArticleHistoryRecordNewpv)
  57. record.UserId = uid
  58. record.ArticleId = articleId
  59. record.CreateTime = time.Now().Add(-time.Second * time.Duration(stopTime))
  60. record.ModifyTime = time.Now()
  61. record.Mobile = user.Mobile
  62. record.Email = user.Email
  63. record.CompanyId = user.CompanyId
  64. record.CompanyName = user.CompanyName
  65. record.StopTime = stopTime
  66. record.OutType = outType
  67. record.Source = "WEB"
  68. newId, e := models.AddCygxArticleViewRecordNewpv(record)
  69. if e != nil {
  70. err = errors.New("AddCygxArticleViewRecordNewpv, Err: " + e.Error())
  71. return
  72. }
  73. recordRedis := new(ReportViewRecord)
  74. recordRedis.UserId = user.UserId
  75. recordRedis.ReportId = articleId
  76. recordRedis.Mobile = user.Mobile
  77. recordRedis.Email = user.Email
  78. recordRedis.RealName = user.RealName
  79. recordRedis.CompanyName = user.CompanyName
  80. recordRedis.StopTime = stopTime
  81. recordRedis.OutId = int(newId)
  82. recordRedis.CreateTime = record.CreateTime
  83. go PushViewRecordNewRedisData(recordRedis, user.CompanyId)
  84. utils.Rc.Put(key, 1, 2*time.Second)
  85. }
  86. go ArticleHistoryUserLabelLogAdd(articleId, uid)
  87. return
  88. }