diff --git a/api/task/task.go b/api/task/task.go index 61b625b..76ea5c5 100644 --- a/api/task/task.go +++ b/api/task/task.go @@ -12,4 +12,6 @@ import ( type ITaskV1 interface { Ranking(ctx context.Context, req *v1.RankingReq) (res *v1.RankingRes, err error) + NonLoginTaskList(ctx context.Context, req *v1.NonLoginTaskListReq) (res *v1.NonLoginTaskListRes, err error) + GetLoginTaskList(ctx context.Context, req *v1.GetLoginTaskListReq) (res *v1.GetLoginTaskListRes, err error) } diff --git a/api/task/v1/task.go b/api/task/v1/task.go index ee04d45..042ca22 100644 --- a/api/task/v1/task.go +++ b/api/task/v1/task.go @@ -18,3 +18,33 @@ type RankingRes struct { CompletedNum int `json:"completedNum"` RankingNum int `json:"rankingNum"` } + +type NonLoginTaskListReq struct { + g.Meta `path:"/task/getNonLoginTaskList" method:"get" tags:"Task" summary:"网吧未登录任务列表"` + NetBarAccount string `json:"netBarAccount" v:"required#网关账号不能为空" dc:"网关账号"` + Page int `json:"page" v:"required#分页索引不能为空" dc:"分页索引"` + Size int `json:"size" v:"required#分页大小不能为空" dc:"分页大小"` + Gid int `json:"gid" v:"required#游戏唯一id不能为空" dc:"游戏唯一id"` + Source string `json:"source" v:"required#不能为空" dc:""` + BrandId string `json:"brandId" dc:"品牌id(可选)"` +} + +type NonLoginTaskListRes struct { + //List interface{} `json:"list"` + //Total int `json:"total"` + Data interface{} `json:"data"` +} + +type GetLoginTaskListReq struct { + g.Meta `path:"/task/getLoginTaskList" method:"get" tags:"Task" summary:"网吧未登录任务列表"` + NetBarAccount string `json:"netBarAccount" v:"required#网关账号不能为空" dc:"网关账号"` + Page int `json:"page" v:"required#分页索引不能为空" dc:"分页索引"` + Size int `json:"size" v:"required#分页大小不能为空" dc:"分页大小"` + Gid int `json:"gid" v:"required#游戏唯一id不能为空" dc:"游戏唯一id"` + Source string `json:"source" v:"required#不能为空" dc:""` + BrandId string `json:"brandId" dc:"品牌id(可选)"` +} + +type GetLoginTaskListRes struct { + Data interface{} `json:"data"` +} diff --git a/internal/consts/tencent.go b/internal/consts/tencent.go new file mode 100644 index 0000000..cca9a38 --- /dev/null +++ b/internal/consts/tencent.go @@ -0,0 +1,6 @@ +package consts + +const ( + TestAddr = "https://api-test.cafe.qq.com/netbar.cafe.open_api.open_api/" + ProAddr = "https://api.cafe.qq.com/netbar.cafe.open_api.open_api/" +) diff --git a/internal/controller/task/task_v1_get_login_task_list.go b/internal/controller/task/task_v1_get_login_task_list.go new file mode 100644 index 0000000..626bc22 --- /dev/null +++ b/internal/controller/task/task_v1_get_login_task_list.go @@ -0,0 +1,26 @@ +package task + +import ( + "context" + "server/internal/model" + "server/internal/service" + + "server/api/task/v1" +) + +func (c *ControllerV1) GetLoginTaskList(ctx context.Context, req *v1.GetLoginTaskListReq) (res *v1.GetLoginTaskListRes, err error) { + out, err := service.Task().GetLoginTaskList(ctx, &model.GetLoginTaskListIn{ + NetBarAccount: req.NetBarAccount, + Page: req.Page, + Size: req.Size, + Gid: req.Gid, + Source: req.Source, + BrandId: req.BrandId, + }) + + if err != nil { + return nil, err + } + + return &v1.GetLoginTaskListRes{Data: out.Data}, 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 new file mode 100644 index 0000000..fcd71a3 --- /dev/null +++ b/internal/controller/task/task_v1_non_login_task_list.go @@ -0,0 +1,27 @@ +package task + +import ( + "context" + "server/internal/model" + "server/internal/service" + + "server/api/task/v1" +) + +func (c *ControllerV1) NonLoginTaskList(ctx context.Context, req *v1.NonLoginTaskListReq) (res *v1.NonLoginTaskListRes, err error) { + + out, err := service.Task().GetNonLoginTaskList(ctx, &model.GetNonLoginTaskListIn{ + NetBarAccount: req.NetBarAccount, + Page: req.Page, + Size: req.Size, + Gid: req.Gid, + Source: req.Source, + BrandId: req.BrandId, + }) + + if err != nil { + return nil, err + } + + return &v1.NonLoginTaskListRes{Data: out.Data}, nil +} diff --git a/internal/logic/task/task.go b/internal/logic/task/task.go index 5e40ecc..6d4e184 100644 --- a/internal/logic/task/task.go +++ b/internal/logic/task/task.go @@ -7,6 +7,7 @@ import ( "server/internal/model" "server/internal/service" "server/utility/ecode" + "server/utility/tencent" "sort" "strconv" "strings" @@ -132,3 +133,36 @@ func (s *sTask) UserTaskRankingList(ctx context.Context, in *model.UserTaskRanki RankingNum: rankingNum, }, nil } + +// GetNonLoginTaskList 获取下发到指定网吧的任务列表(未登录) +func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetNonLoginTaskListIn) (out *model.GetNonLoginTaskListOut, err error) { + + // TODO 调用外部接口 + // 调用外部接口 + data, err := tencent.GetNonLoginTaskList(ctx, in) + if err != nil { + return nil, ecode.Fail.Sub("调用接口异常") + } + + // TODO 任务列表数据处理 + + return &model.GetNonLoginTaskListOut{ + Data: data, + }, err +} + +func (s *sTask) GetLoginTaskList(ctx context.Context, in *model.GetLoginTaskListIn) (out *model.GetLoginTaskListOut, err error) { + + // TODO 调用外部接口 + // 调用外部接口 + data, err := tencent.GetLoginTaskList(ctx, in) + if err != nil { + return nil, ecode.Fail.Sub("调用接口异常") + } + + // TODO 任务列表数据处理 + + return &model.GetLoginTaskListOut{ + Data: data, + }, err +} diff --git a/internal/model/task.go b/internal/model/task.go new file mode 100644 index 0000000..1780460 --- /dev/null +++ b/internal/model/task.go @@ -0,0 +1,31 @@ +package model + +type GetNonLoginTaskListIn struct { + NetBarAccount string `json:"netBarAccount"` //网关账号 + Page int `json:"page"` // 分页索引 + Size int `json:"size"` // 分页大小 + Gid int `json:"gid"` // 游戏唯一id + Source string `json:"source"` // 不能为空 + BrandId string `json:"brandId"` // 品牌id(可选) +} + +type GetNonLoginTaskListOut struct { + // List interface{} `json:"list"` + // Total int `json:"total"` + Data interface{} `json:"data"` +} + +type GetLoginTaskListIn struct { + NetBarAccount string `json:"netBarAccount"` //网关账号 + Page int `json:"page"` // 分页索引 + Size int `json:"size"` // 分页大小 + Gid int `json:"gid"` // 游戏唯一id + Source string `json:"source"` // 不能为空 + BrandId string `json:"brandId"` // 品牌id(可选) +} + +type GetLoginTaskListOut struct { + // List interface{} `json:"list"` + // Total int `json:"total"` + Data interface{} `json:"data"` +} diff --git a/internal/service/task.go b/internal/service/task.go index bed5518..7e654c1 100644 --- a/internal/service/task.go +++ b/internal/service/task.go @@ -13,6 +13,9 @@ import ( type ( ITask interface { UserTaskRankingList(ctx context.Context, in *model.UserTaskRankingIn) (out *model.UserTaskRankingOut, err error) + // GetNonLoginTaskList 获取下发到指定网吧的任务列表(未登录) + GetNonLoginTaskList(ctx context.Context, in *model.GetNonLoginTaskListIn) (out *model.GetNonLoginTaskListOut, err error) + GetLoginTaskList(ctx context.Context, in *model.GetLoginTaskListIn) (out *model.GetLoginTaskListOut, err error) } ) diff --git a/utility/myCasbin/casbin.go b/utility/myCasbin/casbin.go index 1360227..0b01fb2 100644 --- a/utility/myCasbin/casbin.go +++ b/utility/myCasbin/casbin.go @@ -42,6 +42,7 @@ func init() { { // 任务 enforcer.AddPolicy("guest", "/x/task/ranking", "GET", "获取排行榜") + enforcer.AddPolicy("guest", "/x/task/getNonLoginTaskList", "GET", "未登录获取任务列表") // 游戏列表 enforcer.AddPolicy("guest", "/x/game", "GET", "获取游戏列表") @@ -64,6 +65,7 @@ func init() { enforcer.AddPolicy("user", "/x/feedback/*", "PUT", "反馈信息处理") //enforcer.AddPolicy("user", "/x/feedback/*", "DELETE", "删除反馈信息")* enforcer.AddPolicy("user", "/x/feedback/*", "GET", "查询反馈详情") + } // 门店 { @@ -74,6 +76,9 @@ func init() { enforcer.AddPolicy("store", "/x/rewardType", "POST", "添加奖励类型") enforcer.AddPolicy("store", "/x/rewardType", "PUT", "更新奖励类型") enforcer.AddPolicy("store", "/x/rewardType/*", "DELETE", "删除奖励类型") + + // 任务 + enforcer.AddPolicy("user", "/x/task/getNonLoginTaskList", "GET", "获取任务列表(已登录)") } // 商户 { diff --git a/utility/tencent/tencent.go b/utility/tencent/tencent.go new file mode 100644 index 0000000..0167f81 --- /dev/null +++ b/utility/tencent/tencent.go @@ -0,0 +1,75 @@ +package tencent + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "server/internal/consts" + "server/internal/model" + "server/utility/ecode" +) + +// GetNonLoginTaskList 获取下发到指定网吧的任务列表(未登录) +func GetNonLoginTaskList(ctx context.Context, in *model.GetNonLoginTaskListIn) (data interface{}, err error) { + + client := &http.Client{} + // 请求参数 + jsonStr, err := json.Marshal(in) + if err != nil { + return nil, ecode.Fail.Sub("参数序列化失败") + } + + req, err := http.NewRequest("POST", consts.TestAddr+"GetNonloginTaskList", bytes.NewBuffer(jsonStr)) + if err != nil { + return nil, ecode.Fail.Sub("创建请求失败") + } + req.Header.Set("Content-Type", "application/json") + //req.Header.Set("Authorization", "Bearer 你的Token") + + resp, err := client.Do(req) + if err != nil { + return nil, ecode.Fail.Sub("请求失败") + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) // 推荐用法 + if err != nil { + return nil, ecode.Fail.Sub("读取响应失败") + } + fmt.Println("响应内容:", string(body)) + return nil, err +} + +// GetLoginTaskList 获取下发到指定网吧的任务列表(已登录) +func GetLoginTaskList(ctx context.Context, in *model.GetLoginTaskListIn) (data interface{}, err error) { + + client := &http.Client{} + // 请求参数 + jsonStr, err := json.Marshal(in) + if err != nil { + return nil, ecode.Fail.Sub("参数序列化失败") + } + + req, err := http.NewRequest("POST", consts.TestAddr+"GetTaskList", bytes.NewBuffer(jsonStr)) + if err != nil { + return nil, ecode.Fail.Sub("创建请求失败") + } + req.Header.Set("Content-Type", "application/json") + //req.Header.Set("Authorization", "Bearer 你的Token") + + resp, err := client.Do(req) + if err != nil { + return nil, ecode.Fail.Sub("请求失败") + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) // 推荐用法 + if err != nil { + return nil, ecode.Fail.Sub("读取响应失败") + } + fmt.Println("响应内容:", string(body)) + return nil, err +}