report_view_log.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package report
  2. import (
  3. "fmt"
  4. "hongze/hongze_yb/global"
  5. "hongze/hongze_yb/models/tables/rddp/report"
  6. "hongze/hongze_yb/models/tables/rddp/report_view_log"
  7. "time"
  8. )
  9. // GetUnRead 获取未读数
  10. func GetUnRead(classifyIdSeconds []int, userId uint64) (unReadItem map[string]int, err error) {
  11. firstDay := "2022-01-01"
  12. newReports, err := report.GetReportsByClassifyIdSecondsAndDate(classifyIdSeconds, firstDay)
  13. if err != nil {
  14. return
  15. }
  16. var newIds []int
  17. reportMap := make(map[int]*report.UnReadItem)
  18. if len(newReports) > 0 {
  19. for _, v := range newReports {
  20. newIds = append(newIds, v.Id)
  21. temp := new(report.UnReadItem)
  22. temp.ReportID = v.Id
  23. temp.ClassifyNameFirst = v.ClassifyNameFirst
  24. reportMap[v.Id] = temp
  25. }
  26. //获取用户的浏览记录
  27. viewReportIds, tErr := report_view_log.GetByReportIdsAndUserIdAndTime(newIds, userId, firstDay)
  28. if tErr != nil {
  29. err = tErr
  30. return
  31. }
  32. //过滤已经浏览过的报告ID
  33. if len(viewReportIds) > 0 {
  34. for _, item := range viewReportIds {
  35. if _, ok := reportMap[item]; ok {
  36. delete(reportMap, item)
  37. }
  38. }
  39. }
  40. unReadItem = make(map[string]int)
  41. for _, v := range reportMap {
  42. unReadItem[v.ClassifyNameFirst] += 1
  43. }
  44. }
  45. return
  46. }
  47. // BatchInsertReportView 批量新增报告已读记录
  48. func BatchInsertReportView(params ...interface{}) {
  49. var err error
  50. userId := params[1].(uint64)
  51. defer func() {
  52. if err != nil {
  53. global.LOG.Critical(fmt.Sprintf("Task BatchInsertReportView: userId=%d, err:%s, recover:%s", userId, err.Error(), recover()))
  54. }
  55. }()
  56. weekReportIds := params[0]
  57. classifyNameFirst := params[2]
  58. classifyIdSeconds := params[3]
  59. firstDay := "2022-01-01"
  60. var newReports []*report.Report
  61. pars := make([]interface{}, 0)
  62. var condition string
  63. // 特殊处理三种分类
  64. if classifyNameFirst == "大事点评" || classifyNameFirst == "会议纪要" || classifyNameFirst == "年报合集" {
  65. condition = "state = 2 and publish_time > ? "
  66. pars = append(pars, firstDay)
  67. }else{
  68. condition = "state = 2 and classify_name_first = ? and publish_time > ? "
  69. pars = append(pars, classifyNameFirst, firstDay)
  70. }
  71. if classifyNameFirst == "晨报" {
  72. } else if classifyNameFirst == "周报" {
  73. condition += " and id in (?)"
  74. pars = append(pars, weekReportIds)
  75. } else {
  76. condition += " and classify_id_second in (?)"
  77. pars = append(pars, classifyIdSeconds)
  78. }
  79. newReports, err = report.GetReportListByCondition(condition, pars)
  80. if err != nil {
  81. return
  82. }
  83. var newIds []int
  84. reportMap := make(map[int]int)
  85. if len(newReports) > 0 {
  86. for _, v := range newReports {
  87. newIds = append(newIds, v.Id)
  88. reportMap[v.Id] = v.Id
  89. }
  90. //获取用户的浏览记录
  91. viewReportIds, tErr := report_view_log.GetByReportIdsAndUserIdAndTime(newIds, userId, firstDay)
  92. if tErr != nil {
  93. err = tErr
  94. return
  95. }
  96. //过滤已经浏览过的报告ID
  97. if len(viewReportIds) > 0 {
  98. for _, item := range viewReportIds {
  99. if _, ok := reportMap[item]; ok {
  100. delete(reportMap, item)
  101. }
  102. }
  103. }
  104. var reportLogs []*report_view_log.ReportViewLog
  105. for _, v := range reportMap{
  106. temp := new(report_view_log.ReportViewLog)
  107. temp.ReportId = v
  108. temp.UserId = userId
  109. temp.CreateTime = time.Now()
  110. reportLogs = append(reportLogs, temp)
  111. }
  112. tErr = report_view_log.CreateInBatches(reportLogs)
  113. if tErr != nil {
  114. err = tErr
  115. return
  116. }
  117. //num := len(reportLogs)
  118. }
  119. return
  120. }