diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index c16f303f6..45afbc388 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -972,6 +972,24 @@ public class TimeUtils { return (y1 == y2) && (m1 == m2) && (d1 == d2); } + /** + * 判断两个日期是否同一月 + * + * @param r1 + * @param r2 + * @return + */ + public static boolean isSameMonth2(long r1, long r2) { + Calendar c1 = Calendar.getInstance(); + c1.setTimeInMillis(r1); + int y1 = c1.get(Calendar.YEAR); + int m1 = c1.get(Calendar.MONTH) + 1; + Calendar c2 = Calendar.getInstance(); + c2.setTimeInMillis(r2); + int y2 = c2.get(Calendar.YEAR); + int m2 = c2.get(Calendar.MONTH) + 1; + return (y1 == y2) && (m1 == m2); + } public static boolean isSameDayWithNow(long r1) { long r2 = now(); 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 0817376f3..5f48fc3e0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -336,7 +336,28 @@ public class GlobalDataManaager implements IManager { if( limitDay[0] == 2 ){ //此时是开服第几天 long day = TimeUtils.getGapDaysByTwoTime(GameApplication.serverConfig.getOpenTime(),TimeUtils.getTimeStamp2(TimeUtils.now()))+1; - if(day < limitDay[1]){ + if(day < limitDay[1]){ + long mod = passTims % (diffTime + seasonInterval); + long turns = passTims / ((diffTime + seasonInterval)); + if(mod > diffTime ){ + turns++; + } + long addTim = turns * (diffTime + seasonInterval); + timeOpenOfThis =seasonOpenLong+addTim+(limitDay[1]-day); + timeCloseOfThis =seasonEndLong+addTim; + CommonProto.FunctionOfTime timeInfo = CommonProto.FunctionOfTime.newBuilder() + .setFunctionId(id) + .setStartTime((int) (timeOpenOfThis / 1000)) + .setEndTime((int) (timeCloseOfThis / 1000)) + .setInterval(seasonInterval).setSwitch(1) + .build(); + int isIDdSame = sGlobalSystemConfig.getIsIDdSame(); + List timeList = sameActivity.get(isIDdSame); + if(timeList==null){ + timeList = new ArrayList<>(); + } + timeList.add(timeInfo); + sameActivity.put(isIDdSame,timeList); continue; } } @@ -359,7 +380,7 @@ public class GlobalDataManaager implements IManager { .setFunctionId(id) .setStartTime((int) (timeOpenOfThis / 1000)) .setEndTime((int) (timeCloseOfThis / 1000)) - .setInterval(seasonInterval) + .setInterval(seasonInterval).setSwitch(0) .build(); int isIDdSame = sGlobalSystemConfig.getIsIDdSame(); List timeList = sameActivity.get(isIDdSame); @@ -407,9 +428,19 @@ public class GlobalDataManaager implements IManager { Map config = SDailyTasksConfig.config; int dailymissionType = GameMisionType.DAILYMISSION.getType(); int day = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天 + boolean refreshStype = false; + if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){ + refreshStype = true; + } for(SDailyTasksConfig sDailyTasksConfig:config.values()){ - if(day >= sDailyTasksConfig.getViewDateUp()&& day <=sDailyTasksConfig.getViewDataDown()){ - fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0)); + if(refreshStype){ + if(day >= sDailyTasksConfig.getViewDateUp()&& day <=sDailyTasksConfig.getViewDataDown()){ + fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0)); + } + }else{ + if(sDailyTasksConfig.getViewDateUp() == 1){ + fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0)); + } } } fBuilder.setExpeditionLeve(user.getExpeditionManager().getExpeditionLeve()); @@ -502,7 +533,7 @@ public class GlobalDataManaager implements IManager { } /** - * 从抽卡获取服务器开服时间 + * * @return */ public boolean getServerOpenTimeCompareSpecialTimeResult(){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index 0b0c13b9a..4a16f1744 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -218,6 +218,9 @@ public class CumulationData { //活动期间内日常副本挑战总次数 public int daily_challenge_count; + //新将招募次数 + public int new_hero_zhaomu; + diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index 010f20cf4..c2bc2aed0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.dao; +import ch.qos.logback.core.util.TimeUtil; import com.ljsd.GameApplication; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig; @@ -103,9 +104,15 @@ public class UserMissionManager extends MongoBase { break; } case DAILY_REFRESH: - int day = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天 - Set missionIds = SDailyTasksConfig.config.values().stream().filter(n->day >=n. - getViewDateUp()&& day <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet()); + Set missionIds; + if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){ + int days = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天 + missionIds = STableManager.getConfig(SDailyTasksConfig.class).values().stream().filter(n->days >=n. + getViewDateUp()&& days <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet()); + }else{ + missionIds = STableManager.getConfig(SDailyTasksConfig.class).values().stream().filter(n->n.getViewDateUp() == 1). + map(n ->n.getId()).collect(Collectors.toSet()); + } int type = (int) parm[0]; if (type == 0) { dailyMissionIdsType.getDoingMissionIds().clear(); @@ -232,9 +239,16 @@ public class UserMissionManager extends MongoBase { updateString("cowFlySkyMissionType", cowFlySkyMissionType); break; case ENDLESS_MISSION_REFRESH: - int days = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天 - Set endlessTask = STableManager.getConfig(SEndlessTask.class).values().stream().filter(n->days >=n. - getViewDateUp()&& days <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet()); + + Set endlessTask; + if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){ + int days = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天 + endlessTask = STableManager.getConfig(SEndlessTask.class).values().stream().filter(n->days >=n. + getViewDateUp()&& days <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet()); + }else{ + endlessTask = STableManager.getConfig(SEndlessTask.class).values().stream().filter(n->n.getViewDateUp() == 1). + map(n ->n.getId()).collect(Collectors.toSet()); + } endlessMissionType.getDoingMissionIds().clear(); endlessMissionType.getFinishMissionIds().clear(); endlessMissionType.getRewardedMissionIds().clear(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index f0c7bb0e1..9e5377790 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -361,6 +361,7 @@ public class HeroLogic{ } } user.getUserMissionManager().onGameEvent(user,GameEvent.RANDOM_HERO,sLotterySetting.getLotteryType(),perCount); + user.getUserMissionManager().onGameEvent(user, GameEvent.NEW_HERO_ZHAOMU,sLotterySetting.getPerCount()); heroManager.updateRandCount(type,perCount); CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, resultRandom,BIReason.HERO_RANDOM); fiveStarPushByRandom(user,resultRandom); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java index 99ecc6251..2a43a8341 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java @@ -136,5 +136,6 @@ public enum GameEvent { TAKE_ADVENTURE_REWARD_COUNT,//急速探索次数 DAILY_CHALLENGE_COUNT,//日常副本挑战次数 HARSTAGE_PARTICIPATION_REWARD,//山河社稷图参与奖励 + NEW_HERO_ZHAOMU,//新将招募次数 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 1113ef4c1..4053d045d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -254,9 +254,19 @@ public class MissionLoigc { Map config = SDailyTasksConfig.config; int dailymissionType = GameMisionType.DAILYMISSION.getType(); int day =new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天 + boolean refreshStype = false; + if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){ + refreshStype = true; + } for(SDailyTasksConfig sDailyTasksConfig:config.values()){ - if(!(day>=sDailyTasksConfig.getViewDateUp()&& day <= sDailyTasksConfig.getViewDataDown())){ - continue; + if(refreshStype){ + if(!(day >= sDailyTasksConfig.getViewDateUp()&& day <= sDailyTasksConfig.getViewDataDown())){ + continue; + } + }else{ + if(sDailyTasksConfig.getViewDateUp() != 1){ + continue; + } } int state = 2; int missionId = sDailyTasksConfig.getId(); @@ -400,7 +410,17 @@ public class MissionLoigc { int id = v.getId(); SEndlessTask config = STableManager.getConfig(SEndlessTask.class).get(id); int day =new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天 - if(day >= config.getViewDateUp() && day <= config.getViewDataDown()){ + boolean isAdd = false; + if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){ + if(day >= config.getViewDateUp() && day <= config.getViewDataDown()){ + isAdd = true; + } + }else{ + if(1 == config.getViewDateUp()){ + isAdd = true; + } + } + if(isAdd){ CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder(); info.setMissionId(id); info.setType(GameMisionType.ENDLESS_MISSION.getType()); @@ -1044,6 +1064,10 @@ public class MissionLoigc { //急速探索次数 count = cumulationData.take_adventure_reward_count; break; + case NEW_HERO_ZHAOMU: + //新将招募次数 + count = cumulationData.daily_challenge_count; + break; case DAILY_CHALLENGE_COUNT: //副本挑战次数 count = cumulationData.daily_challenge_count; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java index 1a5c4588f..2ff9b5e9b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java @@ -147,6 +147,7 @@ public enum MissionType { TAKE_ADVENTURE_REWARD_COUNT(137),//急速探索次数 DAILY_CHALLENGE_COUNT(138),//日常副本挑战次 HARSTAGE_PARTICIPATION_REWARD(139),//山河社稷图参与奖励 + NEW_HERO_ZHAOMU(140),//新将招募次数 ; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java index 2fc4a170e..123be2c46 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java @@ -170,6 +170,7 @@ public class DataManagerDistributor { judges.put(MissionType.SUB_ACTIVITY,new SubActivityManager());//社稷大典捐献次数 judges.put(MissionType.TAKE_ADVENTURE_REWARD_COUNT,new TakeAdventureRewardManager());//急速探索次数 judges.put(MissionType.DAILY_CHALLENGE_COUNT,new DailyChallengeManager());//副本挑战次数 + judges.put(MissionType.NEW_HERO_ZHAOMU,new NewHeroZhaomuManager());//新将招募次数 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/NewHeroZhaomuManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/NewHeroZhaomuManager.java new file mode 100644 index 000000000..f65fc3127 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/NewHeroZhaomuManager.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.MissionType; + +public class NewHeroZhaomuManager extends AbstractDataManager{ + + + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int num = (int)parm[0]; + data.new_hero_zhaomu += num; + return new CumulationData.Result(missionType); + } + + @Override + public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) { + return data.new_hero_zhaomu >= value[1][0]; + } + + @Override + public int getProcess(User user, CumulationData data, int[] missionSubType) { + return data.new_hero_zhaomu; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java index 5b1e8eaff..55971f577 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java @@ -535,6 +535,11 @@ public class MissionEventDistributor { typeList.add(MissionType.TAKE_ADVENTURE_REWARD_COUNT); eventEnumListMap.put(GameEvent.TAKE_ADVENTURE_REWARD_COUNT, typeList); eventProcessor.put(GameEvent.TAKE_ADVENTURE_REWARD_COUNT, new CumulationDataEventProcessor()); + //新将招募次数 + typeList = new ArrayList<>(); + typeList.add(MissionType.NEW_HERO_ZHAOMU); + eventEnumListMap.put(GameEvent.NEW_HERO_ZHAOMU, typeList); + eventProcessor.put(GameEvent.NEW_HERO_ZHAOMU, new CumulationDataEventProcessor()); //日常副本挑战次数 typeList = new ArrayList<>(); typeList.add(MissionType.DAILY_CHALLENGE_COUNT);