修改任务列表查询
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user