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 1768cf42e..da80ecfd5 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 @@ -1288,6 +1288,14 @@ public class RedisUtil { return getKey(type,key,true); } + /** + * 获取key + * @param type + * @param key + * @param judge + * 本服: true 跨服: false + * @return + */ public String getKey(String type,String key,boolean judge){ if (!judge){ return type + RedisKey.Delimiter_colon + key; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java index a83d33693..a86dce064 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java @@ -147,14 +147,22 @@ public class CrossServiceLogic { return arenaOfPlayerManager; } private ArenaOfHeroManager buildArenaOfHeroManager(User user){ + // 编队列表 Map> teams = new HashMap<>(); - List infos = - user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,new ArrayList<>()); - teams.put(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,infos); + // 需要存储的英雄列表 + HashSet set = new HashSet<>(); + // 跨服世界阵编队 + List worldTeam = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,new ArrayList<>()); + teams.put(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,worldTeam); + set.addAll(worldTeam); + // 主线阵容编队 + List firstTeam = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.FORMATION_NORMAL,new ArrayList<>()); + teams.put(GlobalsDef.FORMATION_NORMAL,firstTeam); + set.addAll(firstTeam); // 英雄 Map heroes = new HashMap<>(); Map heroMap = user.getHeroManager().getHeroMap(); - infos.forEach(v->{ + set.forEach(v->{ Hero hero = heroMap.get(v.getHeroId()); heroes.put(v.getHeroId(),buildArenaOfHero(user,hero)); }); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java index 540977509..11b066b14 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java @@ -1,6 +1,8 @@ package com.ljsd.jieling.logic.dao; +import java.util.Objects; + public class TeamPosHeroInfo implements Comparable { private String heroId; private int position; @@ -30,6 +32,18 @@ public class TeamPosHeroInfo implements Comparable { this.position = position; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TeamPosHeroInfo that = (TeamPosHeroInfo) o; + return Objects.equals(heroId, that.heroId); + } + + @Override + public int hashCode() { + return Objects.hash(heroId, position); + } @Override public int compareTo(TeamPosHeroInfo o) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index fd3e2ef08..50e34ae61 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -58,7 +58,12 @@ public abstract class AbstractRank implements IRank { } /** - * 跨服排行数据 + * 获取跨服排行 + * @param uid + * @param rkey + * @param page + * @param rankEndLine + * @return * @throws Exception */ public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception {