From b6c84d9a03eba08f015a7f72c5c17e2d4711be1c Mon Sep 17 00:00:00 2001 From: chy <2463300564@qq.com> Date: Thu, 19 Jun 2025 10:40:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=AA=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/task/v1/task.go | 12 +++--- .../task/task_v1_get_login_task_list.go | 4 +- .../task/task_v1_non_login_task_list.go | 10 ++--- internal/logic/task/task.go | 17 +++++--- internal/model/gamelife.go | 3 +- internal/model/task.go | 41 ++++++++++--------- internal/service/task.go | 2 +- utility/gamelife/gamelife.go | 10 ++++- 8 files changed, 60 insertions(+), 39 deletions(-) diff --git a/api/task/v1/task.go b/api/task/v1/task.go index 158224a..682bef5 100644 --- a/api/task/v1/task.go +++ b/api/task/v1/task.go @@ -30,21 +30,23 @@ type NonLoginTaskListReq struct { type NonLoginTaskListRes struct { //List interface{} `json:"list"` //Total int `json:"total"` - Data interface{} `json:"taskList"` + Data interface{} `json:"taskList"` + PageIdx string `json:"pageidx" dc:"分页索引"` } type GetLoginTaskListReq struct { g.Meta `path:"/task/getLoginTaskList" method:"get" tags:"Task" summary:"(PC)网吧已登录任务列表"` NetBarAccount string `json:"netBarAccount" v:"required#网关账号不能为空" dc:"网关账号"` - //Num int `json:"num" v:"required#不能为空" dc:""` - //Pageidx string `json:"pageidx" dc:"分页索引"` - Gid int `json:"gid" v:"required#游戏唯一id不能为空" dc:"游戏唯一id"` + Num int `json:"num" v:"required#不能为空" dc:""` + Pageidx string `json:"pageidx" dc:"分页索引"` + Gid int `json:"gid" v:"required#游戏唯一id不能为空" dc:"游戏唯一id"` //BrandId string `json:"brandId" dc:"品牌id(可选)"` PopenId string `json:"popenId" v:"required#popenId不能为空" dc:"用户详情接口返回的 wxPopenId 或者是 qqPopenId"` } type GetLoginTaskListRes struct { - Data interface{} `json:"data"` + Data interface{} `json:"data"` + PageIdx string `json:"pageidx" dc:"分页索引"` } type ListReq struct { diff --git a/internal/controller/task/task_v1_get_login_task_list.go b/internal/controller/task/task_v1_get_login_task_list.go index 06a5793..b081200 100644 --- a/internal/controller/task/task_v1_get_login_task_list.go +++ b/internal/controller/task/task_v1_get_login_task_list.go @@ -13,11 +13,13 @@ func (c *ControllerV1) GetLoginTaskList(ctx context.Context, req *v1.GetLoginTas Gid: req.Gid, NetBarAccount: req.NetBarAccount, PopenId: req.PopenId, + Num: req.Num, + Pageidx: req.Pageidx, }) if err != nil { return nil, err } - return &v1.GetLoginTaskListRes{Data: out.Data}, nil + return &v1.GetLoginTaskListRes{Data: out.Data, PageIdx: out.PageIdx}, nil } diff --git a/internal/controller/task/task_v1_non_login_task_list.go b/internal/controller/task/task_v1_non_login_task_list.go index 150e66f..ac42fd9 100644 --- a/internal/controller/task/task_v1_non_login_task_list.go +++ b/internal/controller/task/task_v1_non_login_task_list.go @@ -12,11 +12,9 @@ func (c *ControllerV1) NonLoginTaskList(ctx context.Context, req *v1.NonLoginTas out, err := service.Task().GetNonLoginTaskList(ctx, &model.GetTaskListIn{ NetBarAccount: req.NetBarAccount, - //Page: req.Page, - //Size: req.Size, - Num: req.Num, - Pageidx: req.Pageidx, - Gid: req.Gid, + Num: req.Num, + Pageidx: req.Pageidx, + Gid: req.Gid, //Source: req.Source, //BrandId: req.BrandId, }) @@ -25,5 +23,5 @@ func (c *ControllerV1) NonLoginTaskList(ctx context.Context, req *v1.NonLoginTas return nil, err } - return &v1.NonLoginTaskListRes{Data: out}, nil + return &v1.NonLoginTaskListRes{Data: out.Data, PageIdx: out.PageIdx}, nil } diff --git a/internal/logic/task/task.go b/internal/logic/task/task.go index 78aa07a..de45380 100644 --- a/internal/logic/task/task.go +++ b/internal/logic/task/task.go @@ -144,7 +144,7 @@ func (s *sTask) UserTaskRankingList(ctx context.Context, in *model.UserTaskRanki } // GetNonLoginTaskList 获取下发到指定网吧的任务列表(未登录) -func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn) (out []model.Task, err error) { +func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn) (out *model.GetTaskListOut, err error) { // 调用外部接口 activity, err := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{ServiceName: consts.GetNonLoginTaskList, TaskParam: model.TaskParam{Gid: in.Gid, NetBarAccount: in.NetBarAccount, Num: in.Num, Pageidx: in.Pageidx}}) @@ -157,6 +157,7 @@ func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn } // 剔除不需要的任务数据 var tasks []model.Task + idx := result.PageIdx for _, task := range result.TaskList { data := model.Task{ QqNetbarTaskId: task.TaskID, @@ -178,13 +179,16 @@ func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn tasks = append(tasks, data) } - return tasks, nil + return &model.GetTaskListOut{ + PageIdx: idx, + Data: tasks, + }, nil } func (s *sTask) GetLoginTaskList(ctx context.Context, in *model.GetTaskListIn) (out *model.GetTaskListOut, err error) { // 调用外部接口 - activity, err := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{ServiceName: consts.GetTaskList, TaskParam: model.TaskParam{Gid: in.Gid, NetBarAccount: in.NetBarAccount, Num: in.Num, Pageidx: in.Pageidx}}) + activity, err := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{ServiceName: consts.GetTaskList, PopenId: in.PopenId, TaskParam: model.TaskParam{Gid: in.Gid, NetBarAccount: in.NetBarAccount, Num: in.Num, Pageidx: in.Pageidx}}) if err != nil { return nil, err } @@ -192,6 +196,8 @@ func (s *sTask) GetLoginTaskList(ctx context.Context, in *model.GetTaskListIn) ( if !ok { return nil, ecode.Fail.Sub("数据类型转换失败") } + + pageIdx := result.PageIdx // 剔除不需要的任务数据 var tasks []model.Task for _, task := range result.TaskList { @@ -205,7 +211,7 @@ func (s *sTask) GetLoginTaskList(ctx context.Context, in *model.GetTaskListIn) ( StartTime: task.CycleStart, EndTime: task.CycleEnd, } - + data.UserTaskResult.Usertimes = task.UserTimes // 组装门店奖励数据 err := dao.Tasks.Ctx(ctx).InnerJoin(dao.StoreTaskRewards.Table(), fmt.Sprintf("%s.%s = %s.%s", dao.Tasks.Table(), dao.Tasks.Columns().Id, dao.StoreTaskRewards.Table(), dao.StoreTaskRewards.Columns().TaskId)). InnerJoin(dao.Rewards.Table(), fmt.Sprintf("%s.%s = %s.%s", dao.StoreTaskRewards.Table(), dao.StoreTaskRewards.Columns().RewardId, dao.Rewards.Table(), dao.Rewards.Columns().Id)). @@ -217,7 +223,8 @@ func (s *sTask) GetLoginTaskList(ctx context.Context, in *model.GetTaskListIn) ( } return &model.GetTaskListOut{ - Data: tasks, + Data: tasks, + PageIdx: pageIdx, }, err } diff --git a/internal/model/gamelife.go b/internal/model/gamelife.go index 106817d..3335da7 100644 --- a/internal/model/gamelife.go +++ b/internal/model/gamelife.go @@ -39,7 +39,7 @@ type GameTask struct { TargetName string `json:"target_name"` TargetTimes int `json:"target_times"` Status int `json:"status,omitempty"` - UserTimes int `json:"user_times,omitempty"` + UserTimes int64 `json:"user_times,omitempty"` GameTaskConfig GameTaskConfig `json:"game_task_config"` GameTaskConfigParse GameTaskConfigParse `json:"game_task_config_parse"` } @@ -61,4 +61,5 @@ type TaskParam struct { type QQNetbarActivityIn struct { ServiceName string // 服务名称 TaskParam TaskParam // 参数体 + PopenId string } diff --git a/internal/model/task.go b/internal/model/task.go index 0ebb7c4..b4fb511 100644 --- a/internal/model/task.go +++ b/internal/model/task.go @@ -6,24 +6,28 @@ import ( ) type Task struct { - Id int64 `json:"id" orm:"id" description:"任务唯一标识符"` // 任务唯一标识符 - CreatedAt *gtime.Time `json:"-" orm:"created_at" description:"创建时间"` // 创建时间 - UpdatedAt *gtime.Time `json:"-" orm:"updated_at" description:"更新时间"` // 更新时间 - DeletedAt *gtime.Time `json:"-" orm:"deleted_at" description:"软删除时间戳"` // 软删除时间戳 - GameId int64 `json:"gameId" orm:"game_id" description:"游戏唯一id"` // 游戏唯一id - StoreId int64 `json:"storeId" orm:"store_id" description:"门店 id"` // 门店 id - Status int `json:"status" orm:"status" description:"1:启用 2:禁用"` // 1:启用 2:禁用 - QqNetbarTaskId string `json:"qqNetbarTaskId" orm:"qq_netbar_task_id" description:"QQ网吧任务ID"` // QQ网吧任务ID - QqNetbarTaskRules string `json:"qqNetbarTaskRules" orm:"qq_netbar_task_rules" description:"任务规则"` // 任务规则 - QqNetbarTaskMemo string `json:"qqNetbarTaskMemo" orm:"qq_netbar_task_memo" description:"任务描述"` // 任务描述 - QqNetbarTaskName string `json:"qqNetbarTaskName" orm:"qq_netbar_task_name" description:"QQ网吧任务名称"` // QQ网吧任务名称 - QqNetbarReward string `json:"qqNetbarReward" orm:"qq_netbar_reward" description:"qq 网吧奖励名称"` // qq 网吧奖励名称 - QqNetbarTargetTime int `json:"qqNetbarTargetTime" orm:"qq_netbar_target_time" description:"qq 网吧任务指标"` // qq 网吧任务指标 - StartTime int64 `json:"startTime" orm:"start_time" description:"任务开始时间"` // 任务开始时间 - EndTime int64 `json:"endTime" orm:"end_time" description:"任务结束时间"` // 任务结束时间 - NetbarRewards []Reward `json:"netbarRewards" orm:"-"` + Id int64 `json:"-" orm:"id" description:"任务唯一标识符"` // 任务唯一标识符 + CreatedAt *gtime.Time `json:"-" orm:"created_at" description:"创建时间"` // 创建时间 + UpdatedAt *gtime.Time `json:"-" orm:"updated_at" description:"更新时间"` // 更新时间 + DeletedAt *gtime.Time `json:"-" orm:"deleted_at" description:"软删除时间戳"` // 软删除时间戳 + GameId int64 `json:"-" orm:"game_id" description:"游戏唯一id"` // 游戏唯一id + StoreId int64 `json:"-" orm:"store_id" description:"门店 id"` // 门店 id + Status int `json:"-" orm:"status" description:"1:启用 2:禁用"` // 1:启用 2:禁用 + QqNetbarTaskId string `json:"qqNetbarTaskId" orm:"qq_netbar_task_id" description:"QQ网吧任务ID"` // QQ网吧任务ID + QqNetbarTaskRules string `json:"qqNetbarTaskRules" orm:"qq_netbar_task_rules" description:"任务规则"` // 任务规则 + QqNetbarTaskMemo string `json:"qqNetbarTaskMemo" orm:"qq_netbar_task_memo" description:"任务描述"` // 任务描述 + QqNetbarTaskName string `json:"qqNetbarTaskName" orm:"qq_netbar_task_name" description:"QQ网吧任务名称"` // QQ网吧任务名称 + QqNetbarReward string `json:"qqNetbarReward" orm:"qq_netbar_reward" description:"qq 网吧奖励名称"` // qq 网吧奖励名称 + QqNetbarTargetTime int `json:"qqNetbarTargetTime" orm:"qq_netbar_target_time" description:"qq 网吧任务指标"` // qq 网吧任务指标 + StartTime int64 `json:"startTime" orm:"start_time" description:"任务开始时间"` // 任务开始时间 + EndTime int64 `json:"endTime" orm:"end_time" description:"任务结束时间"` // 任务结束时间 + NetbarRewards []Reward `json:"netbarRewards" orm:"-"` + UserTaskResult UserTaskResult `json:"userTaskResult,omitempty"` } +type UserTaskResult struct { + Usertimes int64 `json:"usertimes,omitempty"` +} type GetTaskListIn struct { NetBarAccount string `json:"netbar_account"` //网关账号 //Page int `json:"page"` // 分页索引 @@ -60,9 +64,8 @@ type GetTenCentLoginTaskListIn struct { } type GetTaskListOut struct { - // List interface{} `json:"list"` - // Total int `json:"total"` - Data interface{} `json:"data"` + PageIdx string `json:"pageidx"` + Data interface{} `json:"taskList"` } // MyData 定义一个与 JSON 结构匹配的结构体 diff --git a/internal/service/task.go b/internal/service/task.go index d9b9144..ca395c1 100644 --- a/internal/service/task.go +++ b/internal/service/task.go @@ -14,7 +14,7 @@ type ( ITask interface { UserTaskRankingList(ctx context.Context, in *model.UserTaskRankingIn) (out *model.UserTaskRankingOut, err error) // GetNonLoginTaskList 获取下发到指定网吧的任务列表(未登录) - GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn) (out []model.Task, err error) + GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn) (out *model.GetTaskListOut, err error) GetLoginTaskList(ctx context.Context, in *model.GetTaskListIn) (out *model.GetTaskListOut, err error) GetTaskList(ctx context.Context, in *model.TaskListIn) (out *model.TaskListOut, err error) GetSelectorList(ctx context.Context, in *model.SelectorIn) (out *[]model.SelectorOut, err error) diff --git a/utility/gamelife/gamelife.go b/utility/gamelife/gamelife.go index a3235fb..bb16635 100644 --- a/utility/gamelife/gamelife.go +++ b/utility/gamelife/gamelife.go @@ -332,11 +332,19 @@ func (s *gamelifeClient) RequestActivity(ctx context.Context, in *model.QQNetbar case consts.GetTaskList: result := model.GameTaskResponse{} in.TaskParam.BrandId = s.BrandId + get, err := g.Redis().Get(ctx, fmt.Sprintf(consts.GameLifeUserKey, in.PopenId)) + if err != nil { + return nil, ecode.Fail.Sub("从缓存中获取用户信息失败") + } + var gamelifeCache model.UserGamelifeCache + if err = json.Unmarshal(get.Bytes(), &gamelifeCache); err != nil { + return nil, ecode.Fail.Sub("解析用户信息失败") + } resp, err := client.R(). SetContext(ctx). SetBody(in.TaskParam). SetResult(&result). - Post(s.taskUrlMap[s.Mode] + consts.GetTaskList) + Post(fmt.Sprintf("%s%s?%s", s.taskUrlMap[s.Mode], consts.GetTaskList, gamelifeCache.Params)) if err != nil { return nil, ecode.Fail.Sub("请求出现异常") }