From 99a9bc9b1e8019d1deede7ec5f7bee94f54c9742 Mon Sep 17 00:00:00 2001 From: duhui Date: Wed, 22 Feb 2023 11:32:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GuildHelpHelpOtherRequestHandler.java | 9 +-- .../family/GuildSendHelpRequestHandler.java | 6 +- .../ljsd/jieling/logic/dao/GuilidManager.java | 17 ++---- .../jieling/logic/dao/root/GuildInfo.java | 14 ++--- .../jieling/logic/family/DeathPathLogic.java | 9 --- .../KickOutGuildHandler.java | 41 ++++++++----- .../UpdateYuanZhuHandler.java | 48 ++++++--------- .../ljsd/jieling/thread/task/MinuteTask.java | 60 ++++++++++--------- 8 files changed, 93 insertions(+), 111 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GuildHelpHelpOtherRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GuildHelpHelpOtherRequestHandler.java index bdbd15e3a..dedd26fe7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GuildHelpHelpOtherRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GuildHelpHelpOtherRequestHandler.java @@ -18,12 +18,13 @@ import com.ljsd.jieling.logic.family.GuildDef; import com.ljsd.jieling.logic.family.GuildLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; -import rpc.protocols.CommonProto; -import rpc.protocols.Family; -import rpc.protocols.MessageTypeProto; import com.ljsd.jieling.util.ItemUtil; import config.SGuildHelpConfig; import manager.STableManager; +import rpc.protocols.CommonProto; +import rpc.protocols.Family; +import rpc.protocols.MessageTypeProto; +import util.TimeUtils; import java.util.HashSet; import java.util.Map; @@ -116,7 +117,7 @@ public class GuildHelpHelpOtherRequestHandler extends BaseHandler 1000 * sGuildHelpConfig.getRecourseCD(); + boolean b = (time - guildMyInfo.getGuildHelpSendTime()) > 1000L * sGuildHelpConfig.getRecourseCD(); if(proto.getSendMessage()&&b){ guildMyInfo.setGuildHelpSendTime(time); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuilidManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuilidManager.java index 9477fd33b..90c02d138 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuilidManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuilidManager.java @@ -20,6 +20,7 @@ import config.SGuildSetting; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.redis.core.ZSetOperations; +import util.TimeUtils; import java.util.*; @@ -39,8 +40,7 @@ public class GuilidManager { } public static GuildInfo getGuildInfo(int guildId){ - GuildInfo mapEntry = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", Integer.toString(guildId), GuildInfo.class); - return mapEntry; + return RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", Integer.toString(guildId), GuildInfo.class); } public static GuildInfo getGuildInfoByName(String guildName){ @@ -48,8 +48,7 @@ public class GuilidManager { if (guildId == null || guildId.isEmpty()) { return null; } - GuildInfo guildInfo = getGuildInfo(Integer.parseInt(guildId)); - return guildInfo; + return getGuildInfo(Integer.parseInt(guildId)); } public static Map getAllGuildInfos(){ @@ -133,23 +132,15 @@ public class GuilidManager { } public static void init() throws Exception { -// List guildLogs = MongoUtil.getInstence().getMyMongoTemplate().findAll(GuildLog._COLLECTION_NAME, GuildLog.class); -// for(GuildLog guildLog : guildLogs){ -// if(!guildLogInfoMap.containsKey(guildLog.getGuildId())){ -// guildLogInfoMap.put(guildLog.getGuildId(),new ArrayList<>()); -// } -// guildLogInfoMap.get(guildLog.getGuildId()).add(guildLog); -// } Map beansOfType = ConfigurableApplicationContextManager.getBeansOfType(BaseCrossHandler.class); for (BaseCrossHandler baseBehavior : beansOfType.values()) { baseCrossHandlerHashMap.put(baseBehavior.getOpsType(), baseBehavior); } - } public static void checkNeedReleaseGuild() throws Exception { - int now = (int)(System.currentTimeMillis()/1000); + int now = TimeUtils.nowInt(); int round=0; boolean needContinue = true; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java index 3dbbf5585..b51438c7a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java @@ -2,13 +2,13 @@ package com.ljsd.jieling.logic.dao.root; import com.ljsd.GameApplication; import com.ljsd.common.mogodb.MongoBase; -import com.ljsd.jieling.logic.family.GuildLogic; -import rpc.protocols.Family; -import rpc.protocols.MessageTypeProto; -import config.SGuildSetting; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.logic.family.GuildLogic; +import config.SGuildSetting; +import rpc.protocols.Family; +import rpc.protocols.MessageTypeProto; import util.MathUtils; import java.util.*; @@ -79,10 +79,8 @@ public class GuildInfo extends MongoBase { this.id = ((Long)RedisUtil.getInstence().increment(RedisKey.FAMILY_ID)).intValue(); this.name = name; this.announce = announce; - members = new ConcurrentHashMap(); - if(!members.containsKey(GlobalsDef.CHAIRMAN)){ - members.put(GlobalsDef.CHAIRMAN,new HashSet<>()); - } + members = new ConcurrentHashMap<>(); + members.put(GlobalsDef.CHAIRMAN, new HashSet<>()); members.get(GlobalsDef.CHAIRMAN).add(creator); this.createTime = System.currentTimeMillis(); this.init(id,""); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java index c483f7e23..8469db3fc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java @@ -637,15 +637,6 @@ public class DeathPathLogic { // 删除rediskey String pattern = serverId+":DEATH_PATH.*"; RedisUtil.getInstence().delVague(RedisKey.DEATH_PATH_DELETE,pattern); - - // 旧数据兼容,只执行一次 - String one = (String) RedisUtil.getInstence().get(serverId + RedisKey.DEATH_PATH_DELETE_ONE); - if (one == null){ - Set dimKey = RedisUtil.getInstence().getDimKey(serverId + ":DEATH_PATH*", -1); - String[] keys = dimKey.toArray(new String[0]); - RedisUtil.getInstence().del(keys); - RedisUtil.getInstence().set(serverId + RedisKey.DEATH_PATH_DELETE_ONE,"1"); - } } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/KickOutGuildHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/KickOutGuildHandler.java index 34074552a..ce5a369ae 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/KickOutGuildHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/KickOutGuildHandler.java @@ -1,18 +1,18 @@ package com.ljsd.jieling.logic.family.GuildCrossHandler; -import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.family.GuildDef; import com.ljsd.jieling.logic.family.GuildLogic; +import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.network.server.ProtocolsManager; -import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.AyncWorkerRunnable; import com.ljsd.jieling.util.AyyncWorker; +import config.SErrorCodeEerverConfig; import org.springframework.stereotype.Component; -import rpc.protocols.CommonProto; -import rpc.protocols.Family; -import rpc.protocols.MessageTypeProto; +import util.TimeUtils; import java.util.Map; @@ -20,7 +20,7 @@ import java.util.Map; public class KickOutGuildHandler extends BaseCrossHandler { @Override public int getOpsType() { - return GuildDef.UPDATE_YUANZHU; + return GuildDef.UPDATE_KICK_OUT; } @Override @@ -28,21 +28,30 @@ public class KickOutGuildHandler extends BaseCrossHandler { AyyncWorker ayyncWorker = new AyyncWorker(thisUser, true, new AyncWorkerRunnable() { @Override public void work(User user) throws Exception { - user.getGuildMyInfo().setGuidHelpInfo(otherUser.getGuildMyInfo().getGuidHelpInfo()); + GuildLogic.OnUserLeveFamily(user); + int guildId = user.getPlayerInfoManager().getGuildId(); + GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId); + user.getPlayerInfoManager().setGuildId(0); + user.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user)); + user.getGuildMyInfo().clearOfLevelGuild(); + + // 发送通知邮件 + String title = SErrorCodeEerverConfig.getI18NMessage("family_kick_title"); + String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("family_kick_txt",new Object[]{guildInfo.getName()},new int[]{0},"#"); + MailLogic.getInstance().sendMail(user.getId(),title,content,"",(int) (TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME); } }); // 更新mongo ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); - // 玩家在线,通知玩家 - ISession sessionByUid = OnlineUserManager.getSessionByUid(thisUser.getId()); - if (sessionByUid != null) { - Family.GuildHelpInfoIndication.Builder build = Family.GuildHelpInfoIndication.newBuilder(); - for (Map.Entry entry : otherUser.getGuildMyInfo().getGuidHelpInfo().entrySet()) { - build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setHadtakenum(otherUser.getGuildMyInfo().getGuidHelpHadTakeInfo().getOrDefault(entry.getKey(), 0)).setNum(entry.getValue())); + } + + private Map clearRedPacketMap(User user){ + Map map = user.getPlayerInfoManager().getWelfareRedPackets(); + for(Map.Entry entry : map.entrySet()){ + if(entry.getValue() != -1){ + entry.setValue(0); } - int guildId = thisUser.getPlayerInfoManager().getGuildId(); - build.setName(otherUser.getPlayerInfoManager().getNickName()).setUid(otherUser.getId()).setPracticeLevel(otherUser.getHeroManager().getPracticeLevel()); - GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication, build.build()); } + return map; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/UpdateYuanZhuHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/UpdateYuanZhuHandler.java index 5fffd0dd2..25684a167 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/UpdateYuanZhuHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildCrossHandler/UpdateYuanZhuHandler.java @@ -1,57 +1,43 @@ package com.ljsd.jieling.logic.family.GuildCrossHandler; -import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.dao.GuilidManager; -import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.family.GuildDef; import com.ljsd.jieling.logic.family.GuildLogic; -import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.network.server.ProtocolsManager; -import com.ljsd.jieling.util.AyncWorkerRunnable; +import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.AyyncWorker; -import config.SErrorCodeEerverConfig; import org.springframework.stereotype.Component; -import util.TimeUtils; +import rpc.protocols.CommonProto; +import rpc.protocols.Family; +import rpc.protocols.MessageTypeProto; import java.util.Map; @Component public class UpdateYuanZhuHandler extends BaseCrossHandler { + @Override public int getOpsType() { - return GuildDef.UPDATE_KICK_OUT; + return GuildDef.UPDATE_YUANZHU; } @Override public void process(User thisUser, User otherUser) { - AyyncWorker ayyncWorker = new AyyncWorker(thisUser, true, new AyncWorkerRunnable() { - @Override - public void work(User user) throws Exception { - GuildLogic.OnUserLeveFamily(user); - int guildId = user.getPlayerInfoManager().getGuildId(); - GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId); - user.getPlayerInfoManager().setGuildId(0); - user.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user)); - user.getGuildMyInfo().clearOfLevelGuild(); - - // 发送通知邮件 - String title = SErrorCodeEerverConfig.getI18NMessage("family_kick_title"); - String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("family_kick_txt",new Object[]{guildInfo.getName()},new int[]{0},"#"); - MailLogic.getInstance().sendMail(user.getId(),title,content,"",(int) (TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME); - } - }); + AyyncWorker ayyncWorker = new AyyncWorker(thisUser, true, user -> user.getGuildMyInfo().setGuidHelpInfo(otherUser.getGuildMyInfo().getGuidHelpInfo())); // 更新mongo ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); - } - - private Map clearRedPacketMap(User user){ - Map map = user.getPlayerInfoManager().getWelfareRedPackets(); - for(Map.Entry entry : map.entrySet()){ - if(entry.getValue() != -1){ - entry.setValue(0); + // 玩家在线,通知玩家 + ISession sessionByUid = OnlineUserManager.getSessionByUid(thisUser.getId()); + if (sessionByUid != null) { + Family.GuildHelpInfoIndication.Builder build = Family.GuildHelpInfoIndication.newBuilder(); + for (Map.Entry entry : otherUser.getGuildMyInfo().getGuidHelpInfo().entrySet()) { + build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setHadtakenum(otherUser.getGuildMyInfo().getGuidHelpHadTakeInfo().getOrDefault(entry.getKey(), 0)).setNum(entry.getValue())); } + int guildId = thisUser.getPlayerInfoManager().getGuildId(); + build.setName(otherUser.getPlayerInfoManager().getNickName()).setUid(otherUser.getId()).setPracticeLevel(otherUser.getHeroManager().getPracticeLevel()); + GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication, build.build()); } - return map; } } 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 1f7d18f07..52841af69 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 @@ -249,34 +249,40 @@ public class MinuteTask extends Thread { // 公会信息处理 Map guildInfoMap = GuilidManager.getAllGuildInfos(); for(Map.Entry guildInfoEntry:guildInfoMap.entrySet()){ - // 公会红包排行处理 - RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false)); - // 公会祭祀处理 - guildInfoEntry.getValue().reSetFete(); - LOGGER.info("{}更新公会祭祀完毕",guildInfoEntry.getValue().getName()); - // 公会援助日志处理 - GuildInfo guildInfo = guildInfoEntry.getValue(); - guildInfo.clearGuildHelpLog(); - GuilidManager.saveOrUpdateGuildInfo(guildInfo); - // 公会援助刷新 - Set sendUids = new HashSet<>(); - guildInfo.getMembers().values().forEach(sendUids::addAll); - for (Integer sendUid : sendUids) { - User target = UserManager.getUserNotCache(sendUid); - if (target == null){ - continue; + try { + // 公会红包排行处理 + RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false)); + LOGGER.info("{}更新公会红包完毕",guildInfoEntry.getValue().getName()); + // 公会祭祀处理 + guildInfoEntry.getValue().reSetFete(); + LOGGER.info("{}更新公会祭祀完毕",guildInfoEntry.getValue().getName()); + // 公会援助日志处理 + GuildInfo guildInfo = guildInfoEntry.getValue(); + guildInfo.clearGuildHelpLog(); + GuilidManager.saveOrUpdateGuildInfo(guildInfo); + LOGGER.info("{}更新公会援助日志完毕",guildInfoEntry.getValue().getName()); + // 公会援助刷新 + Set sendUids = new HashSet<>(); + guildInfo.getMembers().values().forEach(sendUids::addAll); + for (Integer sendUid : sendUids) { + User target = UserManager.getUserNotCache(sendUid); + if (target == null){ + continue; + } + AyyncWorker ayyncWorker = new AyyncWorker(target, true, user -> { + GuildLogic.sendGuildHelpRewardEmail(target); + GuildMyInfo guildMyInfo = target.getGuildMyInfo(); + guildMyInfo.setGuidHelpInfo(new HashMap<>()); + guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>()); + guildMyInfo.setGuildHelpSendTime(0); + guildMyInfo.setGuildHelpReward(false); + guildMyInfo.setGuildHelpTime(0); + LOGGER.info("公会援助刷新uid=>{}", sendUid); + }); + ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); } - AyyncWorker ayyncWorker = new AyyncWorker(target, true, user -> { - GuildLogic.sendGuildHelpRewardEmail(target); - GuildMyInfo guildMyInfo = target.getGuildMyInfo(); - guildMyInfo.setGuidHelpInfo(new HashMap<>()); - guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>()); - guildMyInfo.setGuildHelpSendTime(0); - guildMyInfo.setGuildHelpReward(false); - guildMyInfo.setGuildHelpTime(0); - LOGGER.info("公会援助刷新uid=>{}", sendUid); - }); - ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); + }catch (Exception e){ + e.printStackTrace(); } //入库 MongoUtil.getInstence().lastUpdate();