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 0f937f6d7..3cbfd2d90 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 @@ -66,10 +66,18 @@ public class CarDelayFunction implements FunctionManager { AbstractRank personRank = RankContext.getRankEnum(RankEnum.CAR_DEALY_RANK.getType()); AbstractRank guildRank = RankContext.getRankEnum(RankEnum.CAR_DEALY_GUILD_RANK.getType()); int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); + // 跨服加锁 + String lockKey = "SERVER_CAR_DELAY_REWARD_LOCK" + RedisKey.Delimiter_colon + crossGroup; Set> personRangeWithScores; Set> guildRangeWithScores; if (crossGroup > 0){ + boolean lock = RedisUtil.getInstence().lock(lockKey, TimeUtils.ONE_SECOND * 60); + if (!lock) { + //没有拿到锁直接返回 + LOGGER.error("跨服车迟斗法,发奖, key:{} 跨服分组 ={},未获取到锁",lockKey, crossGroup); + return; + } personRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(personRank.getCrossRedisKey(), "", 0, -1, false); guildRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(guildRank.getCrossRedisKey(), "", 0, -1, false); }else { @@ -109,5 +117,6 @@ public class CarDelayFunction implements FunctionManager { } } MongoUtil.getLjsdMongoTemplate().lastUpdate(); + RedisUtil.getInstence().del(lockKey); } }