page_history_record.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package services
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/beego/beego/v2/server/web/context"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. "strings"
  9. "time"
  10. )
  11. func AddCygxPageHistoryRecord(user *models.WxUserItem, Ctx *context.Context) {
  12. item := new(models.CygxPageHistoryRecord)
  13. item.UserId = user.UserId
  14. item.CreateTime = time.Now()
  15. item.Mobile = user.Mobile
  16. item.Email = user.Email
  17. item.CompanyId = user.CompanyId
  18. item.CompanyName = user.CompanyName
  19. item.Router = Ctx.Request.RequestURI
  20. item.PageRouter = Ctx.Input.Query("PageRouter")
  21. index := strings.Index(item.Router, "?")
  22. if index != -1 {
  23. item.Parameter = item.Router[index+1:]
  24. }
  25. if Ctx.Input.Method() == "POST" {
  26. item.Parameter = string(Ctx.Input.RequestBody)
  27. var pr models.PageRouter
  28. err := json.Unmarshal(Ctx.Input.RequestBody, &pr)
  29. if err != nil {
  30. fmt.Println(err)
  31. utils.FileLog.Info(err.Error())
  32. }
  33. item.PageRouter = pr.PageRouter
  34. }
  35. if strings.Contains(item.Router, "/api/article/detail") {
  36. cacheKey := fmt.Sprint("uid:", user.UserId, "_Parameter:", item.Parameter)
  37. isExist := utils.Rc.IsExist(cacheKey)
  38. if !isExist {
  39. setNX := utils.Rc.SetNX(cacheKey, user.Mobile, time.Second*10)
  40. if !setNX {
  41. go utils.SendAlarmMsg("记录用户阅读文章,设置Redis Key 过期时间失败:key"+cacheKey, 3)
  42. }
  43. return
  44. }
  45. }
  46. _, err := models.AddCygxPageHistoryRecord(item)
  47. if err != nil {
  48. fmt.Println(err)
  49. utils.FileLog.Info(err.Error())
  50. return
  51. }
  52. }