BrowseHistory.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package youngee_talent_service
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/frame/g"
  5. "github.com/gogf/gf/net/ghttp"
  6. "github.com/gogf/gf/util/gconv"
  7. "strings"
  8. "youngmini_server/app/model/youngee_talent_model"
  9. "youngmini_server/app/utils"
  10. )
  11. // 存储每个日期和对应的种草列表
  12. type BrowseProjectHistory struct {
  13. Date string `json:"date"`
  14. ProjectList []youngee_talent_model.ProjectDetail `json:"projectList"`
  15. }
  16. // 存储每个日期和对应的带货列表
  17. type BrowseSelectionHistory struct {
  18. Date string `json:"date"`
  19. SelectionList []youngee_talent_model.SelectionDetail `json:"selectionList"`
  20. }
  21. func GetProjectBrowseHistory(r *ghttp.Request) *TalentHttpResult {
  22. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  23. if err != nil {
  24. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  25. }
  26. // 获取所有相关的 Redis Key
  27. redisKeyPattern := fmt.Sprintf("browseProject:*:%s", tid)
  28. keys, err := g.Redis().DoVar("KEYS", redisKeyPattern)
  29. if err != nil {
  30. fmt.Println("Get redis keys error", err)
  31. }
  32. // 初始化返回的数据
  33. var browseProjectHistories []BrowseProjectHistory
  34. // 遍历所有的日期 Key
  35. for _, key := range keys.Slice() {
  36. // 获取日期部分
  37. keyStr := gconv.String(key)
  38. date := strings.Split(keyStr, ":")[1]
  39. // 获取该日期下的所有 pid
  40. pids, err := g.Redis().DoVar("SMEMBERS", keyStr)
  41. if err != nil {
  42. println("Get redis keys error", err)
  43. }
  44. // 使用 pids 查询数据库,获取商品列表
  45. var projectList []youngee_talent_model.ProjectDetail
  46. err = g.DB().Model("project_info").WithAll().Where("project_id IN(?)", pids.Strings()).Scan(&projectList)
  47. if err != nil {
  48. println("Get redis projects error", err)
  49. }
  50. // 构建 BrowseHistory 对象
  51. browseProjectHistory := BrowseProjectHistory{
  52. Date: date,
  53. ProjectList: projectList,
  54. }
  55. // 添加到结果列表中
  56. browseProjectHistories = append(browseProjectHistories, browseProjectHistory)
  57. }
  58. return &TalentHttpResult{Code: 0, Msg: "success", Data: browseProjectHistories}
  59. }
  60. // 获取带货浏览记录
  61. func GetSelectionBrowseHistory(r *ghttp.Request) *TalentHttpResult {
  62. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  63. if err != nil {
  64. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  65. }
  66. // 获取所有相关的 Redis Key
  67. redisKeyPattern := fmt.Sprintf("browseSelection:*:%s", tid)
  68. keys, err := g.Redis().DoVar("KEYS", redisKeyPattern)
  69. if err != nil {
  70. fmt.Println("Get redis keys error", err)
  71. }
  72. // 初始化返回的数据
  73. var browseSelectionHistories []BrowseSelectionHistory
  74. // 遍历所有的日期 Key
  75. for _, key := range keys.Slice() {
  76. // 获取日期部分
  77. keyStr := gconv.String(key)
  78. date := strings.Split(keyStr, ":")[1]
  79. // 获取该日期下的所有 pid
  80. selctionIds, err := g.Redis().DoVar("SMEMBERS", keyStr)
  81. if err != nil {
  82. println("Get redis keys error", err)
  83. }
  84. // 使用 pids 查询数据库,获取商品列表
  85. var selectionList []youngee_talent_model.SelectionDetail
  86. err = g.DB().Model("younggee_selection_info").WithAll().Where("selection_id IN(?)", selctionIds.Strings()).Scan(&selectionList)
  87. if err != nil {
  88. println("Get redis selections error", err)
  89. }
  90. // 构建 BrowseHistory 对象
  91. browseSelectionHistory := BrowseSelectionHistory{
  92. Date: date,
  93. SelectionList: selectionList,
  94. }
  95. // 添加到结果列表中
  96. browseSelectionHistories = append(browseSelectionHistories, browseSelectionHistory)
  97. }
  98. return &TalentHttpResult{Code: 0, Msg: "success", Data: browseSelectionHistories}
  99. }