From cd046d2d43513e4b547f02c0bc54b6d38804659b Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Sun, 21 Jun 2020 02:21:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BC=8F=E5=AD=98=E5=92=8C?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/common/mogodb/LjsdMongoTemplate.java | 1 + .../ljsd/jieling/core/HandlerLogicThread.java | 5 ++ .../com/ljsd/jieling/db/mongo/MongoUtil.java | 4 +- .../logic/activity/AbstractActivity.java | 2 +- .../ljsd/jieling/thread/task/MinuteTask.java | 60 +++++++++++-------- 5 files changed, 43 insertions(+), 29 deletions(-) diff --git a/common/src/main/java/com/ljsd/common/mogodb/LjsdMongoTemplate.java b/common/src/main/java/com/ljsd/common/mogodb/LjsdMongoTemplate.java index edc410946..7cd53f4a5 100644 --- a/common/src/main/java/com/ljsd/common/mogodb/LjsdMongoTemplate.java +++ b/common/src/main/java/com/ljsd/common/mogodb/LjsdMongoTemplate.java @@ -69,6 +69,7 @@ public class LjsdMongoTemplate { coll.update(searchQuery, dbObject); } + //非用户线程记得更新玩家数据 public void lastUpdate() throws Exception { MongoUpdateCacheThreadLocal.update(this); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java index 2c4e9c8f5..4cabe8864 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java @@ -112,11 +112,16 @@ public class HandlerLogicThread extends Thread{ public void doWork(){ try { AyyncWorker ayyncWorker =null; + boolean hasAsyncWorker =false; while ( (ayyncWorker = ayyncWorkerConcurrentLinkedQueue.poll())!=null){ + hasAsyncWorker=true; ayyncWorker.work(ayyncWorker.getUser()); } PacketNetData packetNetData = handlerLinkedQueue.poll(); if(packetNetData == null){ + if(hasAsyncWorker){ + MongoUtil.getInstence().lastUpdate(); + } Thread.sleep(2); return; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java index e0def7e6a..6aaad4403 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java @@ -219,8 +219,8 @@ public class MongoUtil { } else { if (value instanceof JsonObject && o2.get(key) instanceof JsonObject) { if (!equill((JsonObject) value, (JsonObject) o2.get(key), builder, builder2)) { -// builder.append("type111111:o1 = [" + o1 + "]\r\n"); -// builder2.append( "type111111:o2 = [" + o2 + "]\r\n"); + builder.append("type111111:o1 = [" + o1 + "]\r\n"); + builder2.append( "type111111:o2 = [" + o2 + "]\r\n"); is = false; } } else { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index c75bb46ab..5d433fc64 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -339,7 +339,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { public void setOpenState(User user,int openState){ ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); if(activityMission != null){ - activityMission.setActivityState(openState); + activityMission.setOpenType(openState); Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),id,openState)); } 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 2ee257f62..c43e7924b 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 @@ -145,36 +145,44 @@ public class MinuteTask extends Thread { int minute = calendar.get(Calendar.MINUTE); if(hour == 5 && minute ==0){ - Map guildInfoMap = GuilidManager.guildInfoMap; - for(Map.Entry guildInfoEntry:guildInfoMap.entrySet()){ - RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false)); - guildInfoEntry.getValue().reSetFete(); + //保证每分钟线程 + try { + Map guildInfoMap = GuilidManager.guildInfoMap; + for(Map.Entry guildInfoEntry:guildInfoMap.entrySet()){ + RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false)); + guildInfoEntry.getValue().reSetFete(); - SimpleTransaction transaction = SimpleTransaction.current(); - GuildInfo guildInfo = guildInfoEntry.getValue(); - Set sendUids = new HashSet<>(); - for (Set items : guildInfo.getMembers().values()) { - sendUids.addAll(items); + SimpleTransaction transaction = SimpleTransaction.current(); + GuildInfo guildInfo = guildInfoEntry.getValue(); + Set sendUids = new HashSet<>(); + for (Set items : guildInfo.getMembers().values()) { + sendUids.addAll(items); + } + Lockeys.getLockeys().lock("guild",sendUids); + guildInfo.clearGuildHelpLog(); + + //统一清除 + for (Integer sendUid : sendUids) { + User target = UserManager.getUser(sendUid); + GuildLogic.sendGuildHelpRewardEmail(target); + GuildMyInfo guildMyInfo = target.getGuildMyInfo(); + guildMyInfo.setGuidHelpInfo(new HashMap<>()); + guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>()); + guildMyInfo.setGuildHelpSendTime(0); + guildMyInfo.setGuildHelpReward(false); + guildMyInfo.setGuildHelpTime(0); + } + SimpleTransaction.remove(); + //处理公会援助信息 + + //入库 + MongoUtil.getInstence().lastUpdate(); } - Lockeys.getLockeys().lock("guild",sendUids); - guildInfo.clearGuildHelpLog(); - - //统一清除 - for (Integer sendUid : sendUids) { - User target = UserManager.getUser(sendUid); - GuildLogic.sendGuildHelpRewardEmail(target); - GuildMyInfo guildMyInfo = target.getGuildMyInfo(); - guildMyInfo.setGuidHelpInfo(new HashMap<>()); - guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>()); - guildMyInfo.setGuildHelpSendTime(0); - guildMyInfo.setGuildHelpReward(false); - guildMyInfo.setGuildHelpTime(0); - } - - SimpleTransaction.remove(); - //处理公会援助信息 + }catch (Exception e){ + LOGGER.error("Exception everyFiveTask" ); } + LOGGER.info("DailyOfFiveTask start ..."); GlobalDataManaager.everTask(5); LOGGER.info("DailyOfFiveTask end ...");