From 6d8a430fab99e4da151afa158041bcfa5574e72f Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 15 Oct 2021 17:16:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=9B=E6=B0=94=E5=86=B2=E5=A4=A9=E5=85=BC?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/ActivityLogic.java | 76 ++++++------------- .../logic/activity/CowFlySkyActivity.java | 5 ++ .../src/main/java/config/SGlobalActivity.java | 59 ++++++++++++-- 3 files changed, 83 insertions(+), 57 deletions(-) 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 48ff9d1dd..439c8097e 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 @@ -178,33 +178,11 @@ public class ActivityLogic implements IEventHandler{ openActivityIds.remove(sGlobalActivity.getId()); continue; } - int[] ifOpen = sGlobalActivity.getIfOpen(); + // 开服条件判断 - if(ifOpen!=null && ifOpen.length>0){ - //开服多少天不会出现 - if(ifOpen[0]==2){ - if(GameApplication.serverConfig.getCacheOpenTime() + ifOpen[1]*TimeUtils.ONE_DAY >TimeUtils.now()){ - continue; - } - } - // 在某某时间之前开服不会出现 - if (ifOpen[0] == 3){ - long toMiles = TimeUtils.stringToTimeLong(String.valueOf(ifOpen[1]), TimeUtils.ymdFormat); - long openTime = GameApplication.serverConfig.getCacheOpenTime(); - if (toMiles < openTime){ - openActivityIds.remove(sGlobalActivity.getId()); - continue; - } - } - // 在某某时间之后开服不会出现 - if (ifOpen[0] == 4){ - long toMiles = TimeUtils.stringToTimeLong(String.valueOf(ifOpen[1]), TimeUtils.ymdFormat); - long openTime = GameApplication.serverConfig.getCacheOpenTime(); - if (toMiles > openTime){ - openActivityIds.remove(sGlobalActivity.getId()); - continue; - } - } + boolean open = SGlobalActivity.checkActivityIfOpen(sGlobalActivity.getId(),0,GameApplication.serverConfig.getCacheOpenTime()); + if (!open){ + continue; } if (endTime != 0 && now > endTime) { if (!openActivityIds.contains(sGlobalActivity.getId())) { @@ -227,8 +205,9 @@ public class ActivityLogic implements IEventHandler{ if (null == abstractActivity) { continue; } - if(openActivityIds.contains(sGlobalActivity.getId())) + if(openActivityIds.contains(sGlobalActivity.getId())) { continue; + } abstractActivity.onActivityStart(); openActivityIds.add(sGlobalActivity.getId()); } @@ -341,7 +320,7 @@ public class ActivityLogic implements IEventHandler{ public LuckWheelMission getLuckWheel(ActivityManager activityManager, int type) { LuckWheelMission luckWheelMission = type == ActivityType.LUCK_WHEEL ? activityManager.getLuckWheel() : activityManager.getLuckWheelAdvance(); if (null == luckWheelMission) { - String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance"; +// String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance"; if (type == ActivityType.LUCK_WHEEL) { luckWheelMission = new LuckWheelMission(); activityManager.setLuckWheel(luckWheelMission); @@ -356,7 +335,7 @@ public class ActivityLogic implements IEventHandler{ public void initLuckWheel(ActivityManager activityManager,int type) { LuckWheelMission luckWheelMission = type == ActivityType.LUCK_WHEEL ? activityManager.getLuckWheel() : activityManager.getLuckWheelAdvance(); if (null != luckWheelMission) { - String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance"; +// String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance"; if (type == ActivityType.LUCK_WHEEL) { activityManager.setLuckWheel(luckWheelMission); } else { @@ -379,11 +358,10 @@ public class ActivityLogic implements IEventHandler{ for (Integer openActivityId : openActivityIds) { SGlobalActivity sGlobalActivity = sGlobalActivityMap.get(openActivityId); int[] ifOpen = sGlobalActivity.getIfOpen(); - if(ifOpen!=null && ifOpen.length>0){ - if(ifOpen[0]==1){ //创角 - if(userCreateTime + ifOpen[1]*TimeUtils.ONE_DAY - now >0){ - continue; - } + //创角 + if(ifOpen!=null && ifOpen.length>0 && ifOpen[0]==1){ + if(userCreateTime + ifOpen[1]*TimeUtils.ONE_DAY > now){ + continue; } } ActivityMission activityMission = activityManager.getActivityMissionMap().get(openActivityId); @@ -414,11 +392,7 @@ public class ActivityLogic implements IEventHandler{ } continue; } - -// if(!initOtherActivity(user, sGlobalActivity)){ - initAllActivityMission(activityManager.getActivityMissionMap(),openActivityId); -// } - + initAllActivityMission(activityManager.getActivityMissionMap(),openActivityId); AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(openActivityId); if (null==abstractActivity) { continue; @@ -439,15 +413,13 @@ public class ActivityLogic implements IEventHandler{ int activityId = sGlobalActivity.getId(); if (openActivityIds.contains(activityId)) { int[] ifOpen = sGlobalActivity.getIfOpen(); - if(ifOpen!=null && ifOpen.length>0){ - if(ifOpen[0]==1){ //创角 - if(userCreateTime + ifOpen[1]*TimeUtils.ONE_DAY - now >0){ - continue; - } - }else{ - continue; - } - }else{ + if (ifOpen == null || ifOpen.length <= 0){ + continue; + } + if (ifOpen[0]!=1){ + continue; + } + if (userCreateTime + ifOpen[1]*TimeUtils.ONE_DAY > now){ continue; } } else if (activityMissionMap.containsKey(activityId)) { @@ -483,7 +455,7 @@ public class ActivityLogic implements IEventHandler{ // ReportUtil.onReportEvent(user, ReportEventEnum.JOIN_ACTIVITY.getType(),String.valueOf(activityId)); abstractActivity.initActivity(user); // if(!initOtherActivity(user, sGlobalActivity)){ - initAllActivityMission(activityManager.getActivityMissionMap(),activityId); + initAllActivityMission(activityManager.getActivityMissionMap(),activityId); // int activityOpenState = getActivityOpenState(user, activityId ); abstractActivity.setOpenState(user,activityOpenState); @@ -553,7 +525,7 @@ public class ActivityLogic implements IEventHandler{ MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.LUCKWHEEL_POOL_INDICATION_VALUE, builder.build(), true); } - public List getActivityInfos(Map activityMissionMap, long createTime) { + public List getActivityInfos(Map activityMissionMap, long createTime) { Map sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); List activityInfoList = new ArrayList<>(activityMissionMap.size()); for (Map.Entry activityState : activityMissionMap.entrySet()) { @@ -600,7 +572,6 @@ public class ActivityLogic implements IEventHandler{ int endTime; if(sGlobalActivity.getGapTime()!=0){ endTime = (int) (ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, sGlobalActivity.getGapTime()) / 1000); - }else{ endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000); } @@ -656,7 +627,8 @@ public class ActivityLogic implements IEventHandler{ ActivityMission value = item.getValue(); if (value.getOpenType() == 0) { value.setOpenType(1); - } } + } + } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CowFlySkyActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CowFlySkyActivity.java index e563a2b61..300b09942 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CowFlySkyActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CowFlySkyActivity.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.GameApplication; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; @@ -35,6 +36,10 @@ public class CowFlySkyActivity extends AbstractActivity { @Override public void initActivity(User user) throws Exception { + boolean open = SGlobalActivity.checkActivityIfOpen(id, user.getPlayerInfoManager().getCreateTime(), GameApplication.serverConfig.getCacheOpenTime()); + if (!open){ + return; + } ActivityMission mission = new ActivityMission(); List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); ArrayList integers = new ArrayList<>(rewardConfigs.size()); diff --git a/tablemanager/src/main/java/config/SGlobalActivity.java b/tablemanager/src/main/java/config/SGlobalActivity.java index 8d206c018..f18a16c31 100644 --- a/tablemanager/src/main/java/config/SGlobalActivity.java +++ b/tablemanager/src/main/java/config/SGlobalActivity.java @@ -81,11 +81,6 @@ public class SGlobalActivity implements BaseConfig { } sGlobalActivity.setStartTimeLong(Long.parseLong(startTime)); sGlobalActivity.setEndTimeLong(Long.parseLong(endtime)); - - - - - } sGlobalActivityMap = config; sGlobalActivityMapByType = sGlobalActivityMapByTypeTmp; @@ -93,6 +88,60 @@ public class SGlobalActivity implements BaseConfig { sRechargeId2ActivityId = sRechargeId2ActivityIdTemp; } + /** + * 校验活动开启条件 + * @param activityId + * @param value + * 对应位置参数传0,表示不需要验证 + * 条件参数,第一位:创角时间 + * 第二位:开服时间 + * @return + */ + public static boolean checkActivityIfOpen(int activityId, long... value){ + SGlobalActivity activity = sGlobalActivityMap.get(activityId); + if (activity == null){ + return false; + } + // 开启条件 + int[] ifOpen = activity.getIfOpen(); + // 为空表示没有条件 + if (ifOpen == null || ifOpen.length <= 0){ + return true; + } + long now = TimeUtils.now(); + switch (ifOpen[0]){ + case 1: + // 创角多少天后不开 + if (value[0] != 0 && value[0] + ifOpen[1]*TimeUtils.ONE_DAY > now){ + return false; + } + break; + case 2: + // 开服后多少天不出现改活动 + if(value[1] != 0 && value[1] + ifOpen[1]*TimeUtils.ONE_DAY > now){ + return false; + } + break; + case 3: + // 在某某时间之前开服不会出现 + long timeOpen3 = TimeUtils.stringToTimeLong(String.valueOf(ifOpen[1]), TimeUtils.ymdFormat); + if (value[1] != 0 && value[1] < timeOpen3){ + return false; + } + break; + case 4: + // 在某某时间之后开服不会出现 + long timeOpen4 = TimeUtils.stringToTimeLong(String.valueOf(ifOpen[1]), TimeUtils.ymdFormat); + if (value[1] != 0 && value[1] > timeOpen4){ + return false; + } + break; + default: + break; + } + return true; + } + public static Map getsGlobalActivityMap() { return sGlobalActivityMap; }