From f13360abd37e0ebad0770e2a418bee592d6e0e81 Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Thu, 4 Nov 2021 13:45:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=86=85=E5=AD=98?= =?UTF-8?q?=E4=B8=AD=E7=8E=A9=E5=AE=B6=E6=B8=85=E9=99=A4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/dao/UserManager.java | 20 +++++++++++-------- .../network/server/SessionManager.java | 6 +++--- .../ljsd/jieling/thread/task/MinuteTask.java | 5 ++--- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java index c175eaaab..06aa56215 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java @@ -44,6 +44,7 @@ public class UserManager { private static Map userMapPutTime = new ConcurrentHashMap<>(); //离线读入 private static AtomicInteger login_f_num = new AtomicInteger(0);//登陆计数 private static final int LOGIN_F_LIMIT = 100;//报警界限 + private static final long LIVE_TIME = 12 * 60 * 60 * 1000L; public static void addUser(User user) { userMap.put(user.getId(), user); @@ -54,22 +55,25 @@ public class UserManager { return userMap.containsKey(uid); } + public static int getUserMapSize() { + return userMap.keySet().size(); + } //离线清除逻辑 public static void checkOffline(){ try { Set collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet()); - long l = System.currentTimeMillis(); - collect.forEach(integerUserEntry -> { - long offLineTime = integerUserEntry.getPlayerInfoManager().getOffLineTime(); - if(offLineTime12*60*60*1000&& userMapPutTime.getOrDefault(integerUserEntry.getId(),0L)>12*60*60*1000){ + if (collect.isEmpty()) { + return; + } + long now = System.currentTimeMillis(); + for (User integerUserEntry : collect) { + Long addTime = userMapPutTime.getOrDefault(integerUserEntry.getId(), LIVE_TIME); + if (now - addTime >= LIVE_TIME) { userMap.remove(integerUserEntry.getId()); userMapPutTime.remove(integerUserEntry.getId()); } - }); + } }catch (Exception e){ LOGGER.error("Exception离线清除逻辑err={}",e.toString()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java index 0103b7ca4..329960657 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java @@ -63,7 +63,7 @@ import java.util.concurrent.TimeUnit; */ public class SessionManager implements INetSession, INetReceived, INetConnet, INetWorkHandler { - private Map currentSessions = new ConcurrentHashMap<>(); +// private Map currentSessions = new ConcurrentHashMap<>(); private static final Logger LOGGER = LoggerFactory.getLogger(SessionManager.class); @@ -74,12 +74,12 @@ public class SessionManager implements INetSession, INetReceived Date: Thu, 4 Nov 2021 13:47:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?SGlobalSystemConfig=E4=B8=ADifopen=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E4=B8=8D=E5=A5=BD=E4=BD=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/GlobalDataManaager.java | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 62c8b2b8d..58ce2c6d9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -304,6 +304,7 @@ public class GlobalDataManaager implements IManager { public void getTimeOfControl(ISession session){ MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_FUNCTIONOFTIME_RESPONSE_VALUE,getFunctionOfTimeResponse,true); + } private void updateGetFunctionOfTimeResponse(){ @@ -321,6 +322,15 @@ public class GlobalDataManaager implements IManager { long timeOpenOfThis =seasonOpenLong; long timeCloseOfThis =seasonEndLong; if(seasonInterval == 0){ + int[]limitDay = sGlobalSystemConfig.getIfOpen(); + if(limitDay != null && limitDay.length>0){ + if( limitDay[0] == 2 ){ + long day = TimeUtils.getGapDaysByTwoTime(GameApplication.serverConfig.getOpenTime(),TimeUtils.getTimeStamp2(TimeUtils.now()))+1; + if(day < limitDay[1]){ + continue; + } + } + } timeOpenOfThis = systemOpenLong; timeCloseOfThis = systemEndLong; }else{