修改领取奖励部分

This commit is contained in:
chy
2025-06-27 10:31:40 +08:00
parent 6a3a06574a
commit ae19e9917e
4 changed files with 50 additions and 10 deletions

View File

@ -213,6 +213,7 @@ type CallbackRes struct {
type GetLiftReq struct { type GetLiftReq struct {
g.Meta `path:"/reward/getLift" method:"post" tags:"Reward" summary:"(PC)奖励领取"` g.Meta `path:"/reward/getLift" method:"post" tags:"Reward" summary:"(PC)奖励领取"`
RewradType int `json:"rewardType" v:"required#奖励类型不能为空" dc:"奖励类型"` RewradType int `json:"rewardType" v:"required#奖励类型不能为空" dc:"奖励类型"`
RewradId int `json:"rewardId" v:"required#奖励id不能为空" dc:"奖励id"`
PopenId string `json:"popenid" v:"required#popenId不能为空" dc:"popenId不能为空"` PopenId string `json:"popenid" v:"required#popenId不能为空" dc:"popenId不能为空"`
Source int `json:"source" v:"required#来源不能为空" dc:"来源" d:"1:系统 2:门店"` Source int `json:"source" v:"required#来源不能为空" dc:"来源" d:"1:系统 2:门店"`
TaskId string `json:"taskId" v:"required#任务id不能为空" dc:"任务Id"` TaskId string `json:"taskId" v:"required#任务id不能为空" dc:"任务Id"`
@ -220,6 +221,7 @@ type GetLiftReq struct {
BindType int `json:"bindType" v:"required#绑定类型不能为空" dc:"绑定类型"` BindType int `json:"bindType" v:"required#绑定类型不能为空" dc:"绑定类型"`
AreaId int `json:"areaId" dc:"大区Id"` AreaId int `json:"areaId" dc:"大区Id"`
RoleIdx string `json:"roleIdx" dc:"角色索引"` RoleIdx string `json:"roleIdx" dc:"角色索引"`
UserTaskId int `json:"userTaskId" v:"required#用户任务记录id不能为空" dc:"用户任务记录"`
} }
type GetLiftRes struct { type GetLiftRes struct {

View File

@ -2,12 +2,15 @@ package reward
import ( import (
"context" "context"
"github.com/gogf/gf/v2/frame/g"
"server/api/reward/v1" "server/api/reward/v1"
"server/internal/model" "server/internal/model"
"server/internal/service" "server/internal/service"
) )
func (c *ControllerV1) GetLift(ctx context.Context, req *v1.GetLiftReq) (res *v1.GetLiftRes, err error) { func (c *ControllerV1) GetLift(ctx context.Context, req *v1.GetLiftReq) (res *v1.GetLiftRes, err error) {
userId := g.RequestFromCtx(ctx).Get("id")
out, err := service.Reward().GetLift(ctx, &model.GetRewardIn{ out, err := service.Reward().GetLift(ctx, &model.GetRewardIn{
GameId: req.GameId, GameId: req.GameId,
TaskId: req.TaskId, TaskId: req.TaskId,
@ -17,6 +20,9 @@ func (c *ControllerV1) GetLift(ctx context.Context, req *v1.GetLiftReq) (res *v1
AreaId: req.AreaId, AreaId: req.AreaId,
Source: req.Source, Source: req.Source,
BindType: req.BindType, BindType: req.BindType,
UserTaskId: req.UserTaskId,
UserId: userId.Int(),
RewardId: req.RewradId,
}) })
if err != nil { if err != nil {

View File

@ -396,27 +396,56 @@ func (s *sReward) GetLift(ctx context.Context, in *model.GetRewardIn) (out *mode
// 根据 result判断 // 根据 result判断
if item.Result == 1 { if item.Result == 1 {
// 奖励发放成功,修改状态,扣除数量 //// 奖励发放成功,修改状态,扣除数量
if _, err = dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{ExternalOrderId: item.Water.OrderId}).Update(consts.RewardSuccessStatus); err != nil {
return ecode.Fail.Sub("修改奖励领取记录状态异常") // 查询当前奖励是否为最后一个, 如果是则更新任务状态为2 完成
count, err := dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{UserTaskId: in.UserTaskId}).Where(do.UserTaskRewards{Status: 2}).Count()
if err != nil {
return ecode.Fail.Sub("查询用户任务奖励失败")
} }
value, err := dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{ExternalOrderId: item.Water.OrderId}).Value(dao.UserTaskRewards.Columns().RewardId) if count <= 1 {
// 修改任务记录状态2
_, err = dao.UserTasks.Ctx(ctx).Where(do.UserTasks{Id: in.UserTaskId}).Data(do.UserTasks{
Status: 2,
}).Update()
if err != nil {
return ecode.Fail.Sub("修改用户任务状态失败")
}
}
// 增加奖励已领取数量
_, err = dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: in.RewardId}).Increment(dao.Rewards.Columns().ReceivedNum, 1)
if err != nil { if err != nil {
return ecode.Fail.Sub("获取奖励领取记录异常") return ecode.Fail.Sub("获取奖励领取记录异常")
} }
if value.IsEmpty() {
return ecode.Fail.Sub("获取奖励领取记录异常") // 修改用户任务奖励记录状态
} _, err = dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{UserTaskId: in.UserTaskId, RewardId: in.RewardId}).Data(do.UserTaskRewards{
// 扣除数量 Status: consts.RewardSuccessStatus,
if _, err = dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: value.Int()}).One(); err != nil { }).Update()
return ecode.Fail.Sub("获取奖励记录异常")
if err != nil {
return ecode.Fail.Sub("修改用户任务奖励记录状态异常")
} }
return return
} else if item.Result == 2 || item.Result == 3 { } else if item.Result == 2 || item.Result == 3 {
// 发放背包成功,修改状态 // 发放背包成功,修改状态
_, err = dao.UserTaskRewards.Ctx(ctx).Data(do.UserTaskRewards{
Status: consts.RewardExchangeStatus,
}).Where(do.UserTaskRewards{
Id: in.UserTaskId,
RewardId: in.RewardId,
}).Update()
if err != nil {
return ecode.Fail.Sub("修改用户任务奖励记录状态异常")
}
} else if item.Result == 4 { } else if item.Result == 4 {
// 奖励领取失败,不做操作,直接返回 // 奖励领取失败,不做操作,直接返回
return ecode.Fail.Sub("领取奖励失败")
} }
} }

View File

@ -153,11 +153,14 @@ type GetRewardIn struct {
AreaId int AreaId int
GameId int GameId int
RewradTypeId int RewradTypeId int
RewardId int
RoleIdx string RoleIdx string
TaskId string TaskId string
PopenId string PopenId string
Source int Source int
BindType int BindType int
UserTaskId int
UserId int
} }
type GetRewardOut struct { type GetRewardOut struct {
List interface{} `json:"list"` List interface{} `json:"list"`