diff --git a/api/reward/reward.go b/api/reward/reward.go index f05a17a..57a55a4 100644 --- a/api/reward/reward.go +++ b/api/reward/reward.go @@ -16,4 +16,8 @@ type IRewardV1 interface { Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, err error) Callback(ctx context.Context, req *v1.CallbackReq) (res *v1.CallbackRes, err error) + GetLift(ctx context.Context, req *v1.GetLiftReq) (res *v1.GetLiftRes, err error) + GetGoodsList(ctx context.Context, req *v1.GetGoodsListReq) (res *v1.GetGoodsListRes, err error) + GetGoods(ctx context.Context, req *v1.GetGoodsReq) (res *v1.GetGoodsRes, err error) + GetGoodsDetails(ctx context.Context, req *v1.GetGoodsDetailsReq) (res *v1.GetGoodsDetailsRes, err error) } diff --git a/api/reward/v1/reward.go b/api/reward/v1/reward.go index ad76b08..b8a8fe2 100644 --- a/api/reward/v1/reward.go +++ b/api/reward/v1/reward.go @@ -56,8 +56,74 @@ type DeleteRes struct { } type CallbackReq struct { - g.Meta `path:"/reward/callback" method:"post" tags:"Reward" summary:"(tencent)回调"` - UserId int64 `json:"userId" v:"required#用户ID不能为空" dc:"用户ID"` + g.Meta `path:"/reward/callback" method:"post" tags:"Reward" summary:"(tencent)回调"` + TaskId int64 `json:"taskId" v:"required#任务id不能为空" dc:"任务Id"` + AreaId int64 `json:"areaId" dc:"大区Id"` + GameId int64 `json:"gid" v:"required#游戏id不能为空" dc:"游戏Id"` + RoleIdx string `json:"roleIdx" dc:"角色索引"` + RewradType []int64 `json:"rewardType" v:"required#奖励类型不能为空" dc:"奖励类型"` } + type CallbackRes struct { + List interface{} `json:"list" dc:"物品列表"` + Result int64 `json:"result" dc:"1-奖励发放成功,2-奖励兑换失败(礼包发放背包环节成功,需要重新引导领奖)3-针对只需要发背包,然后引导用户到人生应用背包领奖的奖励类型,发奖成功了,4-water错误(一般是orderid),不做兑换操作"` + Water *Water `json:"water" dc:"礼包列表"` +} + +type GetLiftReq struct { + g.Meta `path:"/reward/getLift" method:"post" tags:"Reward" summary:"(tencent)回调"` + TaskId int64 `json:"taskId" v:"required#任务id不能为空" dc:"任务Id"` + AreaId int64 `json:"areaId" dc:"大区Id"` + GameId int64 `json:"gid" v:"required#游戏id不能为空" dc:"游戏Id"` + RoleIdx string `json:"roleIdx" dc:"角色索引"` + RewradType []int64 `json:"rewardType" v:"required#奖励类型不能为空" dc:"奖励类型"` +} + +type GetLiftRes struct { + List interface{} `json:"list" dc:"物品列表"` + Result int64 `json:"result" dc:"1-奖励发放成功,2-奖励兑换失败(礼包发放背包环节成功,需要重新引导领奖)3-针对只需要发背包,然后引导用户到人生应用背包领奖的奖励类型,发奖成功了,4-water错误(一般是orderid),不做兑换操作"` + Water *Water `json:"water" dc:"礼包列表"` +} + +type Water struct { +} + +type GetGoodsListReq struct { + g.Meta `path:"/reward/goods" method:"get" tags:"Reward" summary:"(tencent)获取物品列表"` + Appfilter string `json:"appfilter" dc:"按照gid过滤游戏"` + BigTime int64 `json:"bigTime" v:"required#大时间不能为空" dc:"大时间:如果要控制时间范围,大的时间传这里"` + Pageidx string `json:"pageidx" dc:"分页索引"` + Num int64 `json:"num" v:"required#数量不能为空" dc:"数量"` + OrderType string `json:"orderType" dc:"winningtime:根据获取时间排序 overduetime:根据过期时间排序"` + OrderbyDesc int64 `json:"orderbDesc" dc:"1:降序 2:升序"` + Goodsstatus int64 `json:"Goodsstatus" dc:"查询的物品状态:0:查所有 2是已发放(成功和失败),4是未发放且未过期,6是未发放且已过期"` +} + +type GetGoodsListRes struct { + List interface{} `json:"list" dc:"物品列表"` + Pageidx string `json:"pageidx" dc:"分页索引"` + Total int64 `json:"total" dc:"总数"` +} + +type GetGoodsReq struct { + g.Meta `path:"/reward/getGoods" method:"post" tags:"Reward" summary:"物品兑换"` + Water Water `json:"water" v:"required#物品流水,从背包列表获取的water透传回来(water类型参考GetGift接口的water结构)" dc:"礼包列表"` + AreaId int64 `json:"areaId" dc:"大区Id"` + GameId int64 `json:"gid" v:"required#游戏id不能为空" dc:"游戏Id"` + RoleIdx string `json:"roleIdx" dc:"角色索引"` +} +type GetGoodsRes struct { + Water Water `json:"water" dc:"用户领取物品流水记录"` +} + +type GetGoodsDetailsReq struct { + g.Meta `path:"/reward/goodsDetails" method:"post" tags:"Reward" summary:"物品详情"` + Winningtime int64 `json:"winningtime" dc:"用户领取礼包时间"` + Orderid string `json:"orderid" v:"required#流水订单id不能为空" dc:"用户领取流水订单id"` + IsActinfo int64 `json:"IsActinfo" dc:"是否需要活动相关信息 0:默认需要 1:不需要"` + IsDocument int64 `json:"isDocument" dc:"是否需要文案信息,使用限制信息、代金券图片、使用方式 0:默认需要 1:不需要"` + IsDetail int64 `json:"isDetail" dc:"是否需要物品详情 0:默认需要 1:不需要"` +} +type GetGoodsDetailsRes struct { + Water *Water `json:"water" dc:"流水信息"` } diff --git a/internal/controller/reward/reward_v1_callback.go b/internal/controller/reward/reward_v1_callback.go index 027001d..b1be1d6 100644 --- a/internal/controller/reward/reward_v1_callback.go +++ b/internal/controller/reward/reward_v1_callback.go @@ -2,13 +2,10 @@ package reward import ( "context" - - "github.com/gogf/gf/v2/errors/gcode" - "github.com/gogf/gf/v2/errors/gerror" - "server/api/reward/v1" ) func (c *ControllerV1) Callback(ctx context.Context, req *v1.CallbackReq) (res *v1.CallbackRes, err error) { - return nil, gerror.NewCode(gcode.CodeNotImplemented) + + return nil, err } diff --git a/internal/controller/reward/reward_v1_get_goods.go b/internal/controller/reward/reward_v1_get_goods.go new file mode 100644 index 0000000..94a8215 --- /dev/null +++ b/internal/controller/reward/reward_v1_get_goods.go @@ -0,0 +1,14 @@ +package reward + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "server/api/reward/v1" +) + +func (c *ControllerV1) GetGoods(ctx context.Context, req *v1.GetGoodsReq) (res *v1.GetGoodsRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/internal/controller/reward/reward_v1_get_goods_details.go b/internal/controller/reward/reward_v1_get_goods_details.go new file mode 100644 index 0000000..08b4e05 --- /dev/null +++ b/internal/controller/reward/reward_v1_get_goods_details.go @@ -0,0 +1,26 @@ +package reward + +import ( + "context" + "server/internal/model" + "server/internal/service" + + "server/api/reward/v1" +) + +func (c *ControllerV1) GetGoodsDetails(ctx context.Context, req *v1.GetGoodsDetailsReq) (res *v1.GetGoodsDetailsRes, err error) { + + _, err = service.Reward().GetGoodsDetails(ctx, &model.QueryUserGoodsDetailParam{ + WinningTime: req.Winningtime, + OrderId: req.Orderid, + IsActInfo: req.IsActinfo, + IsDetail: req.IsDetail, + IsDocument: req.IsDocument, + }) + + if err != nil { + return nil, err + } + + return &v1.GetGoodsDetailsRes{Water: nil}, nil +} diff --git a/internal/controller/reward/reward_v1_get_goods_list.go b/internal/controller/reward/reward_v1_get_goods_list.go new file mode 100644 index 0000000..73c1086 --- /dev/null +++ b/internal/controller/reward/reward_v1_get_goods_list.go @@ -0,0 +1,30 @@ +package reward + +import ( + "context" + "server/internal/model" + "server/internal/service" + + "server/api/reward/v1" +) + +func (c *ControllerV1) GetGoodsList(ctx context.Context, req *v1.GetGoodsListReq) (res *v1.GetGoodsListRes, err error) { + out, err := service.Reward().GetGoodsList(ctx, &model.GetGoodsListIn{ + Appfilter: req.Appfilter, + BigTime: req.BigTime, + Goodsstatus: req.Goodsstatus, + Num: req.Num, + OrderType: req.OrderType, + OrderbyDesc: req.OrderbyDesc, + Pageidx: req.Pageidx, + }) + + if err != nil { + return nil, err + } + return &v1.GetGoodsListRes{ + List: out.List, + Pageidx: out.Pageidx, + Total: out.Total, + }, nil +} diff --git a/internal/controller/reward/reward_v1_get_lift.go b/internal/controller/reward/reward_v1_get_lift.go new file mode 100644 index 0000000..f47e16b --- /dev/null +++ b/internal/controller/reward/reward_v1_get_lift.go @@ -0,0 +1,28 @@ +package reward + +import ( + "context" + "server/internal/model" + "server/internal/service" + + "server/api/reward/v1" +) + +func (c *ControllerV1) GetLift(ctx context.Context, req *v1.GetLiftReq) (res *v1.GetLiftRes, err error) { + out, err := service.Reward().GetLift(ctx, &model.RewardCallbackIn{ + AreaId: req.AreaId, + GameId: req.GameId, + RewradTypeId: req.RewradType, + RoleIdx: req.RoleIdx, + TaskId: req.TaskId, + }) + + if err != nil { + return nil, err + } + return &v1.GetLiftRes{ + List: out.List, + Result: out.Result, + Water: nil, + }, nil +} diff --git a/internal/logic/reward/reward.go b/internal/logic/reward/reward.go index 544e24a..fb90461 100644 --- a/internal/logic/reward/reward.go +++ b/internal/logic/reward/reward.go @@ -317,3 +317,41 @@ func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model. Total: total, }, nil } + +func (s *sReward) GetLift(ctx context.Context, in *model.RewardCallbackIn) (out *model.RewardCallbackOut, err error) { + + // 遍历奖励类型列表 + for _, v := range in.RewradTypeId { + if v > 0 { + // 发背包+兑换 + + } + if v > 0 { + // 直接发背包 + } + } + + // 存储数据库记录 + + return nil, err +} + +// GetGoodsList 调用外部获取物品列表 +func (s *sReward) GetGoodsList(ctx context.Context, in *model.GetGoodsListIn) (out *model.GetGoodsListOut, err error) { + + // 调用 tencent + + return nil, err +} + +// GetGoods 物品兑换 +func (s *sReward) GetGoods(ctx context.Context, in *model.GetGoodsGetIn) (out *model.GoodsGetOut, err error) { + return nil, err +} + +// GetGoodsDetails 物品详情 +func (s *sReward) GetGoodsDetails(ctx context.Context, in *model.QueryUserGoodsDetailParam) (out *model.QueryUserGoodsDetailResponse, err error) { + + // + return nil, err +} diff --git a/internal/model/reward.go b/internal/model/reward.go index 819340e..20f4c55 100644 --- a/internal/model/reward.go +++ b/internal/model/reward.go @@ -90,3 +90,47 @@ type RewardListOut struct { List []Reward Total int } + +// RewardCallbackIn 任务奖励领取回调入参 +type RewardCallbackIn struct { + AreaId int64 + GameId int64 + RewradTypeId []int64 + RoleIdx string + TaskId int64 +} + +type Water struct { +} + +type RewardCallbackOut struct { + List interface{} `json:"list"` + Result int64 `json:"result"` + Water Water `json:"water"` +} + +type GetGoodsListIn struct { + Appfilter string `json:"appfilter"` + BigTime int64 `json:"bigTime"` + Pageidx string `json:"pageidx"` + Num int64 `json:"num"` + OrderType string `json:"orderType"` + OrderbyDesc int64 `json:"orderbDesc"` + Goodsstatus int64 `json:"Goodsstatus"` +} + +type GetGoodsListOut struct { + List interface{} `json:"list"` + Pageidx string `json:"pageidx"` + Total int64 `json:"total"` +} + +type GetGoodsGetIn struct { + Water Water `json:"water" dc:"物品流水,从背包列表获取的water透传回来(water类型参考GetGift接口的water结构)"` + AreaId int64 `json:"areaId" dc:"大区Id"` + GameId int64 `json:"gid" dc:"游戏Id"` + RoleIdx string `json:"roleIdx" dc:"角色索引"` +} +type GoodsGetOut struct { + Water Water `json:"water" dc:"用户领取物品流水记录"` +} diff --git a/internal/service/reward.go b/internal/service/reward.go index f7f9ad5..f558623 100644 --- a/internal/service/reward.go +++ b/internal/service/reward.go @@ -20,6 +20,13 @@ type ( Delete(ctx context.Context, in *model.RewardDeleteIn) (out *model.RewardDeleteOut, err error) // List 奖励列表 List(ctx context.Context, in *model.RewardListIn) (out *model.RewardListOut, err error) + GetLift(ctx context.Context, in *model.RewardCallbackIn) (out *model.RewardCallbackOut, err error) + // GetGoodsList 调用外部获取物品列表 + GetGoodsList(ctx context.Context, in *model.GetGoodsListIn) (out *model.GetGoodsListOut, err error) + // GetGoods 物品兑换 + GetGoods(ctx context.Context, in *model.GetGoodsGetIn) (out *model.GoodsGetOut, err error) + // GetGoodsDetails 物品详情 + GetGoodsDetails(ctx context.Context, in *model.QueryUserGoodsDetailParam) (out *model.QueryUserGoodsDetailResponse, err error) } )