From 4ae70786d3a5a3e592903177885c93f243956dad Mon Sep 17 00:00:00 2001 From: chy <2463300564@qq.com> Date: Thu, 10 Jul 2025 21:02:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=A5=96=E5=8A=B1=E9=A2=86?= =?UTF-8?q?=E5=8F=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/logic/reward/reward.go | 33 ++++++++++++++++++++++++++++++++- utility/ecode/common.go | 25 +++++++++++++------------ utility/gamelife/gamelife.go | 17 +++++++++++++++++ 3 files changed, 62 insertions(+), 13 deletions(-) diff --git a/internal/logic/reward/reward.go b/internal/logic/reward/reward.go index 92bc06e..571b7fc 100644 --- a/internal/logic/reward/reward.go +++ b/internal/logic/reward/reward.go @@ -605,9 +605,40 @@ func (s *sReward) GetLift(ctx context.Context, in *model.GetRewardIn) (out *mode glog.Info(ctx, "调用 tencent开始") activity, err2 := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{PopenId: in.PopenId, ServiceName: consts.GetGift, GiftParam: giftParam}) - if err2 != nil { + //if err2 != nil { + if err2 != nil && err2.Error() == "奖励领取超出限制,-1" { + // 修改奖励领取状态为5 + _, err2 = dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{Id: in.Id}).Data(do.UserTaskRewards{ + Status: consts.RewardFailedStatus, + }).Update() + + if err2 != nil { + return nil, ecode.Fail.Sub("修改用奖励领取状态失败") + } + + // 判断奖励是否领完,修改用户任务记录为 2 + exist, err2 := dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{UserTaskId: in.UserTaskId}).WhereIn(dao.UserTaskRewards.Columns().Status, []int{2, 3}).Exist() + if err2 != nil { + return nil, ecode.Fail.Sub("查询用户任务奖励失败") + } + + if !exist { + // 修改用户任务记录为 2 + _, err2 = dao.UserTasks.Ctx(ctx).Where(do.UserTasks{Id: in.UserTaskId}).Data(do.UserTasks{ + Status: 2, + }).Update() + + if err2 != nil { + return nil, ecode.Fail.Sub("修改用户任务状态失败") + } + } + + return nil, ecode.RewardExceedLimited + } else if err2 != nil { return nil, err2 } + //return nil, err2 + //} glog.Info(ctx, "调用 tencent结束") fmt.Print(activity) diff --git a/utility/ecode/common.go b/utility/ecode/common.go index d929b66..3982820 100644 --- a/utility/ecode/common.go +++ b/utility/ecode/common.go @@ -1,16 +1,17 @@ package ecode var ( - OK = New(0, "操作成功") - Sub = New(1, "") // 自定义错误信息 - Fail = New(2, "服务器内部错误") - InvalidOperation = New(3, "非法的操作请求") - Params = New(4, "请求参数错误") - Logout = New(5, "用户未登录") - Disabled = New(6, "账户已被禁用") - Denied = New(7, "没有权限执行该操作") - Expire = New(8, "token已过期") - Auth = New(1000, "账户名或密码不正确") - Password = New(1001, "密码不正确") - EmailExist = New(1002, "该邮箱已被注册") + OK = New(0, "操作成功") + Sub = New(1, "") // 自定义错误信息 + Fail = New(2, "服务器内部错误") + InvalidOperation = New(3, "非法的操作请求") + Params = New(4, "请求参数错误") + Logout = New(5, "用户未登录") + Disabled = New(6, "账户已被禁用") + Denied = New(7, "没有权限执行该操作") + Expire = New(8, "token已过期") + Auth = New(1000, "账户名或密码不正确") + Password = New(1001, "密码不正确") + EmailExist = New(1002, "该邮箱已被注册") + RewardExceedLimited = New(-1, "奖励领取数量超出限制") ) diff --git a/utility/gamelife/gamelife.go b/utility/gamelife/gamelife.go index 58f7f23..1a35783 100644 --- a/utility/gamelife/gamelife.go +++ b/utility/gamelife/gamelife.go @@ -3,6 +3,7 @@ package gamelife import ( "context" "encoding/json" + "errors" "fmt" "net/url" "server/internal/dao" @@ -423,6 +424,22 @@ func (s *gamelifeClient) RequestActivity(ctx context.Context, in *model.QQNetbar if err != nil || resp.IsError() { return nil, ecode.Fail.Sub("请求出现异常") } + + // 判断是否为 -1 的异常 + type RespData struct { + Ret int `json:"ret"` + ErrMsg string `json:"err_msg"` + ErrDesc string `json:"err_desc"` + } + var respData RespData + if err = json.Unmarshal(resp.Body(), &respData); err != nil { + return nil, ecode.Fail.Sub("解析请求结果失败") + } + if respData.Ret == -1 { + glog.Info(ctx, "奖励领取超出限制,-1") + return nil, errors.New("奖励领取超出限制,-1") + } + if result == nil { return nil, ecode.Fail.Sub("请求结果为空") }