From 74276aaacd15f3339754402184046c1d9539601c Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 3 Mar 2023 11:32:16 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=8E=92=E8=A1=8C=E6=A6=9C=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E4=BF=A1=E6=81=AF=E4=BB=8E=E7=BC=93=E5=AD=98=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=202=E3=80=81=E9=83=A8=E5=88=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/NewGeneralAttackHandler.java | 22 ++--- .../ljsd/jieling/logic/hero/HeroLogic.java | 28 +++--- .../logic/rank/rankImpl/AbstractRank.java | 94 ++++++++----------- .../logic/rank/rankImpl/GuildForceRank.java | 13 +-- .../rank/rankImpl/GuildSheJiScoreRank.java | 16 ++-- 5 files changed, 73 insertions(+), 100 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/NewGeneralAttackHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/NewGeneralAttackHandler.java index 3397a5dab..7ab3d3e1a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/NewGeneralAttackHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/NewGeneralAttackHandler.java @@ -2,7 +2,6 @@ package com.ljsd.jieling.handler.activity; import com.google.protobuf.GeneratedMessage; import com.ljsd.fight.FightType; -import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; @@ -68,17 +67,16 @@ public class NewGeneralAttackHandler extends BaseHandler yuxuHeros = new HashMap<>(); - public HeroLogic() { //英雄事件监听 Poster.getPoster().listenEvent(new HeroFiveStarGetEventHandler(), HeroFiveStarGetEvent.class); @@ -77,6 +75,16 @@ public class HeroLogic { this.initYuxuHero(); } + public static class Instance { + public final static HeroLogic instance = new HeroLogic(); + } + + public static HeroLogic getInstance() { + return HeroLogic.Instance.instance; + } + + Map yuxuHeros = new HashMap<>(); + public static List transTemplate = new ArrayList<>(); public static List equipSkillPositionTemaplge = new ArrayList<>(6); private static final Map> transTemplateByHeroPropertyName = new HashMap<>(); @@ -237,16 +245,6 @@ public class HeroLogic { return skillSb; } - - public static class Instance { - public final static HeroLogic instance = new HeroLogic(); - } - - public static HeroLogic getInstance() { - return HeroLogic.Instance.instance; - } - - public void random(ISession session, int type) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); @@ -1277,7 +1275,7 @@ public class HeroLogic { user.getTeamPosManager().changeTeamInfo(teamId, heroIds); } } else if (teamId == TeamEnum.TEAM_ARENA_DEFENSE.getTeamId()) { - int teamForce = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false); + int teamForce = calTeamTotalForce(user, teamId, false); //更新竞技场防御编队战力 String key = RedisKey.getKey(RedisKey.AREDEF_TEAM_FORCE_RANK, "", false); RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), teamForce); @@ -3067,7 +3065,7 @@ public class HeroLogic { if (godTreePoolMap != null) { if (helpHero != null) { // 助战 - property = HeroLogic.getInstance().godTreeAddition(godTreePoolMap, jewel.getGodTreeLv(), helpHero.getFourTotalTier()); + property = godTreeAddition(godTreePoolMap, jewel.getGodTreeLv(), helpHero.getFourTotalTier()); combinedAttribute(property, heroAllAttribute); } else { // 自己 @@ -3075,7 +3073,7 @@ public class HeroLogic { // 获取神应等级 int level = Math.min(jewel.getGodTreeLv(), config.getGodHoodMaxlv()); // 获取加成属性 - property = HeroLogic.getInstance().godTreeAddition(godTreePoolMap, level, user.getPlayerInfoManager().getFourChallengeTotal()); + property = godTreeAddition(godTreePoolMap, level, user.getPlayerInfoManager().getFourChallengeTotal()); combinedAttribute(property, heroAllAttribute); } } 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 af030aa51..0a7376056 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 @@ -26,8 +26,8 @@ import java.util.function.BiConsumer; /** * @author lvxinran - * @date 2019/11/26 - * @discribe 排行榜抽象类 + * {@code @date} 2019/11/26 + * {@code @discribe} 排行榜抽象类 * */ public abstract class AbstractRank implements IRank { @@ -65,12 +65,6 @@ 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 { if(rankEndLine==-1){ @@ -134,8 +128,7 @@ public abstract class AbstractRank implements IRank { public String getCrossRedisKey() { int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); - String key = RedisUtil.getInstence().getKey(redisKey, String.valueOf(crossGroup), false); - return key; + return RedisUtil.getInstence().getKey(redisKey, String.valueOf(crossGroup), false); } public int getType() { @@ -162,18 +155,18 @@ public abstract class AbstractRank implements IRank { return builder; } ZSetOperations.TypedTuple data = rankByKey.iterator().next(); - LOGGER.info("有问题的ArenaId{}",Integer.parseInt(data.getValue())); - User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue())); - if (everyUser == null){ - return builder; - } + int uid = Integer.parseInt(data.getValue()); + LOGGER.info("有问题的ArenaId{}", uid); CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(1) .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); - builder = getOneUserRank(everyUser,everyRankInfo); - return builder; + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(uid, everyRankInfo); + if (oneUserRank == null){ + return builder; + } + return oneUserRank; } /** @@ -215,20 +208,20 @@ public abstract class AbstractRank implements IRank { } protected void getOptional(int index,ZSetOperations.TypedTuple data,PlayerInfoProto.RankResponse.Builder builder) throws Exception { - User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue())); - if (everyUser == null){ - return; - } + int uid = Integer.parseInt(data.getValue()); CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(index) .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); - CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo); + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(uid, everyRankInfo); + if (oneUserRank == null){ + return; + } builder.addRanks(oneUserRank); } - protected PlayerInfoProto.RankResponse.Builder getCrossAllUserResponse(Set> zsetreverseRangeWithScores,int start) throws Exception{ + protected PlayerInfoProto.RankResponse.Builder getCrossAllUserResponse(Set> zsetreverseRangeWithScores,int start) { PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder(); forEach(start,zsetreverseRangeWithScores,(index,data)->{ try { @@ -255,39 +248,36 @@ public abstract class AbstractRank implements IRank { builder.addRanks(oneUserRank); } - public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){ + public CommonProto.UserRank.Builder getOneUserRank(int uid,CommonProto.RankInfo.Builder everyRankInfo){ + CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid); + if (player == null){ + return null; + } return CommonProto.UserRank.newBuilder() - .setUid(everyUser.getId()) - .setUserName(everyUser.getPlayerInfoManager().getNickName()) - .setHead(everyUser.getPlayerInfoManager().getHead()) - .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) - .setLevel(everyUser.getPlayerInfoManager().getLevel()) + .setUid(player.getUserId()) + .setUserName(player.getName()) + .setHead(player.getHead()) + .setHeadFrame(player.getHeadFrame()) + .setLevel(player.getLevel()) .setRankInfo(everyRankInfo) - .setForce(everyUser.getPlayerInfoManager().getMaxForce()) - .setSex(everyUser.getPlayerInfoManager().getSex()) - .setUserSkin(everyUser.getPlayerInfoManager().getUserSkin()) - .setUserTitle(everyUser.getPlayerInfoManager().getUserTitle()) - .setUserMount(everyUser.getPlayerInfoManager().getUserMount()) - .setPracticeLevel(everyUser.getHeroManager().getPracticeLevel()); + .setForce(player.getMainLineForce()) + .setSex(player.getSex()) + .setUserSkin(player.getSkin()) + .setUserTitle(player.getUserTitle()) + .setUserMount(player.getUserMount()) + .setPracticeLevel(player.getPracticeLevel()); } public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){ + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(csPlayer.getUserId(), everyRankInfo); + if (oneUserRank == null){ + return CommonProto.UserRank.newBuilder(); + } + // 跨服信息 String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId()); - return CommonProto.UserRank.newBuilder() - .setUid(csPlayer.getUserId()) - .setLevel(csPlayer.getLevel()) - .setUserName(csPlayer.getName()) - .setRankInfo(everyRankInfo) - .setForce(csPlayer.getMainLineForce()) - .setSex(csPlayer.getSex()) - .setHead(csPlayer.getHead()) + return oneUserRank .setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse("")) - .setHeadFrame(csPlayer.getHeadFrame()) - .setUserMount(csPlayer.getUserMount()) - .setUserSkin(csPlayer.getSkin()) - .setUserTitle(csPlayer.getUserTitle()) - .setPracticeLevel(csPlayer.getPracticeLevel()) .setServerName(serverName) .setCrossScore(csPlayer.getCrossYuxulundaoNewScore()); } @@ -314,15 +304,11 @@ public abstract class AbstractRank implements IRank { /** * 子类需重写此方法来获得Redis解析后所需要的数据数组 - * @param score - * @return */ public abstract long[] getDataByScore(Double score); /** * 子类需重写此方法来获得向Redis里添加的数据,根据需要的参数进行组合 - * @param data - * @return */ public abstract double getScore(double... data); @@ -335,10 +321,6 @@ public abstract class AbstractRank implements IRank { int index = startIndex; for (T element : elements) { index++; -// if(index <= startIndex) { -// continue; -// } - action.accept(index-1, element); } } 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 adad0f52b..5b2e193ba 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 @@ -3,7 +3,6 @@ package com.ljsd.jieling.logic.rank.rankImpl; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.dao.GuilidManager; -import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; import org.springframework.data.redis.core.ZSetOperations; @@ -46,11 +45,10 @@ public class GuildForceRank extends AbstractRank { .setParam3(getParam3(data.getScore())); LOGGER.info("获取公会战力排行榜信息===========公会id:{}",data.getValue()); int chairManId = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next(); - User user = UserManager.getUserNotCache(chairManId); - if (user == null){ + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(chairManId, everyRankInfo); + if (oneUserRank == null){ return; } - CommonProto.UserRank.Builder oneUserRank = getOneUserRank(user, everyRankInfo); oneUserRank.setGuildName(guildInfo.getName()); builder.addRanks(oneUserRank); } @@ -90,12 +88,11 @@ public class GuildForceRank extends AbstractRank { } // 获取公会会长id Integer chairManId = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next(); - User user = UserManager.getUserNotCache(chairManId); - if (user == null){ + // 封装排行榜信息 + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(chairManId, everyRankInfo); + if (oneUserRank == null){ return builder; } - // 封装排行榜信息 - CommonProto.UserRank.Builder oneUserRank = getOneUserRank(user, everyRankInfo); oneUserRank.setGuildName(guildInfo.getName()); return oneUserRank; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildSheJiScoreRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildSheJiScoreRank.java index 9d87371b7..aec09adc2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildSheJiScoreRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildSheJiScoreRank.java @@ -1,7 +1,5 @@ package com.ljsd.jieling.logic.rank.rankImpl; -import com.ljsd.jieling.logic.dao.UserManager; -import com.ljsd.jieling.logic.dao.root.User; import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; @@ -25,17 +23,17 @@ public class GuildSheJiScoreRank extends GuildForceRank { return builder; } ZSetOperations.TypedTuple data = rankByKey.iterator().next(); - LOGGER.info("有问题的ArenaId{}",Integer.parseInt(data.getValue())); - User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue())); - if (everyUser == null){ - return builder; - } + int uid = Integer.parseInt(data.getValue()); + LOGGER.info("有问题的ArenaId{}", uid); CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(1) .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); - builder = getOneUserRank(everyUser,everyRankInfo); - return builder; + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(uid, everyRankInfo); + if (oneUserRank == null){ + return builder; + } + return oneUserRank; } }