keyword.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hongze_cygx/models"
  5. "hongze/hongze_cygx/utils"
  6. "time"
  7. )
  8. //AddSearchKeyWord 记录用户搜索关键词
  9. func AddSearchKeyWord(user *models.WxUserItem, keyWord string, source int) (err error) {
  10. cacheKey := fmt.Sprint("Search_uid:", user.UserId, "_KeyWord:", keyWord, "_Source:", source)
  11. isExist := utils.Rc.IsExist(cacheKey)
  12. if isExist {
  13. return err
  14. }
  15. defer func() {
  16. if err != nil {
  17. go utils.SendAlarmMsg(" 记录用户搜索关键词失败"+err.Error(), 2)
  18. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "记录用户搜索关键词失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  19. }
  20. }()
  21. keyWordItem := new(models.CygxSearchKeyWord)
  22. keyWordItem.UserId = user.UserId
  23. keyWordItem.KeyWord = keyWord
  24. keyWordItem.CreateTime = time.Now()
  25. keyWordItem.Mobile = user.Mobile
  26. keyWordItem.Email = user.Email
  27. keyWordItem.CompanyId = user.CompanyId
  28. keyWordItem.CompanyName = user.CompanyName
  29. keyWordItem.RealName = user.RealName
  30. _, err = models.AddSearchKeyWord(keyWordItem)
  31. go AddUserSearchLog(user, keyWord, source)
  32. //一分钟之内的相同搜索词不重复记录
  33. setNX := utils.Rc.SetNX(cacheKey, keyWord, time.Minute*1)
  34. if !setNX {
  35. go utils.SendAlarmMsg("记录用户搜索关键词失败,设置Redis Key 过期时间失败:key"+cacheKey, 3)
  36. }
  37. return
  38. }
  39. //AddUserSearchLog 记录用户搜索关键词的日志
  40. func AddUserSearchLog(user *models.WxUserItem, keyWord string, source int) (err error) {
  41. defer func() {
  42. if err != nil {
  43. fmt.Println(err)
  44. go utils.SendAlarmMsg(" 记录用户搜索关键词的日志"+err.Error(), 2)
  45. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改活动状态至进行中失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  46. }
  47. }()
  48. item := new(models.CygxSearchKeyWordLog)
  49. item.UserId = user.UserId
  50. item.KeyWord = keyWord
  51. item.CreateTime = time.Now()
  52. item.Mobile = user.Mobile
  53. item.Email = user.Email
  54. item.CompanyId = user.CompanyId
  55. item.CompanyName = user.CompanyName
  56. item.RealName = user.RealName
  57. item.Source = source
  58. _, err = models.AddSearchKeyWordLog(item)
  59. return
  60. }