From 06091ff42c30e987c45512895c0177541e3a463a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Sat, 28 Mar 2026 01:46:52 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(item=5Fbuy):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E9=80=BB=E8=BE=91=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E9=99=90=E5=88=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将变量名 is 改为 ok,提高代码可读性 - 移除未使用的变量 addSuccess - 重构购买成功逻辑,确保物品添加成功后才扣减金币 - 在 talk.go 中修改判断条件,使用 Limit 字段而非 Type 字段 - 在 user_talk.go 中添加 Limit 字段用于限制数量配置 ``` --- logic/controller/item_buy.go | 42 ++++++++++++++++--------------- modules/config/model/user_talk.go | 2 ++ modules/player/service/talk.go | 2 +- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/logic/controller/item_buy.go b/logic/controller/item_buy.go index 6074318fe..2226a3790 100644 --- a/logic/controller/item_buy.go +++ b/logic/controller/item_buy.go @@ -99,8 +99,8 @@ func (h Controller) BuyGoldItem(data *item.C2S_GOLD_BUY_PRODUCT, player *player. } config := service.NewTalkConfigService().GetCache(int(data.ProductID)) if config != nil { - _, is := player.Service.Talk.Cheak(0, int(data.ProductID)) - if !is { + _, ok := player.Service.Talk.Cheak(0, int(data.ProductID)) + if !ok { return nil, errorcode.ErrorCodes.ErrExceedStock } } @@ -115,7 +115,7 @@ func (h Controller) BuyGoldItem(data *item.C2S_GOLD_BUY_PRODUCT, player *player. // } var usegold uint64 - var addSuccess bool + switch data.Type { case 0: if pro.SeerdouPrice == 0 { @@ -139,28 +139,30 @@ func (h Controller) BuyGoldItem(data *item.C2S_GOLD_BUY_PRODUCT, player *player. } - addSuccess = player.ItemAdd(pro.ProductID, data.Count) - if addSuccess { + switch data.Type { + case 0: - switch data.Type { - case 0: + if player.ItemAdd(pro.ProductID, data.Count) { player.Info.Coins -= int64(usegold) - - case 1: - r := player.Service.Talk.Update(int(pro.ProductID), int(data.Count)) - if !r { - return nil, errorcode.ErrorCodes.ErrGoldBeanSingleLimit - } - player.User.UpdateGold(player.Info.UserID, -int64(usegold)) - //购买成功,执行记录 - } - player.SendPackCmd(1105, item.GoldOnlineRemainOutboundInfo{ - Coin: player.Info.Coins, - GoldNumber: uint32(player.User.GetGold(uint(player.Info.UserID))), - }) + case 1: + r := player.Service.Talk.Update(int(pro.ProductID), int(data.Count)) + if !r { + return nil, errorcode.ErrorCodes.ErrGoldBeanSingleLimit + } + + if player.ItemAdd(pro.ProductID, data.Count) { + player.User.UpdateGold(player.Info.UserID, -int64(usegold)) + } + + //购买成功,执行记录 + } + player.SendPackCmd(1105, item.GoldOnlineRemainOutboundInfo{ + Coin: player.Info.Coins, + GoldNumber: uint32(player.User.GetGold(uint(player.Info.UserID))), + }) return nil, -1 } diff --git a/modules/config/model/user_talk.go b/modules/config/model/user_talk.go index e249be288..9c19b35a2 100644 --- a/modules/config/model/user_talk.go +++ b/modules/config/model/user_talk.go @@ -15,6 +15,8 @@ type MineralCollectionConfig struct { // MapID 矿产所在地图ID MapID uint32 `gorm:"column:map_id;not null;index:idx_mineral_collection_config_map_id;comment:矿产所在地图ID" json:"map_id"` //uint32 `gorm:"not null;default:0;comment:'限购类型( 0-每日限购 1-每周限购 2-每月限购)'" json:"quota_type" description:"限购类型"` + Limit uint32 `gorm:"column:limit;default:0;comment:限制数量" json:"limit"` + Type uint32 `gorm:"column:type;not null;index:idx_mineral_collection_config_type;comment:类型" json:"type"` // DailyCollectCount 每日可采集次数 diff --git a/modules/player/service/talk.go b/modules/player/service/talk.go index 0e5a6b735..155c9ce27 100644 --- a/modules/player/service/talk.go +++ b/modules/player/service/talk.go @@ -46,7 +46,7 @@ func (s *TalkService) Cheak(mapid uint32, flag int) (int, bool) { if c == nil { return 0, false //没在地图 } - switch c.Type { + switch c.Limit { case 0: if !utils.IsToday(talks.LastResetTime) {