From 143c7a52301756be6f1c55ff88b0a47b4a61d2ef Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 10 Dec 2021 14:24:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9B=E5=8B=9F=E7=A7=98=E5=AE=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/GlobalDataManaager.java | 6 +- .../jieling/logic/activity/ActivityLogic.java | 35 ++-- .../jieling/logic/activity/ActivityType.java | 3 +- .../logic/activity/ActivityTypeEnum.java | 3 +- .../activity/SummonTreasureActivity.java | 163 ++++++++++++++++++ .../event/SummonTreasureActivityEvent.java | 17 ++ .../activity/event/SummonTreasureEvent.java | 37 ++++ .../ActivityStateChangeHandler.java | 30 ++++ .../eventhandler/SummonTreasureHandler.java | 27 +++ .../ljsd/jieling/logic/dao/PlayerManager.java | 12 ++ .../jieling/logic/store/BuyGoodsNewLogic.java | 20 +++ .../bean/AbstractWelfareBag.java | 4 + .../bean/ReceiveWelfareBag.java | 5 + .../java/com/ljsd/jieling/util/ItemUtil.java | 1 + .../src/main/java/config/SSummonTreasure.java | 72 ++++++++ 15 files changed, 412 insertions(+), 23 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SummonTreasureActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureActivityEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SummonTreasureHandler.java create mode 100644 tablemanager/src/main/java/config/SSummonTreasure.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 04ba87d09..9e9ec5c68 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -16,10 +16,7 @@ import com.ljsd.jieling.logic.activity.UserLevelEventHandler; import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.SuperBoxEvent; -import com.ljsd.jieling.logic.activity.eventhandler.ActivityStateChangeHandler; -import com.ljsd.jieling.logic.activity.eventhandler.BuyGoodsDirectHandler; -import com.ljsd.jieling.logic.activity.eventhandler.GuildForceChangeEventHandler; -import com.ljsd.jieling.logic.activity.eventhandler.ShanHeSheJiTuEventHandler; +import com.ljsd.jieling.logic.activity.eventhandler.*; import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic; import com.ljsd.jieling.logic.arena.ArenaLogic; import com.ljsd.jieling.logic.championship.ChampionshipLogic; @@ -297,6 +294,7 @@ public class GlobalDataManaager implements IManager { new ActivityStateChangeHandler(); new GuildForceChangeEventHandler(); new ShanHeSheJiTuEventHandler(); + new SummonTreasureHandler(); ChampionshipLogic.minuteCheck(true); GuildFightLogic.minuteCheckForCarFight(); } catch (Exception e) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 7e9988389..fa8bf7a4d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -660,28 +660,29 @@ public class ActivityLogic implements IEventHandler{ if(openRules!=null&&openRules.length>0){ int openRuleType = openRules[0]; int openRulleValue = openRules[1]; - if(openRuleType == 1){ + if (openRuleType == 1) { int virtureId = SMainLevelConfig.config.get(openRulleValue).getVirtureId(); int fightId = user.getMainLevelManager().getFightId(); - SMainLevelConfig mineMainLevelConfig = SMainLevelConfig.fightPreMap.get(fightId); - if(user.getMainLevelManager().getState() == 2 ){ + SMainLevelConfig mineMainLevelConfig = SMainLevelConfig.fightPreMap.get(fightId); + if (user.getMainLevelManager().getState() == 2) { mineMainLevelConfig = SMainLevelConfig.config.get(user.getMainLevelManager().getFightId()); } - int myVirtureId =0; - if(mineMainLevelConfig != null){ - myVirtureId =mineMainLevelConfig.getVirtureId(); + int myVirtureId = 0; + if (mineMainLevelConfig != null) { + myVirtureId = mineMainLevelConfig.getVirtureId(); } - if(virtureId > myVirtureId){ + if (virtureId > myVirtureId) { state = ActivityType.UNOPEN_STATE; } - }else if(openRuleType == 2){ - if(user.getPlayerInfoManager().getLevel() activityMissionMap = user.getActivityManager().getActivityMissionMap(); - for(Integer activityId:activityMissionMap.keySet()){ - if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()==ActivityType.BLESSACTIVITY){ - return activityId; - } - } +// Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); +// for(Integer activityId:activityMissionMap.keySet()){ +// if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()==ActivityType.BLESSACTIVITY){ +// return activityId; +// } +// } return 0; } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index 29acdc727..f01421b17 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -26,7 +26,8 @@ public interface ActivityType { int RechargeTotal = 5; //首充 // int RechargeTotal = 5; //累计充值 int GrowthFund = 6; //成长基金 - int BLESSACTIVITY = 7;//云梦祈福 +// int BLESSACTIVITY = 7;//云梦祈福(跟策划对过,活动已删除) + int SUMMON_TREASURE = 7;//招募秘宝 int TREASURE = 8; //青龙秘宝(孙龙的宝藏) int LUCKYCAT = 9;//招財貓 int SERVERHAPPY = 10; //七日狂欢 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index a445f7512..66f9023ab 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -14,7 +14,7 @@ public enum ActivityTypeEnum { FIRSTRECHARGE(ActivityType.RechargeTotal, RechargeTotalActivity::new), // RECHARGETOTAL(ActivityType.RechargeTotal, RechargeTotalActivity::new), GROWTHFUND(ActivityType.GrowthFund, GrowthFundActivity::new), - BLESSACTIVITY(ActivityType.BLESSACTIVITY, BlessActivity::new), +// BLESSACTIVITY(ActivityType.BLESSACTIVITY, BlessActivity::new), TREASUREACTIVITY(ActivityType.TREASURE, TreasureActivity::new), LUCKYCAT(ActivityType.LUCKYCAT, LuckyCatActivity::new), SERVERHAPPY(ActivityType.SERVERHAPPY, DefaultEmptyActivity::new), @@ -94,6 +94,7 @@ public enum ActivityTypeEnum { TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝 CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包 ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼 + SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝 ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SummonTreasureActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SummonTreasureActivity.java new file mode 100644 index 000000000..e0b4509a3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SummonTreasureActivity.java @@ -0,0 +1,163 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.*; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; +import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.*; +import manager.STableManager; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; + +import java.util.ArrayList; +import java.util.Optional; + +class SummonTreasureActivity extends AbstractActivity { + + public SummonTreasureActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, SummonTreasureActivityEvent.class); + } + + @Override + public void initActivity(User user) throws Exception { + ActivityMission mission = new ActivityMission(); + // 初始化阶段奖励 + ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>()); + user.getActivityManager().getActivityMissionMap().put(id, mission); + LOGGER.info("招募秘宝初始化..."+id); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof SummonTreasureActivityEvent)) { + return; + } + SummonTreasureActivityEvent event1 = (SummonTreasureActivityEvent) event; + //动态控制购买数量 + User user = UserManager.getUser(event1.getUid()); + // 客户端推送 + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission != null){ + Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),id,mission.getActivityState())); + // 推送客户端数据 + ISession session = OnlineUserManager.getSessionByUid(user.getId()); + mission.setV(user.getPlayerInfoManager().getGetFiveStarHeroNum()); + sendActivityProgress(session, mission, null); + } + } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + User user = UserManager.getUser(session.getUid()); + //checkAndUpdate cfg + SSummonTreasure treasure = STableManager.getConfig(SSummonTreasure.class).get(missionId); + if (treasure == null || treasure.getGrade() != id) { + throw new ErrorCodeException(ErrorCode.CFG_NULL,"功能不存在:"+missionId); + } + // acitvityinfo check + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission == null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE,"数据错误"); + } + if (mission.getActivityState() != ActivityType.OPEN_STATE) { + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN,"活动未开启"); + } + ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId); + if (progressInfo != null && progressInfo.getState() == ActivityType.FINISH_TAKED) { + throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取")); + } + // 验证领取条件值 + if (!takeRewardsProcess(session,treasure)) { + LOGGER.error("the uid={} the missionId={},the missionProgress={},the require is={} ", session.getUid(), treasure.getId(), user.getPlayerInfoManager().getGetFiveStarHeroNum(), treasure.getCount()); + throw new ErrorCodeException(ErrorCode.newDefineCode("未达到领取条件")); + } + + ArrayList reward = new ArrayList<>(); + // 是否购买礼包 + if (isBuyGift(user)){ + // 宝藏奖励 + reward.add(treasure.getTreasureReward()); + // 普通奖励 + if (progressInfo == null){ + reward.add(treasure.getReward()); + } + checkAndSetProgress(mission,missionId,ActivityType.FINISH_TAKED); + }else { + if (progressInfo != null){ + throw new ErrorCodeException(ErrorCode.newDefineCode("普通奖励已经领取")); + } + // 普通奖励 + reward.add(treasure.getReward()); + checkAndSetProgress(mission,missionId,ActivityType.HAD_TAKED); + } + // reward + CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + // 状态推送 + sendActivityProgress(session, mission, null); + // 打点上报 + reportTakeActivityReward(user,reward,missionId); + return true; + } + + /** + * 是否购买礼包 + * @param user + * @return + * @throws Exception + */ + private boolean isBuyGift(User user){ + int[] ints = Optional.ofNullable(SGlobalActivity.getsGlobalActivityMap().get(id)).map(SGlobalActivity::getCanBuyRechargeId).orElse(null); + if (ints == null){ + return true; + } + for (int anInt : ints) { + ReceiveWelfareBag bag = (ReceiveWelfareBag) Optional.ofNullable(user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap()) + .map(v -> v.get(anInt)).orElse(null); + // 礼包为null,礼包可买,礼包未买 + if (bag == null || !bag.isBought()){ + return false; + } + } + return true; + } + + @Override + public boolean checkActivityMissionFinishAndTake(int uid, int activityId, ActivityMission activityMission) { + return false; + } + + /** + * 验证奖励是否可以领取 + * @param session + * @param treasure + * @return + * @throws Exception + */ + boolean takeRewardsProcess(ISession session, SSummonTreasure treasure) throws Exception { + User user = UserManager.getUser(session.getUid()); + return user.getPlayerInfoManager().getGetFiveStarHeroNum() >= treasure.getCount(); + } + + /** + * 领奖后更新奖励进度 + */ + public void checkAndSetProgress(ActivityMission activityMission, int missionId, int state) { + ActivityProgressInfo progressInfo = new ActivityProgressInfo(); + progressInfo.setState(state); + activityMission.getActivityMissionMap().put(missionId, progressInfo); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureActivityEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureActivityEvent.java new file mode 100644 index 000000000..21525474d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureActivityEvent.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.activity.event; + +public class SummonTreasureActivityEvent implements IEvent{ + private int uid; + + public SummonTreasureActivityEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureEvent.java new file mode 100644 index 000000000..1e40d8277 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SummonTreasureEvent.java @@ -0,0 +1,37 @@ +package com.ljsd.jieling.logic.activity.event; + +public class SummonTreasureEvent implements IEvent{ + private int uid; + private int star; + private int num; + + public SummonTreasureEvent(int uid, int star, int num) { + this.uid = uid; + this.star = star; + this.num = num; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } + + public int getStar() { + return star; + } + + public void setStar(int star) { + this.star = star; + } + + public int getNum() { + return num; + } + + public void setNum(int num) { + this.num = num; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java index 57657287b..65af6e0bb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/ActivityStateChangeHandler.java @@ -11,10 +11,13 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; import com.ljsd.jieling.util.ToolsUtil; import config.SGlobalActivity; +import config.SSummonTreasure; +import javax.naming.spi.ObjectFactory; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class ActivityStateChangeHandler implements IEventHandler { public ActivityStateChangeHandler() { @@ -39,6 +42,33 @@ public class ActivityStateChangeHandler implements IEventHandler { ActivityLogic.getInstance().checkNeedOpenStore(user,shopId,startTime,endTime); } } + // 活动开启类型4 + List treasureList = SSummonTreasure.getTreasureMap().get(activityId); + // 招募基金活动 + if (treasureList != null && !treasureList.isEmpty()){ + List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByOpenRules.getOrDefault(4, new ArrayList<>()); + int getFiveStarHeroNum = user.getPlayerInfoManager().getGetFiveStarHeroNum(); + List activities = sGlobalActivities.stream().filter(s -> s.getOpenRules()[1] == activityId).collect(Collectors.toList()); + boolean result = true; + for (SGlobalActivity activity : activities) { + for (SSummonTreasure treasure : treasureList) { + // 条件未满足 + if (treasure.getCount() > getFiveStarHeroNum){ + result = false; + break; + } + } + if (result){ + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(activity.getId()); + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activity.getId()); + if(mission != null && mission.getActivityState() == ActivityType.UNOPEN_STATE && abstractActivity != null){ + //修改活动状态,推送给前端 + abstractActivity.setOpenState(user,ActivityType.OPEN_STATE); + ActivityLogic.getInstance().sendActivityInfo(user,activity.getId()); + } + } + } + } }else if(state == ActivityType.FINISH_STATE){ List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByOpenRules.getOrDefault(3, new ArrayList<>(0)); sGlobalActivities.stream().filter(s->s.getOpenRules()[1] == activityId).forEach(s->{ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SummonTreasureHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SummonTreasureHandler.java new file mode 100644 index 000000000..87b59da28 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SummonTreasureHandler.java @@ -0,0 +1,27 @@ +package com.ljsd.jieling.logic.activity.eventhandler; + +import com.ljsd.jieling.logic.activity.IEventHandler; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SummonTreasureActivityEvent; +import com.ljsd.jieling.logic.activity.event.SummonTreasureEvent; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; + +public class SummonTreasureHandler implements IEventHandler { + public SummonTreasureHandler() { + Poster.getPoster().listenEvent(this, SummonTreasureEvent.class); + } + @Override + public void onEvent(IEvent event) throws Exception { + if( ! (event instanceof SummonTreasureEvent) ){ + return; + } + SummonTreasureEvent event1 = (SummonTreasureEvent) event; + User user = UserManager.getUser(event1.getUid()); + if (event1.getStar() == 5){ + user.getPlayerInfoManager().setGetFiveStarHeroNum(user.getPlayerInfoManager().getGetFiveStarHeroNum()+event1.getNum()); + Poster.getPoster().dispatchEvent(new SummonTreasureActivityEvent(user.getId())); + } + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 4a227fd0f..882fff334 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -196,10 +196,22 @@ public class PlayerManager extends MongoBase { private long weekCardTimeFirst;//本周第一次看到周卡的时间 private int weekCardTimeFirstLevel;//本周第一次看到周卡时人物等级 + //玩家抽取到的五星次数,目前只应用于招募基金使用 + private int getFiveStarHeroNum; + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } + public int getGetFiveStarHeroNum() { + return getFiveStarHeroNum; + } + + public void setGetFiveStarHeroNum(int getFiveStarHeroNum) { + this.getFiveStarHeroNum = getFiveStarHeroNum; + updateString("getFiveStarHeroNum", getFiveStarHeroNum); + } + public int getTreasureLevel() { return treasureLevel; } 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 cf2adb1e6..a3a1c1f9e 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 @@ -506,6 +506,15 @@ public class BuyGoodsNewLogic { result = true; } } + if (bag.getType() == RechargeType.receive.getType()){ + for (String[] strings : bag.getCondition()) { + if (strings[0].equals("9")){ + if(!judgeOpen(strings,user)){ + bag.setOpen(false); + } + } + } + } }else{ if(bag.getType() == RechargeType.push.getType() && !bag.isOpen()){ user.getPlayerInfoManager().getNewRechargeInfo().removePush(bag.getModId()); @@ -635,6 +644,17 @@ public class BuyGoodsNewLogic { return user.getPlayerInfoManager().getMonthCard().get(Global.LMONTHCARDID) != null; }else if(con[0].equals("7")){ return true; + }else if (con[0].equals("9")){ + SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(Integer.parseInt(con[1])); + if (config == null){ + return true; + } + RechargeHandler rechargeHandler = getRechargeHandler(config.getOtype()); + AbstractWelfareBag bag = rechargeHandler.getRechargeMap(user).get(config.getId()); + if (bag == null){ + return true; + } + return bag.buyAgo(); } return false; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java index 0057218ef..86ab68c6c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java @@ -90,6 +90,10 @@ public class AbstractWelfareBag extends MongoBase{ return true; } + public boolean buyAgo(){ + return buyTimes >= getLimit(); + } + public boolean checkBuy() { if(!open){ LOGGER.error("礼包:{}未开启",modId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/ReceiveWelfareBag.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/ReceiveWelfareBag.java index e550848a5..7a2f86e41 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/ReceiveWelfareBag.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/ReceiveWelfareBag.java @@ -74,6 +74,11 @@ public class ReceiveWelfareBag extends AbstractWelfareBag { } } + @Override + public boolean buyAgo(){ + return bought; + } + @Override public void refresh(){ super.refresh(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 002be0484..5e462826e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -1388,6 +1388,7 @@ public class ItemUtil { PlayerManager playerInfoManager = user.getPlayerInfoManager(); int[] heroStar = SItem.getsItemMap().get(cardId).getHeroStar(); Hero hero = new Hero(user.getId(),heroStar[0],heroStar[1]); + Poster.getPoster().dispatchEvent(new SummonTreasureEvent(user.getId(),hero.getStar(),1)); heroManager.addHero(hero); // 鸿蒙阵推送 HeroLogic.getInstance().addOrUpdateHongmeng(OnlineUserManager.getSessionByUid(user.getId())); diff --git a/tablemanager/src/main/java/config/SSummonTreasure.java b/tablemanager/src/main/java/config/SSummonTreasure.java new file mode 100644 index 000000000..15a0105cb --- /dev/null +++ b/tablemanager/src/main/java/config/SSummonTreasure.java @@ -0,0 +1,72 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Table(name ="SummonTreasure") +public class SSummonTreasure implements BaseConfig { + + private int id; + + private int level; + + private int grade; + + private int count; + + private int[][] reward; + + private int[][] treasureReward; + + /** + * key:活动id, value:对象列表 + */ + private static Map> treasureMap = new HashMap<>(); + + @Override + public void init() throws Exception { + Map config = STableManager.getConfig(SSummonTreasure.class); + HashMap> map = new HashMap<>(); + config.values().forEach(v->{ + List treasures = map.getOrDefault(v.getGrade(), new ArrayList()); + treasures.add(v); + map.put(v.getGrade(),treasures); + }); + treasureMap = map; + } + + public static Map> getTreasureMap() { + return treasureMap; + } + + public int getId() { + return id; + } + + public int getLevel() { + return level; + } + + public int getGrade() { + return grade; + } + + public int getCount() { + return count; + } + + public int[][] getReward() { + return reward; + } + + public int[][] getTreasureReward() { + return treasureReward; + } + + +} \ No newline at end of file