From 3b616bd845a8ed2485988e7034e4a02d78c00806 Mon Sep 17 00:00:00 2001 From: "DESKTOP-C3M45P4\\dengdan" Date: Tue, 15 Aug 2023 21:05:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=95=86=E5=BA=97=E5=88=B7?= =?UTF-8?q?=E7=89=A9=E5=93=81=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/store/StoreLogic.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index d1ecd6a35..e99e29415 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -551,6 +551,10 @@ public class StoreLogic { int storeId = proto.getStoreId(); int itemId = proto.getItemId(); int itemNum = proto.getItemNum(); + //暂时设定200000上限,后期策划控制兑换次数,防止传入int最大值,导致消耗相加成负数 + if(itemNum >= 200000){ + throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE); + } boolean update = checkBuyGoodsAndUpdate(user, storeId, itemId, itemNum); if (!update){ throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE); @@ -661,7 +665,18 @@ public class StoreLogic { check = PlayerLogic.getInstance().check(user, limit, itemNum); } }else{ - check = limit > buyTimes; + //判断是否还有购买次数 + if(limit > buyTimes){ + //判断购买物品数量是否超出可购数量 + int canBuyTimes = limit - buyTimes; + if(itemNum > canBuyTimes) { + check = false; + }else{ + check = true; + } + }else{ + check = false; + } } if(!check){ LOGGER.error("购买商店商品校验,超过限购次数,uid:{},store:{},itemid:{},num:{}",user.getId(),storeId,itemId,itemNum);