article_history.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/utils"
  7. "strconv"
  8. "time"
  9. )
  10. func GetArticleHistoryByUser(articleIds []int, user *models.WxUserItem) (mapResp map[int]int) {
  11. var err error
  12. defer func() {
  13. if err != nil {
  14. fmt.Println(err)
  15. go utils.SendAlarmMsg("获取用户的阅读数据,信息失败,Err:"+err.Error(), 3)
  16. }
  17. }()
  18. lenIds := len(articleIds)
  19. if lenIds == 0 {
  20. return
  21. }
  22. var condition string
  23. var pars []interface{}
  24. condition = ` AND article_id IN (` + utils.GetOrmInReplace(lenIds) + `) AND user_id = ?`
  25. pars = append(pars, articleIds, user.UserId)
  26. list, err := models.GetCygxArticleHistoryRecordNewpvListPv(condition, pars)
  27. if err != nil {
  28. return
  29. }
  30. mapResp = make(map[int]int, 0)
  31. for _, v := range list {
  32. mapResp[v.ArticleId] = v.Pv
  33. }
  34. return
  35. }
  36. func GetArticleHistoryByArticleId(articleIds []int) (mapResp map[int]int) {
  37. var err error
  38. defer func() {
  39. if err != nil {
  40. fmt.Println(err)
  41. go utils.SendAlarmMsg("获取用户的阅读数据,信息失败,Err:"+err.Error(), 3)
  42. }
  43. }()
  44. lenIds := len(articleIds)
  45. if lenIds == 0 {
  46. return
  47. }
  48. var condition string
  49. var pars []interface{}
  50. condition = ` AND article_id IN (` + utils.GetOrmInReplace(lenIds) + `) `
  51. pars = append(pars, articleIds)
  52. list, err := models.GetCygxArticleHistoryRecordNewpvListPv(condition, pars)
  53. if err != nil {
  54. return
  55. }
  56. mapResp = make(map[int]int, 0)
  57. for _, v := range list {
  58. mapResp[v.ArticleId] = v.Pv
  59. }
  60. return
  61. }
  62. // 记录用户文章浏览记录
  63. func ArticleHistory(articleId int, user *models.WxUserItem) (err error) {
  64. defer func() {
  65. if err != nil {
  66. go utils.SendAlarmMsg("记录用户文章浏览记录,失败"+err.Error(), 2)
  67. }
  68. }()
  69. uid := user.UserId
  70. key := "CYGX_ARTICLE_" + strconv.Itoa(articleId) + "_" + strconv.Itoa(uid)
  71. if !utils.Rc.IsExist(key) {
  72. //新增浏览记录
  73. //这个表貌似没怎么用了,暂时保留记录
  74. record := new(models.CygxArticleViewRecord)
  75. record.UserId = uid
  76. record.ArticleId = articleId
  77. record.CreateTime = time.Now()
  78. record.Mobile = user.Mobile
  79. record.Email = user.Email
  80. record.CompanyId = user.CompanyId
  81. record.CompanyName = user.CompanyName
  82. _, e := models.AddCygxArticleViewRecord(record)
  83. if e != nil {
  84. err = errors.New("AddCygxArticleViewRecord, Err: " + e.Error())
  85. return
  86. }
  87. e = models.ModifyReportLastViewTime(uid)
  88. if e != nil {
  89. err = errors.New("ModifyReportLastViewTime, Err: " + e.Error())
  90. return
  91. }
  92. utils.Rc.Put(key, 1, 2*time.Second)
  93. }
  94. return
  95. }
  96. // 记录用户文章浏览记录带时长
  97. func ArticleHistoryStopTime(articleId, stopTime, outType int, user *models.WxUserItem) (err error) {
  98. defer func() {
  99. if err != nil {
  100. go utils.SendAlarmMsg("记录用户文章浏览记录带时长,失败"+err.Error(), 2)
  101. }
  102. }()
  103. if stopTime < 3 {
  104. return
  105. }
  106. uid := user.UserId
  107. key := "CYGX_ARTICLE_PV" + strconv.Itoa(articleId) + "_" + strconv.Itoa(uid) + "_" + strconv.Itoa(user.CompanyId) + "_" + strconv.Itoa(outType)
  108. if !utils.Rc.IsExist(key) {
  109. record := new(models.CygxArticleHistoryRecordNewpv)
  110. record.UserId = uid
  111. record.ArticleId = articleId
  112. record.CreateTime = time.Now().Add(-time.Second * time.Duration(stopTime))
  113. record.ModifyTime = time.Now()
  114. record.Mobile = user.Mobile
  115. record.Email = user.Email
  116. record.CompanyId = user.CompanyId
  117. record.CompanyName = user.CompanyName
  118. record.StopTime = stopTime
  119. record.OutType = outType
  120. record.Source = "MOBILE"
  121. newId, e := models.AddCygxArticleViewRecordNewpv(record)
  122. if e != nil {
  123. err = errors.New("AddCygxArticleViewRecordNewpv, Err: " + e.Error())
  124. return
  125. }
  126. recordRedis := new(ReportViewRecord)
  127. recordRedis.UserId = user.UserId
  128. recordRedis.ReportId = articleId
  129. recordRedis.Mobile = user.Mobile
  130. recordRedis.Email = user.Email
  131. recordRedis.RealName = user.RealName
  132. recordRedis.CompanyName = user.CompanyName
  133. recordRedis.StopTime = stopTime
  134. recordRedis.ViewTime = record.CreateTime.Format(utils.FormatDateTime)
  135. recordRedis.OutId = int(newId)
  136. //recordRedis.CreateTime = time.Now()
  137. go PushViewRecordNewRedisData(recordRedis, user.CompanyId)
  138. utils.Rc.Put(key, 1, 2*time.Second)
  139. }
  140. go ArticleHistoryUserLabelLogAdd(articleId, uid)
  141. return
  142. }