From 940625d330e44809b471d29e6ced5ced67d2ec26 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 25 May 2020 14:42:55 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=BD=A6=E8=BF=9F=E6=96=97=E6=B3=95?= =?UTF-8?q?=E3=80=91=E6=B2=A1=E6=9C=89=E6=94=B6=E5=88=B0=E5=89=8D=E5=85=AC?= =?UTF-8?q?=E4=BC=9A=E7=9A=84=E6=8E=92=E8=A1=8C=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/core/function/CarDelayFunction.java | 13 ++++++++++++- .../java/com/ljsd/jieling/db/redis/RedisKey.java | 2 ++ .../com/ljsd/jieling/logic/family/GuildLogic.java | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java index f466c8ae2..74e64b63e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java @@ -26,9 +26,10 @@ public class CarDelayFunction implements FunctionManager { List delKeys = new ArrayList<>(); String key = RedisUtil.getInstence().getKey(RedisKey.CAR_DEALY_RANK, ""); String guildKey = RedisUtil.getInstence().getKey(RedisKey.CAR_DEALY_GUILD_RANK, ""); + String userLevelGuild = RedisUtil.getInstence().getKey(RedisKey.USER_LEVEL_GUILD_INFO, ""); delKeys.add(key); delKeys.add(guildKey); - delKeys.add(guildKey); + delKeys.add(userLevelGuild); Set guildSet = RedisUtil.getInstence().getZset(guildKey, 0, -1); guildSet.forEach(guildId->{ GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(guildId)); @@ -66,6 +67,13 @@ public class CarDelayFunction implements FunctionManager { String guildTitle = SErrorCodeEerverConfig.getI18NMessage("family_fight_rank_familyreward_title"); Set> guildRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.CAR_DEALY_GUILD_RANK, "", 0, -1); rank=0; + Map userLevelGuildMap = RedisUtil.getInstence().getMapValues(RedisKey.USER_LEVEL_GUILD_INFO, "", Integer.class, Integer.class); + Map> usersByGuildId = new HashMap<>(); + userLevelGuildMap.forEach((userId,guildId)->{ + usersByGuildId.putIfAbsent(guildId,new HashSet<>()); + usersByGuildId.get(guildId).add(userId); + }); + for(ZSetOperations.TypedTuple item : guildRangeWithScores){ String value = item.getValue(); @@ -77,6 +85,9 @@ public class CarDelayFunction implements FunctionManager { } rank++; Collection> values = guildInfo.getMembers().values(); + if(userLevelGuildMap.containsKey(guildId)){ + values.add(usersByGuildId.get(guildId)); + } String guildContent = SErrorCodeEerverConfig.getI18NMessage("family_fight_rank_familyreward_txt",new Object[]{rank}); for(Set uids : values){ for(Integer uid:uids){ 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 aae68a4c6..b985ca2ee 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 @@ -262,6 +262,8 @@ public class RedisKey { public final static String CAR_CHALLENGE_RECORD = "CAR_CHALLENGE_RECORD"; //车迟玩法挑战记录 + public final static String USER_LEVEL_GUILD_INFO = "USER_LEVEL_GUILD_INFO"; //车迟玩法挑战记录 + public static Set familyKey = new HashSet<>(); 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 c04f41dd5..cd9fff9be 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 @@ -590,6 +590,7 @@ public class GuildLogic { RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(applyId),cache); AyyncWorker ayyncWorker = new AyyncWorker(targetUser, true, new AynMissionWorker(GameEvent.JOIN_FAMILY)); ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); + RedisUtil.getInstence().removeMapEntrys(RedisKey.USER_LEVEL_GUILD_INFO,"",String.valueOf(applyId)); // targetUser.getUserMissionManager().onGameEvent(targetUser, GameEvent.JOIN_FAMILY); }finally { RedisUtil.getInstence().releaseDistributedLock(RedisKey.OPERATE_FAMILY_APPLY_JOIN,Integer.toString(applyId), Integer.toString(applyId)); @@ -1358,6 +1359,8 @@ public class GuildLogic { //TODO lock all 公会id清零之前调用 //退公会清除数据 补发奖励 sendGuildHelpRewardEmail(user); + int guildId = user.getPlayerInfoManager().getGuildId(); + RedisUtil.getInstence().putMapEntry(RedisKey.USER_LEVEL_GUILD_INFO,"",String.valueOf(user.getId()),guildId); //notify all Family.GuildHelpInfoIndication.Builder build = Family.GuildHelpInfoIndication.newBuilder();