feat(item_buy): 优化购买逻辑并添加库存限制功能 - 将变量名 is 改为 ok,提高代码可读性 - 移除未使用的变量 addSuccess - 重构购买成功逻辑,确保物品添加成功后才扣减金币 - 在 talk.go 中修改判断条件,使用 Limit 字段而非 Type 字段 - 在 user_talk.go 中添加 Limit 字段用于限制数量配置 ```
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user