From 96b04d6e7187d13ff52aa06086e0330c1430129d Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Thu, 20 Mar 2025 00:29:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=AB=9E=E6=8A=80=E5=9C=BA?= =?UTF-8?q?=E6=8E=92=E8=A1=8C=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/dao/PlayerInfoCache.java | 10 ++- .../ljsd/jieling/logic/arena/ArenaLogic.java | 62 +++++++-------- .../jieling/logic/player/PlayerLogic.java | 3 + .../logic/rank/rankImpl/GuildForceRank.java | 79 +++++++++++++------ 4 files changed, 97 insertions(+), 57 deletions(-) diff --git a/gamecommon/src/main/java/com/ljsd/jieling/logic/dao/PlayerInfoCache.java b/gamecommon/src/main/java/com/ljsd/jieling/logic/dao/PlayerInfoCache.java index cf1c80a..d5e8b17 100644 --- a/gamecommon/src/main/java/com/ljsd/jieling/logic/dao/PlayerInfoCache.java +++ b/gamecommon/src/main/java/com/ljsd/jieling/logic/dao/PlayerInfoCache.java @@ -12,7 +12,7 @@ public class PlayerInfoCache { private int maxForce; private int sex; private long offLineTime;// 离线时间 - + private int likeNums;//竞技场被点赞数 public String getName() { return name; @@ -102,4 +102,12 @@ public class PlayerInfoCache { this.offLineTime = offLineTime; } + public int getLikeNums() { + return likeNums; + } + + public void setLikeNums(int likeNums) { + this.likeNums = likeNums; + } + } 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 faabfb5..0acbda4 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 @@ -507,45 +507,45 @@ public class ArenaLogic { String value = item.getValue(); int score = item.getScore().intValue(); int uid = Integer.parseInt(value); - User user; - try { - user = UserManager.getUser(uid, true); - if (null == user) { - continue; + PlayerInfoCache userInfo = UserManager.getPlayerInfoCacheWithRedisAndSaveMap(uid); + if(userInfo == null){ + User user = UserManager.getUser(uid, true); + if(user != null){ + userInfo = PlayerLogic.getInstance().initPlayerInfoCache(user); } - }catch (Exception e) { + } + if(userInfo == null){ continue; } - - int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.TEAM_ARENA_DEFENSE, false); - if (totalForce == 0) { - continue; - } - List teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(GlobalsDef.TEAM_ARENA_DEFENSE).getListTeamPosHeroInfo(); - if (teamPosHeroInfoList == null) { - teamPosHeroInfoList = new ArrayList<>(); - } - Map heroMap = user.getHeroManager().getHeroMap(); - - List heroTids = new ArrayList<>(teamPosHeroInfoList.size()); - for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList) { - if (!heroMap.containsKey(teamPosHeroInfo.getHeroId())) { - continue; - } - heroTids.add(heroMap.get(teamPosHeroInfo.getHeroId()).getTemplateId()); - } +// int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.TEAM_ARENA_DEFENSE, false); +// if (totalForce == 0) { +// continue; +// } +// List teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(GlobalsDef.TEAM_ARENA_DEFENSE).getListTeamPosHeroInfo(); +// if (teamPosHeroInfoList == null) { +// teamPosHeroInfoList = new ArrayList<>(); +// } +// Map heroMap = user.getHeroManager().getHeroMap(); +// +// List heroTids = new ArrayList<>(teamPosHeroInfoList.size()); +// for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList) { +// if (!heroMap.containsKey(teamPosHeroInfo.getHeroId())) { +// continue; +// } +// heroTids.add(heroMap.get(teamPosHeroInfo.getHeroId()).getTemplateId()); +// } + List heroTids = new ArrayList<>(); CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(heroTids).build(); - PlayerManager playerInfoManager = user.getPlayerInfoManager(); CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder() .setUid(uid) - .setLevel(playerInfoManager.getLevel()) - .setName(playerInfoManager.getNickName()) + .setLevel(userInfo.getLevel()) + .setName(userInfo.getName()) .setScore(score) - .setHead(playerInfoManager.getHead()) + .setHead(userInfo.getHead()) .setRank(++start) - .setLikeNums(user.getArenaManager().getLikeNums()) - .setTotalForce(totalForce) - .setHeadFrame(playerInfoManager.getHeadFrame()) + .setLikeNums(userInfo.getLikeNums()) + .setTotalForce(userInfo.getMaxForce()) + .setHeadFrame(userInfo.getHeadFrame()) .build(); arenaRankMemberInfo.add(CommonProto.ArenaEnemy.newBuilder() .setPersonInfo(personInfoBuild) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index fb5c6a6..924dddf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -1318,6 +1318,8 @@ public class PlayerLogic { cache.setDesignation(playerInfoManager.getDesignation()); cache.setMaxForce(playerInfoManager.getMaxForce()); cache.setOffLineTime(playerInfoManager.getLoginTime()); + //仅每次登录同步,不用实时同步 + cache.setLikeNums(user.getArenaManager().getLikeNums()); RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(user.getId()), cache); //同步到内存中 UserManager.updatePlayerInfoCache(cache); @@ -1342,6 +1344,7 @@ public class PlayerLogic { cache.setDesignation(playerInfoManager.getDesignation()); cache.setMaxForce(playerInfoManager.getMaxForce()); cache.setOffLineTime(playerInfoManager.getLoginTime()); + cache.setLikeNums(0); RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(user.getId()), cache); //同步到内存中 UserManager.updatePlayerInfoCache(cache); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java index 53193cb..079d80e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java @@ -4,9 +4,11 @@ import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.PlayerInfoCache; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.PlayerInfoProto; @@ -47,17 +49,26 @@ public class GuildForceRank extends AbstractRank { if(guildInfo != null) { Set chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN); int chairManId = chairMan.iterator().next(); - User user = UserManager.getUser(chairManId); - CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() - .setUid(user.getId()) - .setUserName(user.getPlayerInfoManager().getNickName()) - .setLevel(user.getPlayerInfoManager().getLevel()) - .setHead(user.getPlayerInfoManager().getHead()) - .setHeadFrame(user.getPlayerInfoManager().getHeadFrame()) - .setForce(user.getPlayerInfoManager().getMaxForce()) - .setSex(user.getPlayerInfoManager().getSex()) - .setGuildName(guildInfo.getName()) - .setRankInfo(everyRankInfo); + CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder(); + PlayerInfoCache everyUser = UserManager.getPlayerInfoCacheWithRedisAndSaveMap(chairManId); + if(everyUser == null){ + User user = UserManager.getUser(chairManId, true); + if(user != null){ + everyUser = PlayerLogic.getInstance().initPlayerInfoCache(user); + } + } + if(everyUser == null){ + return; + } + everyRank.setUid(chairManId) + .setUserName(everyUser.getName()) + .setHead(everyUser.getHead()) + .setHeadFrame(everyUser.getHeadFrame()) + .setLevel(everyUser.getLevel()) + .setRankInfo(everyRankInfo) + .setForce(everyUser.getMaxForce()) + .setSex(everyUser.getSex()) + .setGuildName(guildInfo.getName()); builder.addRanks(everyRank); } } @@ -109,15 +120,24 @@ public class GuildForceRank extends AbstractRank { Set chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN); int chairManId = chairMan.iterator().next(); - User user = UserManager.getUser(chairManId); + PlayerInfoCache everyUser = UserManager.getPlayerInfoCacheWithRedisAndSaveMap(chairManId); + if(everyUser == null){ + User user = UserManager.getUser(chairManId, true); + if(user != null){ + everyUser = PlayerLogic.getInstance().initPlayerInfoCache(user); + } + } + if(everyUser == null){ + return everyRank; + } everyRank.setUid(chairManId) - .setUserName(user.getPlayerInfoManager().getNickName()) - .setHead(user.getPlayerInfoManager().getHead()) - .setHeadFrame(user.getPlayerInfoManager().getHeadFrame()) - .setLevel(user.getPlayerInfoManager().getLevel()) + .setUserName(everyUser.getName()) + .setHead(everyUser.getHead()) + .setHeadFrame(everyUser.getHeadFrame()) + .setLevel(everyUser.getLevel()) .setRankInfo(everyRankInfo) - .setForce(user.getPlayerInfoManager().getMaxForce()) - .setSex(user.getPlayerInfoManager().getSex()) + .setForce(everyUser.getMaxForce()) + .setSex(everyUser.getSex()) .setGuildName(guildInfo.getName()); return everyRank; } @@ -148,15 +168,24 @@ public class GuildForceRank extends AbstractRank { Set chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN); int chairManId = chairMan.iterator().next(); - User user = UserManager.getUser(chairManId); + PlayerInfoCache everyUser = UserManager.getPlayerInfoCacheWithRedisAndSaveMap(chairManId); + if(everyUser == null){ + User user = UserManager.getUser(chairManId, true); + if(user != null){ + everyUser = PlayerLogic.getInstance().initPlayerInfoCache(user); + } + } + if(everyUser == null){ + return everyRank; + } everyRank.setUid(chairManId) - .setUserName(user.getPlayerInfoManager().getNickName()) - .setHead(user.getPlayerInfoManager().getHead()) - .setHeadFrame(user.getPlayerInfoManager().getHeadFrame()) - .setLevel(user.getPlayerInfoManager().getLevel()) + .setUserName(everyUser.getName()) + .setHead(everyUser.getHead()) + .setHeadFrame(everyUser.getHeadFrame()) + .setLevel(everyUser.getLevel()) .setRankInfo(everyRankInfo) - .setForce(user.getPlayerInfoManager().getMaxForce()) - .setSex(user.getPlayerInfoManager().getSex()) + .setForce(everyUser.getMaxForce()) + .setSex(everyUser.getSex()) .setGuildName(guildInfo.getName()); return everyRank; }