diff --git a/conf/hotfix.json b/conf/hotfix.json index c51f1ab33..c470a9602 100644 --- a/conf/hotfix.json +++ b/conf/hotfix.json @@ -1,6 +1,7 @@ { - "version":"7", + "version":"8", "classes":[ - {"name":"HeroLogic.class","fullName":"com.ljsd.jieling.logic.hero.HeroLogic"} + {"name":"HeroLogic.class","fullName":"com.ljsd.jieling.logic.hero.HeroLogic"}, + {"name":"StoreLogic.class","fullName":"com.ljsd.jieling.logic.store.StoreLogic"} ] } 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 20b089dad..d1ecd6a35 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 @@ -656,9 +656,9 @@ public class StoreLogic { if(relatedtoVIP == 1){ if(limit == 6){ int goodsNum = sStoreConfig.getGoods()[0][1]*itemNum; - check = PlayerLogic.getInstance().check(user,limit, goodsNum); + check = PlayerLogic.getInstance().check(user, limit, goodsNum); }else{ - check = PlayerLogic.getInstance().check(user,limit, itemNum); + check = PlayerLogic.getInstance().check(user, limit, itemNum); } }else{ check = limit > buyTimes; @@ -700,12 +700,23 @@ public class StoreLogic { StoreInfo storeInfo = storeInfoMap.get(storeId); Map itemNumMap = storeInfo.getItemNumMap(); int buyTimes = itemNumMap.get(itemId); - // 校验道具小孩 + // 校验道具消耗 int[][] cost = getCost(buyTimes ,itemNum, sStoreConfig.getCost(), sStoreConfig.getPremiumType(),sStoreConfig.getIsDiscount(),sStoreConfig.getDiscountDegree()); boolean result = ItemUtil.itemCost(user, cost, BIReason.BUY_GOODS_CONSUME, storeId); if (!result){ throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } + // 特权处理 + int relatedtoVIP = sStoreConfig.getRelatedtoVIP(); + int vipId = sStoreConfig.getLimit(); + if(relatedtoVIP == 1 && vipId != 0){ + int num = itemNum; + if(vipId == 6){ + num = sStoreConfig.getGoods()[0][1]*itemNum; + } + PlayerLogic.getInstance().checkAndUpdate(user, vipId, num); + } + itemNumMap.put(itemId,buyTimes + itemNum); storeInfo.setItemNumMap(itemNumMap); KtEventUtils.onKtEvent(user, ParamEventBean.UserStoreEvent,storeId,itemId,cost[0][0],itemNum,cost[0][1]); @@ -948,6 +959,7 @@ public class StoreLogic { Map itemNumMap = storeInfo.getItemNumMap(); ArrayList list = new ArrayList<>(); for (Map.Entry entry : itemMap.entrySet()) { + // 道具消耗 Integer id = entry.getKey(); Integer num = entry.getValue(); int buyTimes = itemNumMap.get(id); @@ -955,6 +967,17 @@ public class StoreLogic { int[][] cost = getCost(buyTimes ,num, sStoreConfig.getCost(), sStoreConfig.getPremiumType(),sStoreConfig.getIsDiscount(),sStoreConfig.getDiscountDegree()); list.add(cost); itemNumMap.put(id,buyTimes + num); + + // 特权处理 + int relatedtoVIP = sStoreConfig.getRelatedtoVIP(); + int vipId = sStoreConfig.getLimit(); + if(relatedtoVIP == 1 && vipId != 0){ + int vipNum = num; + if(vipId == 6){ + vipNum = sStoreConfig.getGoods()[0][1]*num; + } + PlayerLogic.getInstance().checkAndUpdate(user, vipId, vipNum); + } } // 消耗并存储 ItemUtil.itemCost(user, list, BIReason.BUY_GOODS_CONSUME, 0);