From aa938f7edbcf338b3dabf8034adaf9e36dc99b55 Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Fri, 5 Nov 2021 14:08:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=96=E7=95=8C=E7=AD=89?= =?UTF-8?q?=E7=BA=A7=E8=B5=B7=E6=9C=8D=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- serverlogic/src/main/java/com/ljsd/GameLogicService.java | 2 +- .../java/com/ljsd/jieling/logic/GlobleSystemLogic.java | 9 ++++++++- .../java/com/ljsd/jieling/logic/dao/UserManager.java | 3 ++- .../java/com/ljsd/jieling/thread/task/MinuteTask.java | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/GameLogicService.java b/serverlogic/src/main/java/com/ljsd/GameLogicService.java index fdb2bef0f..5bdc9e715 100644 --- a/serverlogic/src/main/java/com/ljsd/GameLogicService.java +++ b/serverlogic/src/main/java/com/ljsd/GameLogicService.java @@ -48,7 +48,7 @@ public class GameLogicService implements IService { public void init() throws Exception { RedisUtil.getInstence().init(); MongoUtil.getLjsdMongoTemplate().getMongoTemplate(GameApplication.serverId).getCollection(User.getCollectionName()).createIndex("playerManager.level"); - GlobleSystemLogic.getInstence().calCulRank(); + GlobleSystemLogic.getInstence().calCulRank(true); registerServerInfoToRedis(); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java index f661c6d59..315248b4e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java @@ -152,7 +152,7 @@ public class GlobleSystemLogic implements IEventHandler { * * 2 高于50名 */ - public void calCulRank() { + public void calCulRank(boolean isServerStart) { try { //开服前7天不开放跨服功能 /*if(isOpenServer7()){ @@ -162,6 +162,13 @@ public class GlobleSystemLogic implements IEventHandler { if(!GameApplication.serverProperties.isArenaCross()){ return; } + // 如果是服务器启动,查redis中世界等级即可 + if (isServerStart) { + int globalWorldLevelCache = getGlobalWorldLevelCache(); + if (globalWorldLevelCache > 0){ + return; + } + } SMServerArenaSetting setting = STableManager.getConfig(SMServerArenaSetting.class).get(1); int rankEndLine = setting.getWorldLevLimit(); double sum=0; 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 06aa56215..7a38f3386 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,7 +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; + private static final long LIVE_TIME = 2 * 60 * 60 * 1000L; public static void addUser(User user) { userMap.put(user.getId(), user); @@ -74,6 +74,7 @@ public class UserManager { userMapPutTime.remove(integerUserEntry.getId()); } } + LOGGER.info("checkOffline left count={}", userMap.keySet().size()); }catch (Exception e){ LOGGER.error("Exception离线清除逻辑err={}",e.toString()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index 3402be35e..88ce8893e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -209,7 +209,7 @@ public class MinuteTask extends Thread { //保证每分钟线程 try { // 计算世界等级 - GlobleSystemLogic.getInstence().calCulRank(); + GlobleSystemLogic.getInstence().calCulRank(false); //玉虚论道重置 if(Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == 2){ CrossYuxulundaoLogic.getInstance().initRank();