From 1bf25acd2bbc00bda4e82cb2530beaa30094cac8 Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Thu, 17 Apr 2025 02:45:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8B=B1=E9=9B=84=E6=8E=92?= =?UTF-8?q?=E8=A1=8C=E6=A6=9C=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 | 9 +++++++++ .../logic/activity/HeroForceRankActivity.java | 18 +++++++++++++++++- .../ljsd/jieling/logic/player/PlayerLogic.java | 8 ++++++++ .../logic/rank/rankImpl/NewHeroForceRank.java | 2 +- 4 files changed, 35 insertions(+), 2 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 d5e8b17..0df0608 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 @@ -13,6 +13,7 @@ public class PlayerInfoCache { private int sex; private long offLineTime;// 离线时间 private int likeNums;//竞技场被点赞数 + private int maxHeroId; public String getName() { return name; @@ -110,4 +111,12 @@ public class PlayerInfoCache { this.likeNums = likeNums; } + public int getMaxHeroId() { + return maxHeroId; + } + + public void setMaxHeroId(int maxHeroId) { + this.maxHeroId = maxHeroId; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroForceRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroForceRankActivity.java index ba1c924..8241f90 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroForceRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroForceRankActivity.java @@ -2,12 +2,15 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.activity.event.*; import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.HeroManager; +import com.ljsd.jieling.logic.dao.PlayerInfoCache; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; @@ -83,14 +86,27 @@ class HeroForceRankActivity extends RankActivity { Map heroMap = heroManager.getHeroMap(); int maxForce = 0; String heroId = ""; + int templateId = 0; for(Hero hero: heroMap.values()){ int _force = HeroLogic.getInstance().calHeoForce(user, hero, 0); if (_force > maxForce){ maxForce = _force; heroId = hero.getId(); + templateId = hero.getTemplateId(); + } + } + //最强战力英雄id变了 + if(heroManager.getMaxForceHero() == null || !heroManager.getMaxForceHero().equals(heroId)){ + heroManager.setMaxForceHero(heroId); + PlayerInfoCache playerInfoCache = UserManager.getPlayerInfoCacheWithRedis(user.getId()); + if(playerInfoCache != null){ + if(templateId > 0 && templateId != playerInfoCache.getMaxHeroId()){ + //最强英雄id变了,更新redis缓存中的最强英雄id + playerInfoCache.setMaxHeroId(templateId); + RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(user.getId()), playerInfoCache); + } } } - heroManager.setMaxForceHero(heroId); heroManager.setMaxHeroForce(maxForce); } 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 924dddf..1c1051b 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 @@ -1320,6 +1320,13 @@ public class PlayerLogic { cache.setOffLineTime(playerInfoManager.getLoginTime()); //仅每次登录同步,不用实时同步 cache.setLikeNums(user.getArenaManager().getLikeNums()); + String maxForceHero = user.getHeroManager().getMaxForceHero(); + if(maxForceHero!= null){ + Hero hero = user.getHeroManager().getHero(maxForceHero); + if(hero!= null && hero.getTemplateId() != cache.getMaxHeroId()){ + cache.setMaxHeroId(hero.getTemplateId()); + } + } RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(user.getId()), cache); //同步到内存中 UserManager.updatePlayerInfoCache(cache); @@ -1345,6 +1352,7 @@ public class PlayerLogic { cache.setMaxForce(playerInfoManager.getMaxForce()); cache.setOffLineTime(playerInfoManager.getLoginTime()); cache.setLikeNums(0); + cache.setMaxHeroId(10051); 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/NewHeroForceRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/NewHeroForceRank.java index 3bef7a4..894b1eb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/NewHeroForceRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/NewHeroForceRank.java @@ -60,7 +60,7 @@ public class NewHeroForceRank extends AbstractRank { // oneUserRank.setHeroStar(hero.getStar()); // } //英雄信息不展示,设置默认值 - oneUserRank.setHeroTemplateId(10001); + oneUserRank.setHeroTemplateId(everyUser.getMaxHeroId()); oneUserRank.setHeroLevel(200); oneUserRank.setHeroStar(10); builder.addRanks(oneUserRank);