From ed8b1b71c14098bdc5c32ab8c0d0a8971b487946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Tue, 10 Mar 2026 23:24:33 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(pet):=20=E5=AE=8C=E5=96=84=E5=AE=A0?= =?UTF-8?q?=E7=89=A9=E8=B4=AD=E4=B9=B0=E5=8A=9F=E8=83=BD=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=E5=92=8C=E6=95=B0=E6=8D=AE=E9=AA=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在控制器层添加错误返回值处理,确保购买宠物操作的错误能够正确传递 - 添加时间验证逻辑,防止使用过期或异常的数据进行购买操作 - 修正金币更新逻辑,确保玩家和系统金币扣除与增加的准确性 - 优化代码结构,增强代码可读性和维护性 ``` --- modules/player/controller/admin/pet.go | 2 +- modules/player/service/pet.go | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/player/controller/admin/pet.go b/modules/player/controller/admin/pet.go index d3a37d8ba..97f273d39 100644 --- a/modules/player/controller/admin/pet.go +++ b/modules/player/controller/admin/pet.go @@ -110,7 +110,7 @@ func (c *PetBagController) BuyPet(ctx context.Context, req *BuyPetReq) (res *coo res = &cool.BaseRes{} - service.NewPetService(uint32(admin.UserId)).BuyPet(req.Cid) + err = service.NewPetService(uint32(admin.UserId)).BuyPet(req.Cid) return diff --git a/modules/player/service/pet.go b/modules/player/service/pet.go index eb904d6a5..1b978f1ca 100644 --- a/modules/player/service/pet.go +++ b/modules/player/service/pet.go @@ -6,6 +6,8 @@ import ( "blazing/modules/player/model" "context" "fmt" + + "github.com/gogf/gf/v2/os/gtime" ) // 获取精灵信息 0是仓库,1是放生 @@ -65,14 +67,18 @@ func (s *PetService) BuyPet(pid uint32) error { if tt.SalePrice == 0 { return fmt.Errorf("未设置价格") } + if !tt.UpdateTime.AddDate(0, 0, 1).Before(gtime.Now()) { + return fmt.Errorf("数据异常") + } if service.NewBaseSysUserService().GetGold(uint(s.userid)) < int64(tt.SalePrice)*102 { return fmt.Errorf("余额不足") } - service.NewBaseSysUserService().UpdateGold(tt.PlayerID, int64(tt.SalePrice)*98) + service.NewBaseSysUserService().UpdateGold(s.userid, -int64(tt.SalePrice)*102) - s.PetAdd(&tt.Data) NewPetService(tt.PlayerID).Pet_del(tt.CatchTime) + service.NewBaseSysUserService().UpdateGold(tt.PlayerID, int64(tt.SalePrice)*98) + s.PetAdd(&tt.Data) return nil