修改任务列表查询

This commit is contained in:
chy
2025-06-18 21:34:53 +08:00
parent 87d19b5fe2
commit 3c18686bf9
26 changed files with 316 additions and 344 deletions

View File

@ -2,15 +2,15 @@ package task
import (
"context"
"encoding/json"
"fmt"
"server/internal/consts"
"server/internal/dao"
"server/internal/model"
"server/internal/model/do"
"server/internal/service"
"server/utility/ecode"
"server/utility/gamelife"
"server/utility/snowid"
"server/utility/tencent"
"sort"
"strconv"
"strings"
@ -147,85 +147,50 @@ func (s *sTask) UserTaskRankingList(ctx context.Context, in *model.UserTaskRanki
func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetNonLoginTaskListIn) (out *model.GetNonLoginTaskListOut, err error) {
// 调用外部接口
data, err := tencent.GetNonLoginTaskList(ctx, in)
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}})
if err != nil {
return nil, err
}
var store *model.Store
// 获取网吧账号 id用作存储task
err = dao.Stores.Ctx(ctx).Where(dao.Stores.Columns().NetbarAccount, in.NetBarAccount).Scan(&store)
if err != nil {
return nil, ecode.Fail.Sub("查找网吧失败")
}
if store == nil {
return nil, ecode.Fail.Sub("当前网吧不存在")
result, ok := activity.(*model.GameTaskResponse)
if !ok {
return nil, ecode.Fail.Sub("数据类型转换失败")
}
// 剔除不需要的任务数据
var tasks []model.Task
for _, task := range result.TaskList {
data := model.Task{
QqNetbarTaskId: task.TaskID,
QqNetbarTaskName: task.Title,
QqNetbarTaskMemo: task.TaskDesc,
QqNetbarTaskRules: task.RuleDesc,
QqNetbarReward: task.TargetName,
QqNetbarTargetTime: task.TargetTimes,
StartTime: task.CycleStart,
EndTime: task.CycleEnd,
}
// 任务列表数据处理
if jsonData, ok := data.(map[string]interface{}); ok {
// 现在可以访问 jsonData 中的字段
list := jsonData["task_list"]
// 将 interface{} 转换为结构体
var result []model.MyData
jsonBytes, err := json.Marshal(list)
// 组装门店奖励数据
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)).
Where(dao.Tasks.Columns().QqNetbarTaskId, task.TaskID).Fields(fmt.Sprintf("%s.*", dao.Rewards.Table())).Scan(&data.NetbarRewards)
if err != nil {
return nil, ecode.Fail.Sub("JSON序列化失败")
}
err = json.Unmarshal(jsonBytes, &result)
if err != nil {
return nil, ecode.Fail.Sub("JSON反序列化失败")
}
for _, v := range result {
exist, err := dao.Tasks.Ctx(ctx).Where(dao.Tasks.Columns().QqNetbarTaskId, v.TaskId).Exist()
if err != nil {
return nil, ecode.Fail.Sub("查询该任务失败")
}
str := ""
for i, vv := range v.PrizeList {
str += vv.PrizeName
if i+1 != len(v.PrizeList) {
str += ","
}
}
// 数据库是否存在,无则添加
if !exist {
_, err := dao.Tasks.Ctx(ctx).Insert(do.Tasks{
QqNetbarTaskId: v.TaskId,
QqNetbarTaskMemo: v.QQNetBarTaskMemo,
QqNetbarTaskName: v.QQNetBarTaskName,
QqNetbarTaskRules: v.QQNetBarTaskRules,
GameId: in.Gid,
StoreId: store.Id,
QqNetbarReward: str,
})
if err != nil {
return nil, ecode.Fail.Sub("添加任务失败")
}
}
return nil, err
}
tasks = append(tasks, data)
}
return &model.GetNonLoginTaskListOut{
Data: data,
Data: tasks,
}, err
}
func (s *sTask) GetLoginTaskList(ctx context.Context, in *model.GetLoginTaskListIn) (out *model.GetLoginTaskListOut, err error) {
// 调用外部接口
data, err := tencent.GetLoginTaskList(ctx, in)
if err != nil {
return nil, err
}
// 任务列表数据处理
return &model.GetLoginTaskListOut{
Data: data,
Data: nil,
}, err
}