keyword.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hongze_clpt/models"
  5. "hongze/hongze_clpt/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. }
  46. }()
  47. item := new(models.CygxSearchKeyWordLog)
  48. item.UserId = user.UserId
  49. item.KeyWord = keyWord
  50. item.CreateTime = time.Now()
  51. item.Mobile = user.Mobile
  52. item.Email = user.Email
  53. item.CompanyId = user.CompanyId
  54. item.CompanyName = user.CompanyName
  55. item.RealName = user.RealName
  56. item.Source = source
  57. _, err = models.AddSearchKeyWordLog(item)
  58. return
  59. }