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

This commit is contained in:
chy
2025-06-20 16:56:28 +08:00
parent db97319cf9
commit 2280762db9
12 changed files with 241 additions and 59 deletions

View File

@ -14,7 +14,7 @@ const (
GetTaskList = "GetTaskList"
QueryUserRoleList = "QueryUserRoleList"
GetGift = "GetGift"
GetUserGoodsList = "GetUserGoodsList"
QueryUserGoodsList = "QueryUserGoodsList"
ExchangeGoods = "ExchangeGoods"
QueryUserGoodsDetail = "QueryUserGoodsDetail"
)

View File

@ -2,10 +2,27 @@ package reward
import (
"context"
"crypto/md5"
"encoding/hex"
"fmt"
"github.com/gogf/gf/v2/frame/g"
"server/api/reward/v1"
"strings"
)
func (c *ControllerV1) Callback(ctx context.Context, req *v1.CallbackReq) (res *v1.CallbackRes, err error) {
fromCtx := g.RequestFromCtx(ctx)
appid := fromCtx.Header.Get("Custom-Data-Appid")
timestamp := fromCtx.Header.Get("Custom-Data-Timestamp")
nonce := fromCtx.Header.Get("Custom-Data-Nonce")
auth := fromCtx.Header.Get("Custom-Data-Auth")
return nil, err
data := fmt.Sprintf("%s%s%s%s%d%d%d%s%s%s#%s", req.Uid, req.OrderId, req.PrizeChannelId, req.PrizeId, req.PrizeType, req.PrizeSubType, req.Num, appid, timestamp, nonce, auth)
stateOri := md5.Sum([]byte(data))
state := hex.EncodeToString(stateOri[:])
myAuth := strings.ToUpper(state)
if myAuth != auth {
return &v1.CallbackRes{Errcode: 252151000, OrderId: req.OrderId, Datas: []v1.CallbackData{{PrizeCode: req.OrderId}}}, err
}
return &v1.CallbackRes{Errcode: 0, OrderId: req.OrderId, Datas: []v1.CallbackData{{PrizeCode: req.OrderId}}}, err
}

View File

@ -2,6 +2,7 @@ package reward
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"server/internal/model"
"server/internal/service"
@ -9,6 +10,10 @@ import (
)
func (c *ControllerV1) GetGoodsList(ctx context.Context, req *v1.GetGoodsListReq) (res *v1.GetGoodsListRes, err error) {
// 获取用户 id
ctxVar := g.RequestFromCtx(ctx).GetCtxVar("id").Int64()
out, err := service.Reward().GetGoodsList(ctx, &model.GetGoodsListIn{
Appfilter: req.Appfilter,
BigTime: req.BigTime,
@ -17,6 +22,8 @@ func (c *ControllerV1) GetGoodsList(ctx context.Context, req *v1.GetGoodsListReq
OrderType: req.OrderType,
OrderbyDesc: req.OrderbyDesc,
Pageidx: req.Pageidx,
UserId: ctxVar,
BindType: req.BindType,
})
if err != nil {

View File

@ -2,27 +2,24 @@ 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
//out, err := service.Reward().GetLift(ctx, &model.GetGoodsGetIn{
// 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,
//}, nil
return nil, err
}

View File

@ -9,6 +9,7 @@ import (
"server/internal/model/do"
"server/internal/service"
"server/utility/ecode"
"server/utility/gamelife"
)
type sReward struct{}
@ -321,17 +322,32 @@ func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model.
func (s *sReward) GetLift(ctx context.Context, in *model.RewardCallbackIn) (out *model.RewardCallbackOut, err error) {
// 遍历奖励类型列表
for _, v := range in.RewradTypeId {
if v > 0 {
// 发背包+兑换
//for _, v := range in.RewradTypeId {
// if v > 0 {
// // 发背包+兑换
//
// }
// if v > 0 {
// // 直接发背包
// }
//}
}
if v > 0 {
// 直接发背包
}
activity, err := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{ServiceName: consts.GetGift, GiftParam: model.GiftParam{
TaskId: in.TaskId,
AreaId: in.AreaId,
Gid: in.GameId,
RoleIdx: in.RoleIdx,
}})
_, ok := activity.(*model.GiftResponse)
if !ok {
return nil, ecode.Fail.Sub("数据类型转换失败")
}
// 存储数据库记录
//for _, item := range result.GiftItem {
// item.Result
//}
return nil, err
}
@ -339,9 +355,39 @@ func (s *sReward) GetLift(ctx context.Context, in *model.RewardCallbackIn) (out
// GetGoodsList 调用外部获取物品列表
func (s *sReward) GetGoodsList(ctx context.Context, in *model.GetGoodsListIn) (out *model.GetGoodsListOut, err error) {
// 调用 tencent
var user model.User
// 查询用户信息
//err = dao.Users.Ctx(ctx).Where(do.Users{Id: in.UserId}).Scan(&user)
err = dao.Users.Ctx(ctx).Where(do.Users{Id: 19}).Scan(&user)
if err != nil {
return nil, ecode.Fail.Sub("查询用户失败")
}
var pOpenId string
// 判断绑定类型 QQ还是WX
if in.BindType == 1 {
pOpenId = user.QQPopenId
} else {
pOpenId = user.WXPopenId
}
return nil, err
// 调用 tencent
result, err := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{ServiceName: consts.QueryUserGoodsList, BindType: in.BindType,
GoodsParam: model.GoodsParam{AppFilter: in.Appfilter, BigTime: in.BigTime, GoodsStatus: int(in.Goodsstatus), Num: int(in.Num), OrderByDesc: true, OrderType: in.OrderType, Pageidx: in.Pageidx, Gid: 26},
PopenId: pOpenId, NickName: user.Nickname})
if err != nil {
return nil, ecode.Fail.Sub("请求失败")
}
response, ok := result.(*model.GoodsResponse)
if !ok {
return nil, ecode.Fail.Sub("类型断言失败")
}
return &model.GetGoodsListOut{
List: response.Waters,
Pageidx: response.PageIdx,
Total: response.Total,
}, nil
}
// GetGoods 物品兑换

View File

@ -38,10 +38,6 @@ func (s *sTask) UserTaskRankingList(ctx context.Context, in *model.UserTaskRanki
start = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
// 当天结束时间
end = time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location())
fmt.Println("开始时间:", start)
fmt.Println("结束时间:", end)
} else if in.Type == 2 {
// 周
now := time.Now()

View File

@ -127,7 +127,7 @@ type QQNetbarActivityIn struct {
}
type GiftResponse struct {
GiftItem giftItem `json:"rst_list"`
GiftItem []giftItem `json:"rst_list"`
}
type gameRoleInfo struct {

View File

@ -93,11 +93,11 @@ type RewardListOut struct {
// RewardCallbackIn 任务奖励领取回调入参
type RewardCallbackIn struct {
AreaId int64
GameId int64
RewradTypeId []int64
AreaId int
GameId int
RewradTypeId []int
RoleIdx string
TaskId int64
TaskId string
}
type Water struct {
@ -116,7 +116,9 @@ type GetGoodsListIn struct {
Num int64 `json:"num"`
OrderType string `json:"orderType"`
OrderbyDesc int64 `json:"orderbDesc"`
Goodsstatus int64 `json:"Goodsstatus"`
Goodsstatus int64 `json:"goodsstatus"`
BindType int `json:"bindType"`
UserId int64 `json:"userId"`
}
type GetGoodsListOut struct {

View File

@ -24,6 +24,8 @@ type User struct {
LastLoginStoreId int `json:"lastLoginStoreId" orm:"last_login_store_id"` // 最后登录门店ID
LastLoginStoreName string `json:"lastLoginStoreName" orm:"last_login_store_name"` // 最后登录门店名称
FirstVisitAt *gtime.Time `json:"firstVisitAt" orm:"first_visit_at"` // 首次访问时间
QQPopenId string `json:"qqpopenid" orm:"qqpopenid"`
WXPopenId string `json:"wxpopenid" orm:"wxpopenid"`
}
// UserCreateIn 创建用户请求