From af0b9547c504bc60ea29dc3d4c0e706bb1daafbc Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Thu, 25 Nov 2021 17:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=88=A0=20RechargeCommodity?= =?UTF-8?q?Config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/store/BuyGoodsNewLogic.java | 61 +++++++++++++++++-- .../newRechargeInfo/NewRechargeInfo.java | 21 ++++++- 2 files changed, 73 insertions(+), 9 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index 387221167..518d3733e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -496,7 +496,7 @@ public class BuyGoodsNewLogic { } }else{ if(bag.getType() == RechargeType.push.getType() && !bag.isOpen()){ - user.getPlayerInfoManager().getNewRechargeInfo().removePush((PushWelfareBag) bag); + user.getPlayerInfoManager().getNewRechargeInfo().removePush(bag.getModId()); return true; } if(bag.getType() == RechargeType.timeLimit.getType()){ @@ -586,7 +586,7 @@ public class BuyGoodsNewLogic { bag.setLastBuyTime(0); bag.setBuyTimes(0); if(bag.getType() == RechargeType.push.getType()){ - user.getPlayerInfoManager().getNewRechargeInfo().removePush((PushWelfareBag) bag); + user.getPlayerInfoManager().getNewRechargeInfo().removePush(bag.getModId()); } } @@ -640,26 +640,71 @@ public class BuyGoodsNewLogic { User user = UserManager.getUser(uid); boolean needChange = refreshWelfareState(user); NewRechargeInfo rechargeInfo = user.getPlayerInfoManager().getNewRechargeInfo(); + Set needRemoveIds = new HashSet<>(); for(AbstractWelfareBag bag : rechargeInfo.getPerpetualMap().values()){ if(bag.isOpen()){ - giftGoodsInfoList.add(buildGoodsInfo(bag)); + CommonProto.GiftGoodsInfo giftGoodsInfo = buildGoodsInfo(bag); + if (giftGoodsInfo == null) { + needRemoveIds.add(bag.getModId()); + continue; + } + giftGoodsInfoList.add(giftGoodsInfo); } } + if (!needRemoveIds.isEmpty()) { + for (Integer needRemoveId : needRemoveIds) { + rechargeInfo.removePerpetualMap(needRemoveId); + } + needRemoveIds.clear(); + } for(AbstractWelfareBag bag : rechargeInfo.getTimeLimitMap().values()){ if(bag.isOpen()){ - giftGoodsInfoList.add(buildGoodsInfo(bag)); + CommonProto.GiftGoodsInfo giftGoodsInfo = buildGoodsInfo(bag); + if (giftGoodsInfo == null) { + needRemoveIds.add(bag.getModId()); + continue; + } + giftGoodsInfoList.add(giftGoodsInfo); } } + if (!needRemoveIds.isEmpty()) { + for (Integer needRemoveId : needRemoveIds) { + rechargeInfo.removeTimeLimitMap(needRemoveId); + } + needRemoveIds.clear(); + } for(AbstractWelfareBag bag : rechargeInfo.getReceiveMap().values()){ if(bag.isOpen()){ - giftGoodsInfoList.add(buildGoodsInfo(bag)); + CommonProto.GiftGoodsInfo giftGoodsInfo = buildGoodsInfo(bag); + if (giftGoodsInfo == null) { + needRemoveIds.add(bag.getModId()); + continue; + } + giftGoodsInfoList.add(giftGoodsInfo); } } + if (!needRemoveIds.isEmpty()) { + for (Integer needRemoveId : needRemoveIds) { + rechargeInfo.removeReceiveMap(needRemoveId); + } + needRemoveIds.clear(); + } for(AbstractWelfareBag bag : rechargeInfo.getPushMap().values()){ if(bag.isOpen()){ - giftGoodsInfoList.add(buildGoodsInfo(bag)); + CommonProto.GiftGoodsInfo giftGoodsInfo = buildGoodsInfo(bag); + if (giftGoodsInfo == null) { + needRemoveIds.add(bag.getModId()); + continue; + } + giftGoodsInfoList.add(giftGoodsInfo); } } + if (!needRemoveIds.isEmpty()) { + for (Integer needRemoveId : needRemoveIds) { + rechargeInfo.removePush(needRemoveId); + } + needRemoveIds.clear(); + } giftGoodsInfoList.sort((o1, o2) -> { if(o1.getGoodsId() > o2.getGoodsId()){ return 1; @@ -770,6 +815,10 @@ public class BuyGoodsNewLogic { } public static CommonProto.GiftGoodsInfo buildGoodsInfo(AbstractWelfareBag bag){ + SRechargeCommodityNewConfig configById = SRechargeCommodityNewConfig.getConfigById(bag.getModId()); + if (configById == null) { + return null; + } CommonProto.GiftGoodsInfo.Builder builder = CommonProto.GiftGoodsInfo.newBuilder(); builder.setGoodsId(bag.getModId()); builder.setBuyTimes(bag.getBuyTimes()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java index b296d99e9..4940a3f4f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java @@ -204,9 +204,24 @@ public class NewRechargeInfo extends MongoBase { updateString("pushMap."+bag.getModId(),bag); } - public void removePush(PushWelfareBag bag){ - pushMap.remove(bag.getModId()); - removeString(getMongoKey() + ".pushMap."+bag.getModId()); + public void removePerpetualMap(int modId){ + perpetualMap.remove(modId); + removeString(getMongoKey() + ".perpetualMap."+modId); + } + + public void removeTimeLimitMap(int modId){ + timeLimitMap.remove(modId); + removeString(getMongoKey() + ".timeLimitMap."+modId); + } + + public void removeReceiveMap(int modId){ + receiveMap.remove(modId); + removeString(getMongoKey() + ".receiveMap."+modId); + } + + public void removePush(int modId){ + pushMap.remove(modId); + removeString(getMongoKey() + ".pushMap."+modId); } public int getMainLineLost() {