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 d4eaa37b3..0761dad2f 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 @@ -205,7 +205,11 @@ public class RedisKey { // 十绝阵挑战人数 public static final String DEATH_PATH_TOTAL_CHALLENGE_COUNT = "DEATH_PATH_TOTAL_CHALLENGE_COUNT"; public static final String DEATH_PATH_DELETE = "DEATH_PATH_DELETE"; - + // 跨服删除锁 + public static final String DEATH_PATH_DELETE_CROSS = "DEATH_PATH_DELETE_CROSS"; + // 兼容,旧数据删除 + public static final String DEATH_PATH_DELETE_ONE = "DEATH_PATH_DELETE_ONE"; + public static final String DEATH_PATH_DELETE_CROSS_ONE = "DEATH_PATH_DELETE_CROSS_ONE"; //问卷调查 public static final String QUESTION_FROMBACK = "QUESTION_FROMBACK"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java index b6bf36f7a..0c738556e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java @@ -187,7 +187,7 @@ public class CrossDeathPathLogic { * @param serverId * @return */ - public Map crossDeathPathReward(int groupId,int serverId) throws IOException { + public Map crossDeathPathReward(int groupId,int serverId) { if(TimeUtils.getHourOfDay()!=0){ return new HashMap<>(1); } @@ -206,10 +206,22 @@ public class CrossDeathPathLogic { } RedisUtil.getInstence().hdel(RedisKey.DEATH_PATH_EVERY_OVER_HASH,String.valueOf(serverId)); - // 删除rediskey - String pattern = "DEATH_PATH.*."+groupId+":.*"; - RedisUtil.getInstence().delVague(RedisKey.DEATH_PATH_DELETE,pattern); + boolean lock = RedisUtil.getInstence().lock(RedisKey.DEATH_PATH_DELETE_CROSS, TimeUtils.ONE_MINUTE * 2); + // 拿到锁的操作删除 + if (lock){ + // 删除rediskey + String pattern = "DEATH_PATH.*."+groupId+":.*"; + RedisUtil.getInstence().delVague(RedisKey.DEATH_PATH_DELETE,pattern); + // 旧数据兼容,只执行一次 + String one = (String) RedisUtil.getInstence().get(groupId+RedisKey.DEATH_PATH_DELETE_CROSS_ONE); + if (one == null){ + Set dimKey = RedisUtil.getInstence().getDimKey("DEATH_PATH*"+groupId+":*", -1); + String[] keys = dimKey.toArray(new String[0]); + RedisUtil.getInstence().del(keys); + RedisUtil.getInstence().set(groupId+RedisKey.DEATH_PATH_DELETE_CROSS_ONE,"1"); + } + } return hashMap; } 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 7a7380a10..a44645e17 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 @@ -648,6 +648,15 @@ 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/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index fd2533432..5ba286953 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 @@ -101,7 +101,7 @@ public class MinuteTask extends Thread { LOGGER.error("Exception::=>{}",e.toString()); } try { - if (TimeUtils.getHourOfDay() == 21 && TimeUtils.getMiunte() == 0){ + if (TimeUtils.getHourOfDay() == 0 && TimeUtils.getMiunte() == 0){ // 竞技场,每日九点刷新 ArenaLogic.getInstance().sendReward(GlobalsDef.ARENA_DAILY_REWARD); }