123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package youngee_talent_service
- import (
- "fmt"
- "github.com/gogf/gf/frame/g"
- "github.com/gogf/gf/net/ghttp"
- "github.com/gogf/gf/util/gconv"
- "strings"
- "youngmini_server/app/model/youngee_talent_model"
- "youngmini_server/app/utils"
- )
- // 存储每个日期和对应的种草列表
- type BrowseProjectHistory struct {
- Date string `json:"date"`
- ProjectList []youngee_talent_model.ProjectDetail `json:"projectList"`
- }
- // 存储每个日期和对应的带货列表
- type BrowseSelectionHistory struct {
- Date string `json:"date"`
- SelectionList []youngee_talent_model.SelectionDetail `json:"selectionList"`
- }
- // 存储每个日期和对应的本地生活列表
- type BrowseLocalHistory struct {
- Date string `json:"date"`
- LocalList []youngee_talent_model.LocalInfoDetail `json:"localList"`
- }
- func GetLocalBrowseHistory(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- // 获取所有相关的 Redis Key
- redisKeyPattern := fmt.Sprintf("browseLocal:*:%s", tid)
- keys, err := g.Redis().DoVar("KEYS", redisKeyPattern)
- if err != nil {
- fmt.Println("Get redis keys error", err)
- }
- // 初始化返回的数据
- var browseLocalHistories []BrowseLocalHistory
- // 遍历所有的日期 Key
- for _, key := range keys.Slice() {
- // 获取日期部分
- keyStr := gconv.String(key)
- date := strings.Split(keyStr, ":")[1]
- // 获取该日期下的所有 pid
- localIds, err := g.Redis().DoVar("SMEMBERS", keyStr)
- if err != nil {
- println("Get redis keys error", err)
- }
- // 使用 localIds 查询数据库,获取商品列表
- var localList []youngee_talent_model.LocalInfoDetail
- err = g.DB().Model("project_info").WithAll().Where("local_id IN(?)", localIds.Strings()).Scan(&localList)
- if err != nil {
- println("Get redis projects error", err)
- }
- // 构建 BrowseHistory 对象
- browseLocalHistory := BrowseLocalHistory{
- Date: date,
- LocalList: localList,
- }
- // 添加到结果列表中
- browseLocalHistories = append(browseLocalHistories, browseLocalHistory)
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: browseLocalHistories}
- }
- func GetProjectBrowseHistory(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- // 获取所有相关的 Redis Key
- redisKeyPattern := fmt.Sprintf("browseProject:*:%s", tid)
- //获取存储了pid和sPid的所有key
- keys, err := g.Redis().DoVar("KEYS", redisKeyPattern)
- if err != nil {
- fmt.Println("Get redis keys error", err)
- }
- // 初始化返回的数据
- var browseProjectHistories []BrowseProjectHistory
- // 遍历所有的日期 Key
- for _, key := range keys.Slice() {
- // 获取日期部分
- keyStr := gconv.String(key)
- date := strings.Split(keyStr, ":")[1]
- // 获取该日期下的所有 pid:s_project_id 组合
- browseItems, err := g.Redis().DoVar("SMEMBERS", keyStr)
- if err != nil {
- println("Get redis keys error", err)
- continue
- }
- // 准备存放项目详细信息的列表
- var projectList []youngee_talent_model.ProjectDetail
- // 遍历每个 pid:s_project_id 组合
- for _, item := range browseItems.Strings() {
- parts := strings.Split(item, ":")
- if len(parts) < 2 {
- println("Invalid format for browse item:", item)
- continue
- }
- pid := parts[0]
- s_project_id := gconv.Int(parts[1])
- // 查询项目详情(`project_info` 表中的基础信息)
- var projectDetail youngee_talent_model.ProjectDetail
- err = g.DB().Model("project_info").WithAll().Where("project_id = ?", pid).Scan(&projectDetail)
- if err != nil {
- println("Get project detail error", err)
- continue
- }
- // 判断 `s_project_id` 是否为 0,若不为 0,表示来自服务商
- if s_project_id != 0 {
- // 查询 `project_info_supplier` 表获取服务商信息
- projectInfoSupplier := youngee_talent_model.ProjectInfoSupplier{}
- err = g.DB().Model("younggee_s_project_info").Where("s_project_id = ?", s_project_id).Scan(&projectInfoSupplier)
- if err != nil {
- println("Get projectInfoSupplier error:", err)
- continue
- }
- // 根据供应商 ID 查询 `younggee_supplier` 表获取供应商详细信息
- var younggeeSupplier *youngee_talent_model.YounggeeSupplier
- err = g.DB().Model("younggee_supplier").WithAll().Where("supplier_id", projectInfoSupplier.SupplierID).Scan(&younggeeSupplier)
- if err != nil {
- println("Get younggeeSupplier error:", err)
- continue
- }
- // 将供应商信息和项目供应商信息赋值给项目详情
- projectDetail.YounggeeSupplier = younggeeSupplier
- projectDetail.ProjectInfoSupplier = &projectInfoSupplier
- }
- // 将项目详情添加到项目列表
- projectList = append(projectList, projectDetail)
- }
- // 构建 BrowseHistory 对象
- browseProjectHistory := BrowseProjectHistory{
- Date: date,
- ProjectList: projectList,
- }
- // 添加到结果列表中
- browseProjectHistories = append(browseProjectHistories, browseProjectHistory)
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: browseProjectHistories}
- }
- // 获取带货浏览记录
- func GetSelectionBrowseHistory(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- // 获取所有相关的 Redis Key
- redisKeyPattern := fmt.Sprintf("browseSelection:*:%s", tid)
- //返回该达人所有day的key
- keys, err := g.Redis().DoVar("KEYS", redisKeyPattern)
- if err != nil {
- fmt.Println("Get redis keys error", err)
- }
- // 初始化返回的数据
- var browseSelectionHistories []BrowseSelectionHistory
- // 遍历所有的日期 Key
- for _, key := range keys.Slice() {
- // 获取日期部分
- keyStr := gconv.String(key)
- date := strings.Split(keyStr, ":")[1]
- // 获取该日期下的所有 pid
- selctionIds, err := g.Redis().DoVar("SMEMBERS", keyStr)
- if err != nil {
- println("Get redis keys error", err)
- }
- // 使用 pids 查询数据库,获取商品列表
- var selectionList []youngee_talent_model.SelectionDetail
- err = g.DB().Model("younggee_selection_info").WithAll().Where("selection_id IN(?)", selctionIds.Strings()).Scan(&selectionList)
- if err != nil {
- println("Get redis selections error", err)
- }
- // 构建 BrowseHistory 对象
- browseSelectionHistory := BrowseSelectionHistory{
- Date: date,
- SelectionList: selectionList,
- }
- // 添加到结果列表中
- browseSelectionHistories = append(browseSelectionHistories, browseSelectionHistory)
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: browseSelectionHistories}
- }
|