From 445f0a4965127f67ce8c1ba289c099330ae1c333 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 3 Sep 2020 15:29:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E5=AE=AB7=E5=A4=A9=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/dao/ExpeditionManager.java | 4 +- .../logic/dao/WorldTreasureReward.java | 31 ++++++++++--- .../logic/expedition/ExpeditionLogic.java | 44 +++++++++++-------- 3 files changed, 54 insertions(+), 25 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java index 6512c5412..aae212b88 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java @@ -128,8 +128,8 @@ public class ExpeditionManager extends MongoBase { return effectItems; } - public void resetTreasureReward(int round){ - worldTreasureReward.reset(round); + public void resetTreasureReward(){ + worldTreasureReward.reset(); onlyUpdateTreasureReward(); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorldTreasureReward.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorldTreasureReward.java index 8641f423b..81a86ef7d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorldTreasureReward.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/WorldTreasureReward.java @@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.logic.dao.root.User; +import config.SExpeditionSetting; +import manager.STableManager; import util.TimeUtils; import java.util.HashMap; @@ -9,8 +11,10 @@ import java.util.Map; public class WorldTreasureReward extends MongoBase { + + private int firstStartTime; private int createTime; //取当天零点 根据其可以推算出期数。 - private int round=1; + private int round; private int score; private Map rewardStatusMap = new HashMap<>(); //领取状态 1:表示领取基础奖励 2:表示领取额外奖励。 @@ -18,17 +22,19 @@ public class WorldTreasureReward extends MongoBase { this.setRootCollection(User._COLLECTION_NAME); } - public void reset(int round){ + public void reset(){ + SExpeditionSetting setting = STableManager.getConfig(SExpeditionSetting.class).get(1); + int treasureTime = setting.getTreasureTime()[0][1]; if(createTime == 0){ - createTime =(int)((TimeUtils.getLastOrUnderHour(TimeUtils.now(), 5,0, true)+TimeUtils.DAY*30)/1000); + createTime =(int)((TimeUtils.getLastOrUnderHour(TimeUtils.now(), 5,0, true)+TimeUtils.DAY*treasureTime)/1000); }else{ do{ - createTime+=TimeUtils.DAY*30/1000; + createTime+=TimeUtils.DAY*treasureTime/1000; }while(createTime(); - this.round = round; + updateRound(round+1); } @Override @@ -47,6 +53,11 @@ public class WorldTreasureReward extends MongoBase { } return round; } + public void updateRound(int round) { + + this.round = round; + updateString("round", round); + } public int getScore() { return score; @@ -64,4 +75,14 @@ public class WorldTreasureReward extends MongoBase { rewardStatusMap.put(id,value); updateString("rewardStatusMap."+id, value); } + + public int getFirstStartTime() { + return firstStartTime; + } + + public void setFirstStartTime(int firstStartTime) { + this.firstStartTime = firstStartTime; + } + + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index 5a2d7cfa3..06b7478de 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -763,23 +763,26 @@ public class ExpeditionLogic { SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1); int openRule = sExpeditionSetting.getOpenRules()[0]; if(openRule == type && sExpeditionSetting.getOpenRules()[1] == parm){ - user.getExpeditionManager().resetTreasureReward(1); - sendAllTreasureInfo(user); + //设置第一次七天后开启 + user.getExpeditionManager().getWorldTreasureReward().setFirstStartTime((int)((TimeUtils.now()+7*TimeUtils.ONE_DAY)/1000)); +// user.getExpeditionManager().resetTreasureReward(1); +// sendAllTreasureInfo(user); } } public static void checkAndResetTreasure(User user) throws Exception { + SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1); WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward(); - int createTime =worldTreasureReward.getCreateTime(); - if(createTime==0){ + if(worldTreasureReward.getFirstStartTime()>TimeUtils.nowInt()){ return; } + int createTime =worldTreasureReward.getCreateTime(); //重置 - if(TimeUtils.nowInt()>=worldTreasureReward.getCreateTime()){ - user.getExpeditionManager().resetTreasureReward(1); + if(TimeUtils.nowInt()>=createTime){ + user.getExpeditionManager().resetTreasureReward(); sendAllTreasureInfo(user); BuyGoodsLogic.sendGiftGooodsIndication(user.getId()); - user.getPlayerInfoManager().getRechargeInfo().updateBuyGoodsTimes(106,0); + user.getPlayerInfoManager().getRechargeInfo().updateBuyGoodsTimes(sExpeditionSetting.getTreasureTime()[0][2],0); } } @@ -1012,17 +1015,22 @@ public class ExpeditionLogic { WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward(); Expedition.ExpeditionTreasureInfoResponse.Builder response = Expedition.ExpeditionTreasureInfoResponse.newBuilder(); - Map rewardStatusMap = worldTreasureReward.getRewardStatusMap(); - WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class); - Set sWorldBossTreasureConfigs = worldBossTreasureStaticConfig.getIdsByPeriods().get(worldTreasureReward.getRound()); - List states = new ArrayList<>(100); - sWorldBossTreasureConfigs.forEach(item->{ - Expedition.TreasureRewardState.Builder builder = Expedition.TreasureRewardState.newBuilder().setId(item.getId()).setState(rewardStatusMap.getOrDefault(item.getId(),0)); - states.add(builder.build()); - }); - response.addAllTreasureRewardState(states); - response.setScore(worldTreasureReward.getScore()); - response.setResetTime(worldTreasureReward.getCreateTime()); + if(worldTreasureReward.getFirstStartTime()<=TimeUtils.nowInt()){ + Map rewardStatusMap = worldTreasureReward.getRewardStatusMap(); + WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class); + Set sWorldBossTreasureConfigs = worldBossTreasureStaticConfig.getIdsByPeriods().get(worldTreasureReward.getRound()); + List states = new ArrayList<>(100); + sWorldBossTreasureConfigs.forEach(item->{ + Expedition.TreasureRewardState.Builder builder = Expedition.TreasureRewardState.newBuilder().setId(item.getId()).setState(rewardStatusMap.getOrDefault(item.getId(),0)); + states.add(builder.build()); + }); + response.addAllTreasureRewardState(states); + response.setScore(worldTreasureReward.getScore()); + response.setResetTime(worldTreasureReward.getCreateTime()); + }else { + response.setResetTime(-1); + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } }