新增游戏人生领取奖励相关接口

This commit is contained in:
chy
2025-06-19 21:19:04 +08:00
parent 31d2d056b4
commit db97319cf9
10 changed files with 261 additions and 7 deletions

View File

@ -16,4 +16,8 @@ type IRewardV1 interface {
Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error)
Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, 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) 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)
} }

View File

@ -57,7 +57,73 @@ type DeleteRes struct {
type CallbackReq struct { type CallbackReq struct {
g.Meta `path:"/reward/callback" method:"post" tags:"Reward" summary:"(tencent)回调"` g.Meta `path:"/reward/callback" method:"post" tags:"Reward" summary:"(tencent)回调"`
UserId int64 `json:"userId" v:"required#用户ID不能为空" dc:"用户ID"` 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 { 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:"流水信息"`
} }

View File

@ -2,13 +2,10 @@ package reward
import ( import (
"context" "context"
"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/errors/gerror"
"server/api/reward/v1" "server/api/reward/v1"
) )
func (c *ControllerV1) Callback(ctx context.Context, req *v1.CallbackReq) (res *v1.CallbackRes, err error) { func (c *ControllerV1) Callback(ctx context.Context, req *v1.CallbackReq) (res *v1.CallbackRes, err error) {
return nil, gerror.NewCode(gcode.CodeNotImplemented)
return nil, err
} }

View File

@ -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)
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -317,3 +317,41 @@ func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model.
Total: total, Total: total,
}, nil }, 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
}

View File

@ -90,3 +90,47 @@ type RewardListOut struct {
List []Reward List []Reward
Total int 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:"用户领取物品流水记录"`
}

View File

@ -20,6 +20,13 @@ type (
Delete(ctx context.Context, in *model.RewardDeleteIn) (out *model.RewardDeleteOut, err error) Delete(ctx context.Context, in *model.RewardDeleteIn) (out *model.RewardDeleteOut, err error)
// List 奖励列表 // List 奖励列表
List(ctx context.Context, in *model.RewardListIn) (out *model.RewardListOut, err error) 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)
} }
) )