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();