新增本地获取任务列表,对接任务列表加入存储数据库功能
This commit is contained in:
@ -2,9 +2,11 @@ package task
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"server/internal/dao"
|
||||
"server/internal/model"
|
||||
"server/internal/model/do"
|
||||
"server/internal/service"
|
||||
"server/utility/ecode"
|
||||
"server/utility/tencent"
|
||||
@ -144,7 +146,54 @@ func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetNonLoginTa
|
||||
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("当前网吧不存在")
|
||||
}
|
||||
|
||||
// TODO 任务列表数据处理
|
||||
if jsonData, ok := data.(map[string]interface{}); ok {
|
||||
// 现在可以访问 jsonData 中的字段
|
||||
list := jsonData["task_list"]
|
||||
|
||||
// 将 interface{} 转换为结构体
|
||||
var result []model.MyData
|
||||
jsonBytes, err := json.Marshal(list)
|
||||
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("查询该任务失败")
|
||||
}
|
||||
|
||||
// 数据库是否存在,无则添加
|
||||
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,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("添加任务失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return &model.GetNonLoginTaskListOut{
|
||||
Data: data,
|
||||
@ -161,8 +210,24 @@ func (s *sTask) GetLoginTaskList(ctx context.Context, in *model.GetLoginTaskList
|
||||
}
|
||||
|
||||
// TODO 任务列表数据处理
|
||||
|
||||
return &model.GetLoginTaskListOut{
|
||||
Data: data,
|
||||
}, err
|
||||
}
|
||||
|
||||
func (s *sTask) GetTaskList(ctx context.Context, in *model.TaskListIn) (out *model.TaskListOut, err error) {
|
||||
|
||||
var data []model.Tasks
|
||||
var total int
|
||||
m := dao.Tasks.Ctx(ctx)
|
||||
//err = m.Page(in.Page, in.Size).Where(do.Tasks{GameId: in.Gid, StoreId: in.StoreId}).LeftJoin(dao.StoreTaskRewards.Table(), fmt.Sprintf("`%s`.`id` = `%s`.`task_id`", dao.Tasks.Table(), dao.StoreTaskRewards.Table())).ScanAndCount(&data, &total, false)
|
||||
err = m.Page(in.Page, in.Size).Where(do.Tasks{GameId: in.Gid, StoreId: in.StoreId}).WithAll().ScanAndCount(&data, &total, false)
|
||||
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("任务列表获取失败")
|
||||
}
|
||||
return &model.TaskListOut{
|
||||
List: data,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user