From 96163db7b54d9a8541cf77ba2c98d649a3321aed Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 21 Apr 2021 14:03:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A4=BC=E5=8C=85=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/store/BuyGoodsNewLogic.java | 67 ++++++++++--------- .../newRechargeInfo/NewRechargeInfo.java | 43 ++++++------ .../store/newRechargeInfo/RechargeType.java | 34 ++++++++-- .../AbstractRechargeHandler.java | 35 ++++++++++ .../rechargeHandler/PerpetualHandler.java | 32 +++++++++ .../rechargeHandler/PushHandler.java | 30 +++++++++ .../rechargeHandler/ReceiveHandler.java | 30 +++++++++ .../rechargeHandler/RechargeHandler.java | 20 ++++++ .../rechargeHandler/TimeLimitHandler.java | 30 +++++++++ 9 files changed, 263 insertions(+), 58 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/RechargeHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java 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 a16e5d6a3..7270ad2aa 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 @@ -32,6 +32,7 @@ import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.*; +import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.thrift.idl.Result; @@ -60,36 +61,29 @@ public class BuyGoodsNewLogic { /** * 登录刷新礼包 */ - public static boolean refreshWelfareState(User user){ + public static boolean refreshWelfareState(User user) throws Exception { boolean needChange = false; List pAddList = new ArrayList<>(); List garbageList = new ArrayList<>(); NewRechargeInfo info = user.getPlayerInfoManager().getNewRechargeInfo(); for(Map.Entry entry : SRechargeCommodityNewConfig.configMap.entrySet()){ - Map perpetualWelfareBagMap = info.getPerpetualMap(); - Map timeLimitWelfareBagMap = info.getTimeLimitMap(); - Map receiveWelfareBagMap = info.getReceiveMap(); - Map pushWelfareBagMap = info.getPushMap(); - if(perpetualWelfareBagMap.containsKey(entry.getKey())){ - if(refreshUnitWF(perpetualWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){ - needChange = true; - } - }else if(timeLimitWelfareBagMap.containsKey(entry.getKey())){ - if(refreshUnitWF(timeLimitWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){ - needChange = true; - } - }else if(receiveWelfareBagMap.containsKey(entry.getKey())){ - if(refreshUnitWF(receiveWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){ - needChange = true; - } - }else if(pushWelfareBagMap.containsKey(entry.getKey())){ - if(refreshUnitWF(pushWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){ - needChange = true; - } - }else if(info.getGarbage().contains(entry.getKey())){ + + if(info.getGarbage().contains(entry.getKey())){ continue; + } + + //获取处理类 + RechargeHandler rechargeHandler = getRechargeHandler(entry.getValue().getOtype()); + + //判断对应的Map是否已经有了信息 + if(rechargeHandler.rechargeIsInBag(user,entry.getKey())){ + boolean refreshStatus = rechargeHandler.refreshStatus(user,entry.getKey()); + if(!needChange) { + needChange = refreshStatus; + } }else{ - AbstractWelfareBag bag = initUnitWF(user,entry.getValue()); + //没有的话新初始化信息 + AbstractWelfareBag bag = rechargeHandler.initUnitWF(user, entry.getValue()); pAddList.add(bag); if(refreshUnitWF(bag,garbageList,user) && !needChange){ needChange = true; @@ -98,15 +92,19 @@ public class BuyGoodsNewLogic { } //添加新增礼包 for(AbstractWelfareBag bag : pAddList){ - if(bag.getType() == RechargeType.perpetual.getType()){ - info.addPerpetual((PerpetualWelfareBag) bag); - }else if(bag.getType() == RechargeType.timeLimit.getType()){ - info.addTimeLimit((TimeLimitWelfareBag) bag); - }else if(bag.getType() == RechargeType.receive.getType()){ - info.addReceive((ReceiveWelfareBag)bag); - }else if(bag.getType() == RechargeType.push.getType()){ - info.addPush((PushWelfareBag)bag); - } + int type = bag.getType(); + RechargeHandler rechargeHandler = getRechargeHandler(type); + + rechargeHandler.addNew(user,bag); +// if(bag.getType() == RechargeType.perpetual.getType()){ +// info.addPerpetual((PerpetualWelfareBag) bag); +// }else if(bag.getType() == RechargeType.timeLimit.getType()){ +// info.addTimeLimit((TimeLimitWelfareBag) bag); +// }else if(bag.getType() == RechargeType.receive.getType()){ +// info.addReceive((ReceiveWelfareBag)bag); +// }else if(bag.getType() == RechargeType.push.getType()){ +// info.addPush((PushWelfareBag)bag); +// } } if(garbageList.size()>0){ //添加新垃圾礼包 @@ -581,4 +579,9 @@ public class BuyGoodsNewLogic { } } } + + + public static RechargeHandler getRechargeHandler(int type){ + return RechargeType.getHandler(type); + } } 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 b5c24a2d4..f1e7bdc53 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 @@ -1,14 +1,17 @@ package com.ljsd.jieling.logic.store.newRechargeInfo; +import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PerpetualWelfareBag; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PushWelfareBag; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.TimeLimitWelfareBag; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; -public class NewRechargeInfo { +public class NewRechargeInfo extends MongoBase { private double rr;//累计充值 @@ -19,11 +22,11 @@ public class NewRechargeInfo { private long firstTime;//首冲时间 private int isDayFirst; - private Map perpetualMap;//永久礼包 - private Map timeLimitMap;//限时刷新礼包 - private Map receiveMap;//限时刷新礼包 - private Map pushMap;//推送礼包 - private List garbage;//废弃礼包 + private Map perpetualMap = new HashMap<>();//永久礼包 + private Map timeLimitMap = new HashMap<>();//限时刷新礼包 + private Map receiveMap = new HashMap<>();//限时刷新礼包 + private Map pushMap = new HashMap<>();//推送礼包 + private List garbage = new ArrayList<>();//废弃礼包 public double getRr() { return rr; @@ -31,6 +34,8 @@ public class NewRechargeInfo { public void setRr(double rr) { this.rr = rr; + updateString("rr",rr); + } public double getMonthRr() { @@ -39,6 +44,8 @@ public class NewRechargeInfo { public void setMonthRr(double monthRr) { this.monthRr = monthRr; + updateString("monthRr",monthRr); + } public double getsMonthRr() { @@ -47,6 +54,7 @@ public class NewRechargeInfo { public void setsMonthRr(double sMonthRr) { this.sMonthRr = sMonthRr; + updateString("sMonthRr",sMonthRr); } public boolean getIsFirst() { @@ -55,6 +63,7 @@ public class NewRechargeInfo { public void setIsFirst(boolean isFirst) { this.isFirst = isFirst; + updateString("isFirst",isFirst); } public long getFirstTime() { @@ -63,6 +72,7 @@ public class NewRechargeInfo { public void setFirstTime(long firstTime) { this.firstTime = firstTime; + updateString("firstTime",firstTime); } public int getIsDayFirst() { @@ -71,54 +81,42 @@ public class NewRechargeInfo { public void setIsDayFirst(int isDayFirst) { this.isDayFirst = isDayFirst; + updateString("isDayFirst",isDayFirst); } public Map getPerpetualMap() { return perpetualMap; } - public void setPerpetualMap(Map perpetualMap) { - this.perpetualMap = perpetualMap; - } public Map getTimeLimitMap() { return timeLimitMap; } - public void setTimeLimitMap(Map timeLimitMap) { - this.timeLimitMap = timeLimitMap; - } public Map getReceiveMap() { return receiveMap; } - public void setReceiveMap(Map receiveMap) { - this.receiveMap = receiveMap; - } public Map getPushMap() { return pushMap; } - public void setPushMap(Map pushMap) { - this.pushMap = pushMap; - } public List getGarbage() { return garbage; } - public void setGarbage(List garbage) { - this.garbage = garbage; - } public void addPerpetual(PerpetualWelfareBag bag){ perpetualMap.put(bag.getModId(),bag); + updateString("perpetualMap",perpetualMap); } public void addTimeLimit(TimeLimitWelfareBag bag){ timeLimitMap.put(bag.getModId(),bag); + updateString("timeLimitMap",timeLimitMap); } public void removeTimeLimit(TimeLimitWelfareBag bag){ @@ -127,13 +125,16 @@ public class NewRechargeInfo { public void addReceive(ReceiveWelfareBag bag){ receiveMap.put(bag.getModId(),bag); + updateString("receiveMap",receiveMap); } public void addPush(PushWelfareBag bag){ pushMap.put(bag.getModId(),bag); + updateString("pushMap",pushMap); } public void addGarbage(List list){ garbage.addAll(list); + updateString("garbage",garbage); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/RechargeType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/RechargeType.java index 04d9d35be..d3cb55156 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/RechargeType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/RechargeType.java @@ -1,19 +1,43 @@ package com.ljsd.jieling.logic.store.newRechargeInfo; +import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.*; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + public enum RechargeType { - perpetual(1), - timeLimit(2), - receive(3), - push(4), + perpetual(1,new PerpetualHandler()), + timeLimit(2,new TimeLimitHandler()), + receive(3,new ReceiveHandler()), + push(4,new PushHandler()), ; private int type; - RechargeType(int type){ + private RechargeHandler rechargeHandler; + + RechargeType(int type, RechargeHandler rechargeHandler){ this.type = type; + this.rechargeHandler = rechargeHandler; + } + private static Map rankMap; + + static { + rankMap = new HashMap<>(); + RechargeType[] values = RechargeType.values(); + Arrays.stream(values).forEach(n->rankMap.put(n.getType(),n)); + } public int getType() { return type; } + + public RechargeHandler getRechargeHandler() { + return rechargeHandler; + } + public static RechargeHandler getHandler(int type){ + return rankMap.get(type).getRechargeHandler(); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java new file mode 100644 index 000000000..c4330f8ba --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java @@ -0,0 +1,35 @@ +package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler; + +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; +import config.SRechargeCommodityNewConfig; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2021/4/20 + * @discribe + */ +public abstract class AbstractRechargeHandler implements RechargeHandler { + + @Override + public boolean refreshStatus(User user,int rechargeId){ + Map rechargeMap = getRechargeMap(user); + + return BuyGoodsNewLogic.refreshUnitWF(rechargeMap.get(rechargeId), user.getPlayerInfoManager().getNewRechargeInfo().getGarbage(), user); + } + + @Override + public abstract Map getRechargeMap(User user); + + @Override + public boolean rechargeIsInBag(User user, int rechargeId) { + return getRechargeMap(user).containsKey(rechargeId); + } + + + @Override + public abstract AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception; +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java new file mode 100644 index 000000000..fcb022a6b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java @@ -0,0 +1,32 @@ +package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler; + +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PerpetualWelfareBag; +import config.SRechargeCommodityNewConfig; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2021/4/20 + * @discribe + */ +public class PerpetualHandler extends AbstractRechargeHandler{ + + + @Override + public Map getRechargeMap(User user) { + return user.getPlayerInfoManager().getNewRechargeInfo().getPerpetualMap(); + } + + @Override + public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception { + return new PerpetualWelfareBag(user,config); + } + + @Override + public void addNew(User user, AbstractWelfareBag bag) { + user.getPlayerInfoManager().getNewRechargeInfo().addPerpetual((PerpetualWelfareBag) bag); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java new file mode 100644 index 000000000..6a694c496 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java @@ -0,0 +1,30 @@ +package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler; + +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PushWelfareBag; +import config.SRechargeCommodityNewConfig; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2021/4/20 + * @discribe + */ +public class PushHandler extends AbstractRechargeHandler { + @Override + public Map getRechargeMap(User user) { + return user.getPlayerInfoManager().getNewRechargeInfo().getPushMap(); + } + + @Override + public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) { + return new PushWelfareBag(config); + } + + @Override + public void addNew(User user, AbstractWelfareBag bag) { + user.getPlayerInfoManager().getNewRechargeInfo().addPush((PushWelfareBag) bag); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java new file mode 100644 index 000000000..e24d3e7e8 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java @@ -0,0 +1,30 @@ +package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler; + +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag; +import config.SRechargeCommodityNewConfig; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2021/4/20 + * @discribe + */ +public class ReceiveHandler extends AbstractRechargeHandler { + @Override + public Map getRechargeMap(User user) { + return user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap(); + } + + @Override + public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config)throws Exception { + return new ReceiveWelfareBag(user,config); + } + + @Override + public void addNew(User user, AbstractWelfareBag bag) { + user.getPlayerInfoManager().getNewRechargeInfo().addReceive((ReceiveWelfareBag) bag); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/RechargeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/RechargeHandler.java new file mode 100644 index 000000000..7a1e7b5c1 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/RechargeHandler.java @@ -0,0 +1,20 @@ +package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler; + +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; +import config.SRechargeCommodityNewConfig; + +import java.util.Map; + +public interface RechargeHandler { + + boolean refreshStatus(User user,int rechargeId); + + Map getRechargeMap(User user); + + boolean rechargeIsInBag(User user,int rechargeId); + + void addNew(User user,AbstractWelfareBag bag); + + AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception; +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java new file mode 100644 index 000000000..cc5c9a1f4 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java @@ -0,0 +1,30 @@ +package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler; + +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.TimeLimitWelfareBag; +import config.SRechargeCommodityNewConfig; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2021/4/20 + * @discribe + */ +public class TimeLimitHandler extends AbstractRechargeHandler{ + @Override + public Map getRechargeMap(User user) { + return user.getPlayerInfoManager().getNewRechargeInfo().getTimeLimitMap(); + } + + @Override + public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception { + return new TimeLimitWelfareBag(user,config); + } + + @Override + public void addNew(User user, AbstractWelfareBag bag) { + user.getPlayerInfoManager().getNewRechargeInfo().addTimeLimit((TimeLimitWelfareBag) bag); + } +}