From 966351e03c83f54b7b39301d142dbcaa745861e2 Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Wed, 23 Jun 2021 18:54:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E6=9C=8D?= 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 | 8 +++++ .../ljsd/jieling/logic/arena/ArenaLogic.java | 31 +++++++++++++++++++ 3 files changed, 41 insertions(+) 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 9de9505ca..644e272c4 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 @@ -323,6 +323,8 @@ public class RedisKey { //跨服机器人信息 public static final String CROSS_ARENA_ROBOT_INFO = "CROSS_ARENA_ROBOT_INFO"; + public static final String WORLD_ARENA_RANK_MY_MATH = "WORLD_ARENA_RANK_MY_MATH";//我匹配到的数据 + public static Set familyKey = new HashSet<>(); 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 93c2c9089..980270b66 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 @@ -212,6 +212,14 @@ public class RedisUtil { return gson.fromJson(source,clazz); } + public T getObject(String key,java.lang.reflect.Type type){ + String source = redisTemplate.opsForValue().get(key); + if(source == null){ + return null; + } + return gson.fromJson(source,type); + } + /** * 获取Object * diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java index 912dc47c9..968c0be28 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java @@ -818,5 +818,36 @@ public class ArenaLogic { return objects; } + /** + * 上层加锁 + */ + public static List randomRank(HashMap integerIntegerHashMap, int uid, int myRank) { + //缓存每次匹配结果 + Set hisRank = RedisUtil.getInstence().getObject( + RedisUtil.getInstence().getKey(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(uid)) + , new TypeToken>() {}.getType()); + List arenaEnemies = new ArrayList<>(); + + TreeSet matchRank; + if (hisRank == null || hisRank.size() == 0) { + //获取匹配对手 + matchRank = getMatchID(myRank==9999?1000:myRank); + } else { + matchRank = new TreeSet<>(hisRank); + } + + matchRank.forEach(rank -> { + if (!integerIntegerHashMap.containsKey(rank)) { + return; + } + CrossArenaEnemy matchInfo = integerIntegerHashMap.get(rank); + matchInfo.setRank(rank); + arenaEnemies.add(matchInfo); + // matchRank.add(rank); + }); + RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(uid), matchRank); + return arenaEnemies; + } + }