From 04d0c57a1ae0c48b8bdda1f7789dc194eb4b63ea Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Thu, 21 Apr 2022 18:35:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=95=A3=E5=85=AC=E4=BC=9Abug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/db/redis/RedisKey.java | 2 +- .../com/ljsd/jieling/db/redis/RedisUtil.java | 72 ++++++++++--------- .../ljsd/jieling/logic/dao/GuilidManager.java | 10 +-- .../jieling/logic/family/GuildFightLogic.java | 2 +- .../ljsd/jieling/logic/family/GuildLogic.java | 2 - 5 files changed, 47 insertions(+), 41 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 1a81d4401..593a908bd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -146,7 +146,7 @@ public class RedisKey { public static final String FAMILY_NAMES = "FAMILY_NAMES"; public static final String FAMILY_LOGS = "FAMILY_LOGS"; - + public static final String GUILD_RELEASE = "guild-release"; public static final String FAMILY_FIGHT = "FAMILY_FIGHT" ; public static final String FAMILY_ATTACK_BLOOD = "FAMILY_ATTACK_BLOOD"; public static final String FAMILY_FIGHT_RANK = "FAMILY_FIGHT_RANK"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java index 6906c1d4c..4be0be5a1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java @@ -1404,6 +1404,10 @@ public class RedisUtil { return getKey(type,key,true); } + public String getGuildReleaseKey(String type,int serverId){ + return serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon; + } + /** * 获取key * @param type @@ -1412,57 +1416,61 @@ public class RedisUtil { * 本服: true 跨服: false * @return */ - public String getKey(String type,String key,boolean judge){ + public String getKey(String type,String key,boolean judge) { String result = null; if (!judge) { result = type + RedisKey.Delimiter_colon + key; - } - else if ( - RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) || - RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) || - RedisKey.FAMILY_RED_PACKAGE.equals(type) || "red_remain_list".equals(type)|| - "red_already_list".equals(type) || RedisKey.CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM.equals(type) || - RedisKey.SERVER_SPLIT_INFO.equals(type) || RedisKey.FAMILY_LOGS.equals(type) || - RedisKey.SERVER_SPLIT_MAIL_INFO.equals(type) || RedisKey.CROSS_ARENA_ROBOT_INFO.equals(type) || - RedisKey.CROSS_SERVICE_ARENA.equals(type) || RedisKey.WORLD_ARENA_RANK_MY_MATH.equals(type) || - RedisKey.WORLD_ARENA_MY_PRON.equals(type) || RedisKey.WORLD_ARENA_RRECORD.equals(type) || - RedisKey.TOKEN.equals(type) || RedisKey.USER_SERVER_INFO.equals(type) || - RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type) || - RedisKey.CROSS_SERVER_GROUP.equals(type) + } else if ( + RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) || + RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) || + RedisKey.FAMILY_RED_PACKAGE.equals(type) || "red_remain_list".equals(type) || + RedisKey.FAMILY_RED_PACKAGE_INCRE_ID.equals(type) || RedisKey.GUILD_FORCE_RANK.equals(type) || + "red_already_list".equals(type) || RedisKey.CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM.equals(type) || + RedisKey.SERVER_SPLIT_INFO.equals(type) || RedisKey.FAMILY_LOGS.equals(type) || + RedisKey.SERVER_SPLIT_MAIL_INFO.equals(type) || RedisKey.CROSS_ARENA_ROBOT_INFO.equals(type) || + RedisKey.CROSS_SERVICE_ARENA.equals(type) || RedisKey.WORLD_ARENA_RANK_MY_MATH.equals(type) || + RedisKey.WORLD_ARENA_MY_PRON.equals(type) || RedisKey.WORLD_ARENA_RRECORD.equals(type) || + RedisKey.TOKEN.equals(type) || RedisKey.USER_SERVER_INFO.equals(type) || + RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type) || + RedisKey.CROSS_SERVER_GROUP.equals(type) ) { result = type + RedisKey.Delimiter_colon + key; - } - else if (!RedisKey.newAreaCacChe.contains(type) && !RedisKey.rankCacChe.contains(type)) { + } else if (!RedisKey.newAreaCacChe.contains(type) && !RedisKey.rankCacChe.contains(type)) { if (key.length() == 8) { Integer serverId = RedisUtil.getInstence().getObject(RedisKey.CUser_ServerId_Key, key, Integer.class, GlobalsDef.REDIS_OVER_TIME_DAY * 10); if (serverId != null && !AreaManager.getInstance().checkServerIdAllowPermit(serverId)) { result = serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key; - } - else if (serverId != null){ + } else if (serverId != null) { result = serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key; } } } - if(RedisKey.PLAYER_INFO_CACHE.equals(type) ||RedisKey.FAMILY_INFO.equals(type)|| - RedisKey.PIDGIDTEMP.equals(type)||RedisKey.SERVER_WORLDLEVE_INFO.equals(type)|| - RedisKey.SERVER_SPLIT_INFO.equals(type)|| RedisKey.GUILD_RED_PACKAGE_RANK.equals(type) || - RedisKey.SERVER_SPLIT_MAIL_INFO.equals(type)||RedisKey.CROSS_ARENA_ROBOT_INFO.equals(type)|| - RedisKey.CROSS_SERVICE_ARENA.equals(type)||RedisKey.WORLD_ARENA_RANK_MY_MATH.equals(type)|| - RedisKey.WORLD_ARENA_MY_PRON.equals(type)||RedisKey.WORLD_ARENA_RRECORD.equals(type)|| - RedisKey.CROSS_YUXULUNDAO_RANK.equals(type)||RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO.equals(type)|| - RedisKey.CROSS_YUXULUNDAO_RECORD.equals(type)|| RedisKey.CROSS_YUXULUNDAO_RANK_PERSON.equals(type) - ||RedisKey.CROSS_LINGMAISECRET_INFO.equals(type)||RedisKey.CROSS_LINGMAISECRET_RECORD.equals(type) - ||RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type) - ) { + if (RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) || + RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) || + RedisKey.SERVER_SPLIT_INFO.equals(type) || RedisKey.GUILD_RED_PACKAGE_RANK.equals(type) || + RedisKey.SERVER_SPLIT_MAIL_INFO.equals(type) || RedisKey.CROSS_ARENA_ROBOT_INFO.equals(type) || + RedisKey.CROSS_SERVICE_ARENA.equals(type) || RedisKey.WORLD_ARENA_RANK_MY_MATH.equals(type) || + RedisKey.WORLD_ARENA_MY_PRON.equals(type) || RedisKey.WORLD_ARENA_RRECORD.equals(type) || + RedisKey.CROSS_YUXULUNDAO_RANK.equals(type) || RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO.equals(type) || + RedisKey.CROSS_YUXULUNDAO_RECORD.equals(type) || RedisKey.CROSS_YUXULUNDAO_RANK_PERSON.equals(type) + || RedisKey.CROSS_LINGMAISECRET_INFO.equals(type) || RedisKey.CROSS_LINGMAISECRET_RECORD.equals(type) + || RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type) + ) { return type + RedisKey.Delimiter_colon + key; } - if (result == null){ - result = AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key; + if (result == null) { +// if (RedisKey.GUILD_RELEASE.equals(type)) { +// RedisUtil.getInstence().get(RedisKey.GUILD_SERVERID + RedisKey.Delimiter_colon + ) +// result = + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key; +// }else { + result = AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key; +// } } // 保存需要清理的key saveRemoveKeyHandler(result); - return result;} + return result; + } /** * 保存需要清理的key 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 8cb6ab1ee..f5dcd0dfc 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 @@ -79,7 +79,6 @@ public class GuilidManager { RedisUtil.getInstence().removeMapEntrys(RedisKey.FAMILY_INFO, "", String.valueOf(guildId)); RedisUtil.getInstence().removeMapEntrys(RedisKey.FAMILY_NAMES, "", guildInfo.getName()); RedisUtil.getInstence().removeMapEntrys(RedisKey.FAMILY_LOGS, "", String.valueOf(guildId)); - MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guildInfo.getServerId()); otherMonogTemplate.remove(new BasicQuery(new BasicDBObject("_id",guildId)),"guildInfo"); otherMonogTemplate.remove(new BasicQuery(new BasicDBObject("guildId",guildId)),"guildLog"); @@ -150,9 +149,9 @@ public class GuilidManager { int round=0; boolean needContinue = true; - String key = RedisUtil.getInstence().getKey("guild-release", ""); + String key = RedisUtil.getInstence().getKey(RedisKey.GUILD_RELEASE, ""); while (needContinue){ - Set> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetRangeWithScores("guild-release", "", round*5, (round+1)*5); + Set> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetRangeWithScores(RedisKey.GUILD_RELEASE, "", round*5, (round+1)*5); if(zsetreverseRangeWithScores == null || zsetreverseRangeWithScores.isEmpty()){ return; } @@ -175,6 +174,8 @@ public class GuilidManager { RedisUtil.getInstence().zsetRemoveOne(key,value); continue; } + String delKey = RedisUtil.getInstence().getKey(RedisKey.GUILD_SERVERID, Integer.toString(guildInfo.getId())); + RedisUtil.getInstence().del(delKey); GuildLogic.releaseGuild(guildInfo); // 解散公会 CrossDeathPathLogic.removeCrossGuild(Integer.parseInt(value)); @@ -202,11 +203,10 @@ public class GuilidManager { } public static void addGuildToRelease(GuildInfo guildInfo) { - String key = RedisUtil.getInstence().getKey("guild-release", ""); + String key = RedisUtil.getInstence().getGuildReleaseKey(RedisKey.GUILD_RELEASE, guildInfo.getServerId()); int levelTime = guildInfo.getLevelTime(); if(levelTime == 0){ // 解散公会 - CrossDeathPathLogic.removeCrossGuild(guildInfo.getId()); RedisUtil.getInstence().zsetRemoveOne(key,Integer.toString(guildInfo.getId())); return; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java index 626831dab..028febe70 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java @@ -274,7 +274,7 @@ public class GuildFightLogic { SGuildSetting guildSetting = sGuildSetting; for (Map.Entry guildInfoMapEntry : GuilidManager.getAllGuildInfos().entrySet()) { Integer gid = guildInfoMapEntry.getKey(); - if(redisUtil.getZSetScore("guild-release","",String.valueOf(gid))>0){ + if(redisUtil.getZSetScore(RedisKey.GUILD_RELEASE,"",String.valueOf(gid))>0){ continue; } Map configMap = STableManager.getConfig(SGuildLevelConfig.class); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index 8a0687bd0..3cfb3d0c4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -796,8 +796,6 @@ public class GuildLogic { GuilidManager.saveOrUpdateGuildInfo(guildInfo); sendFamilyBaseUpdateIndication(guildInfo); GuilidManager.addGuildToRelease(guildInfo); - String key = RedisUtil.getInstence().getKey(RedisKey.GUILD_SERVERID, Integer.toString(guildInfo.getId())); - RedisUtil.getInstence().del(key); MessageUtil.sendMessage(session,1,msgId,null,true); }