article_red.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package services
  2. import (
  3. "errors"
  4. "hongze/hongze_clpt/models"
  5. "hongze/hongze_clpt/utils"
  6. )
  7. //处理文章小红点
  8. func GetShowTimeLineIsRed(user *models.WxUserItem, industrialManagementId int) (isRed bool, err error) {
  9. //时间线
  10. timeLineItem := models.IndustrialToArticleCategoryRep{
  11. CategoryId: 99999,
  12. MatchTypeName: "时间线",
  13. }
  14. timeLineList, e := models.GetTimeLineReportIndustrialListRed(user.UserId, industrialManagementId, 0, 30)
  15. if e != nil {
  16. err = errors.New("GetTimeLineReportIndustrialListRed, Err: " + e.Error())
  17. return
  18. }
  19. //查询用户今天是否看过时间线
  20. haveMorningMeeting := false
  21. var morningMeetingTime string
  22. count, e := models.GetTimeLineRecordCount(user.UserId, industrialManagementId)
  23. if e != nil {
  24. err = errors.New("GetTimeLineRecordCount, Err: " + e.Error())
  25. return
  26. }
  27. var recordItem *models.CygxPageHistoryRecord
  28. if count > 1 {
  29. recordItem, e = models.GetTimeLineRecordItem(user.UserId, industrialManagementId)
  30. if e != nil {
  31. err = errors.New("GetTimeLineRecordCount, Err: " + e.Error())
  32. return
  33. }
  34. }
  35. for _, v := range timeLineList {
  36. if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishTime)) {
  37. if v.SubCategoryName == "时间线" {
  38. haveMorningMeeting = true
  39. morningMeetingTime = v.PublishTime
  40. continue
  41. }
  42. timeLineItem.IsRed = true
  43. }
  44. }
  45. //因为无法记录用户是否看过晨会点评,所以用用户今天是否看过时间线来判断是否显示小红点,这里是判断分类的小红点
  46. timeLineRed := false
  47. if count < 2 {
  48. timeLineRed = true
  49. } else if count > 1 && recordItem.CreateTime.Before(utils.StrTimeToTime(morningMeetingTime)) {
  50. timeLineRed = true
  51. }
  52. if !timeLineItem.IsRed && timeLineRed && haveMorningMeeting {
  53. timeLineItem.IsRed = true
  54. }
  55. isRed = timeLineItem.IsRed
  56. return
  57. }