From f8e47dd12b27a3689e3bbaba1dc39ee414bf6c24 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 27 Jan 2021 16:19:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E6=A3=80=E6=B5=8B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/thread/ThreadManager.java | 6 +++ .../ljsd/jieling/thread/task/GeneralTask.java | 2 +- ...ldchangeTask.java => GuildChangeTask.java} | 46 ++++++++++++++++++- .../thread/task/GuildCheckOfflineTask.java | 3 +- .../ljsd/jieling/thread/task/MinuteTask.java | 3 ++ 5 files changed, 56 insertions(+), 4 deletions(-) rename serverlogic/src/main/java/com/ljsd/jieling/thread/task/{GuildchangeTask.java => GuildChangeTask.java} (62%) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java index afec401bb..2378aec38 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java @@ -34,6 +34,7 @@ public class ThreadManager implements IManager { private static Set> scheduledFutureSets = new HashSet<>(); private static volatile ScheduledThreadPoolExecutor scheduledExecutor; //管理task + private static volatile ThreadPoolExecutor executor;//用于异步处理服务器流程 例如发奖 处理每日公会 这种任务 public void init() { @@ -52,6 +53,7 @@ public class ThreadManager implements IManager { scheduledExecutor = new ScheduledThreadPoolExecutor(8, new ScheduleThreadFactory()); scheduledExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); scheduledExecutor.setContinueExistingPeriodicTasksAfterShutdownPolicy(false); + executor = (ThreadPoolExecutor)Executors.newFixedThreadPool(4); go(); } @@ -151,4 +153,8 @@ public class ThreadManager implements IManager { go(); } + public static void commitGeneralTask(GeneralTask task){ + executor.execute(task); + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GeneralTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GeneralTask.java index 5dd5907fe..852730c30 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GeneralTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GeneralTask.java @@ -1,7 +1,7 @@ package com.ljsd.jieling.thread.task; @FunctionalInterface -public interface GeneralTask { +public interface GeneralTask extends Runnable{ void run(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildchangeTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildChangeTask.java similarity index 62% rename from serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildchangeTask.java rename to serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildChangeTask.java index 03f50fca2..9669b0bf0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildchangeTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildChangeTask.java @@ -1,10 +1,13 @@ package com.ljsd.jieling.thread.task; import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.GuilidManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mail.MailLogic; +import config.SErrorCodeEerverConfig; import util.TimeUtils; import java.util.Iterator; @@ -17,12 +20,12 @@ import java.util.concurrent.TimeUnit; * @date 2021/1/27 * @discribe */ -public class GuildchangeTask implements GeneralTask{ +public class GuildChangeTask implements GeneralTask{ private Set chairmanChangeGuilds; private Set releaseGuilds; - public GuildchangeTask(Set chairmanChangeGuilds, Set releaseGuilds) { + public GuildChangeTask(Set chairmanChangeGuilds, Set releaseGuilds) { this.chairmanChangeGuilds = chairmanChangeGuilds; this.releaseGuilds = releaseGuilds; } @@ -58,6 +61,45 @@ public class GuildchangeTask implements GeneralTask{ guildInfo.addMembers(GlobalsDef.CHAIRMAN,compareValue.getUid()); guildInfo.removeMember(type,compareValue.getUid()); guildInfo.addMembers(GlobalsDef.MEMBER,chairMan); + try { + User user = UserManager.getUser(compareValue.getUid()); + //发送邮件 GuildLeaderPass_mail_title + String title = SErrorCodeEerverConfig.getI18NMessage("GuildLeaderPass_mail_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("GuildLeaderPass_mail_content", new Object[]{user.getPlayerInfoManager().getNickName()}); + sendMailToGuild(guildInfo,title,content,(int)(now/1000)); + } catch (Exception e) { + e.printStackTrace(); + } + + } + } + } + if(releaseGuilds!=null&&releaseGuilds.size()>0){ + Iterator iterator = releaseGuilds.iterator(); + while(iterator.hasNext()){ + int next = iterator.next(); + try { + //发邮件 + GuildInfo guildInfo = guildInfoMap.get(next); + String title = SErrorCodeEerverConfig.getI18NMessage("GuildDismiss_mail_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("GuildDismiss_mail_content", new Object[]{guildInfo.getName()}); + sendMailToGuild(guildInfo,title,content,(int)(now/1000)); + GuilidManager.removeGuildInfo(guildInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + private void sendMailToGuild(GuildInfo info,String title,String content,int sendTime){ + Map> members = info.getMembers(); + for(Map.Entry> entry:members.entrySet()){ + for(int uid:entry.getValue()){ + try { + MailLogic.getInstance().sendMail(uid,title,content,"",sendTime, Global.MAIL_EFFECTIVE_TIME); + } catch (Exception e) { + e.printStackTrace(); } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildCheckOfflineTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildCheckOfflineTask.java index f4e918a6c..ba9513df2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildCheckOfflineTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/GuildCheckOfflineTask.java @@ -1,7 +1,6 @@ package com.ljsd.jieling.thread.task; import com.ljsd.jieling.core.GlobalsDef; -import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.GuilidManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildInfo; @@ -94,5 +93,7 @@ public class GuildCheckOfflineTask implements GeneralTask { } releaseGuilds.add(entry.getKey()); } + + ThreadManager.commitGeneralTask(new GuildChangeTask(chairmanChangeGuilds,releaseGuilds)); } } 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 7d254d865..287337349 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 @@ -38,6 +38,7 @@ import com.ljsd.jieling.logic.question.QuestionLogic; import com.ljsd.jieling.logic.store.BuyGoodsLogic; import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.server.ProtocolsManager; +import com.ljsd.jieling.thread.ThreadManager; import com.ljsd.jieling.util.MessageUtil; import io.netty.util.internal.PlatformDependent; import manager.STableManager; @@ -232,7 +233,9 @@ public class MinuteTask extends Thread { LOGGER.info("DailyOfFiveTask start ..."); + GlobalDataManaager.everTask(0); + ThreadManager.commitGeneralTask(new GuildCheckOfflineTask()); LOGGER.info("DailyOfFiveTask end ..."); } }