From 44f88a241c3ce10fb7f4425e5377cd46411a45c7 Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Thu, 11 Nov 2021 16:29:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DStackOverflowError?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crossService/CrossServiceLogic.java | 62 ++++++++++--------- .../jieling/logic/dao/cross/CSPlayer.java | 10 --- .../jieling/logic/player/PlayerLogic.java | 3 + 3 files changed, 37 insertions(+), 38 deletions(-) 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 cac7e9513..3696f5402 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 @@ -107,43 +107,49 @@ public class CrossServiceLogic { } private static CSPlayer formatUserToPlayer(User user){ - CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId()); + CSPlayer csPlayer = RedisUtil.getInstence().getObject(getKey(user.getId()), CSPlayer.class); int newScore=0,oldScore =0,crossYxldMaxLevel=0 ; - if(csPlayer!=null){ + if (csPlayer != null) { newScore = csPlayer.getCrossYuxulundaoNewScore(); oldScore = csPlayer.getCrossYuxulundaoOldScore(); crossYxldMaxLevel = csPlayer.getCrossYxldMaxLevel(); + } else { + csPlayer = new CSPlayer(); } - - CSPlayer player = new CSPlayer(); PlayerManager p = user.getPlayerInfoManager(); - player.setUserId(user.getId()); - player.setLevel(p.getLevel()); - player.setName(p.getNickName()); - player.setHead(p.getHead()); - player.setHeadFrame(p.getHeadFrame()); - player.setSkin(p.getUserSkin()); - player.setUserTitle(p.getUserTitle()); - player.setPracticeLevel(user.getHeroManager().getPracticeLevel()); - player.setServerId(GameApplication.serverId); - player.setSex(p.getSex()); - player.setUserMount(p.getUserMount()); - player.setCrossYuxulundaoNewScore(newScore); - player.setCrossYuxulundaoOldScore(oldScore); - player.setGuildId(p.getGuildId()); - player.setCrossYxldMaxLevel(crossYxldMaxLevel); + csPlayer.setUserId(user.getId()); + csPlayer.setLevel(p.getLevel()); + csPlayer.setName(p.getNickName()); + csPlayer.setHead(p.getHead()); + csPlayer.setHeadFrame(p.getHeadFrame()); + csPlayer.setSkin(p.getUserSkin()); + csPlayer.setUserTitle(p.getUserTitle()); + csPlayer.setPracticeLevel(user.getHeroManager().getPracticeLevel()); + csPlayer.setServerId(GameApplication.serverId); + csPlayer.setSex(p.getSex()); + csPlayer.setUserMount(p.getUserMount()); + csPlayer.setCrossYuxulundaoNewScore(newScore); + csPlayer.setCrossYuxulundaoOldScore(oldScore); + csPlayer.setGuildId(p.getGuildId()); + csPlayer.setCrossYxldMaxLevel(crossYxldMaxLevel); //玉虚三个队伍总战力 - int force1 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId(), false); - int force2 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId(), false); - int force3 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId(), false); - player.setMaxFore(force1+force2+force3); + if (csPlayer.getMaxFore() == 0) { + int force1 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId(), false); + int force2 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId(), false); + int force3 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId(), false); + csPlayer.setMaxFore(force1+force2+force3); + } // 主线编队战力 - int mainLine = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false); - player.setMainLineForce(mainLine); + if (csPlayer.getMainLineForce() == 0) { + int mainLine = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false); + csPlayer.setMainLineForce(mainLine); + } // 罗浮编队战力 - int luoFu = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false); - player.setLuoFuForce(luoFu); - return player; + if (csPlayer.getLuoFuForce() == 0) { + int luoFu = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false); + csPlayer.setLuoFuForce(luoFu); + } + return csPlayer; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/cross/CSPlayer.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/cross/CSPlayer.java index 3b69dd4b3..dda3657b9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/cross/CSPlayer.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/cross/CSPlayer.java @@ -1,7 +1,5 @@ package com.ljsd.jieling.logic.dao.cross; -import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; - /** * @Author hj * @Date 2021/8/31 15:30:04 @@ -231,10 +229,6 @@ public class CSPlayer { } public int getMainLineForce() { - if (mainLineForce == 0){ - CSPlayer redis = CrossServiceLogic.getPlayerByRedis(userId, false); - mainLineForce = redis==null?0:redis.getMainLineForce(); - } return mainLineForce; } @@ -243,10 +237,6 @@ public class CSPlayer { } public int getLuoFuForce() { - if (mainLineForce == 0){ - CSPlayer redis = CrossServiceLogic.getPlayerByRedis(userId, false); - luoFuForce = redis==null?0:redis.getLuoFuForce(); - } return luoFuForce; } 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 47066f3a2..1f415f213 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 @@ -1710,6 +1710,9 @@ public class PlayerLogic { } } String rpcString = RedisUtil.getInstence().getObject(RedisKey.LOGIC_SERVER_INFO, Integer.toString(serverId), String.class, -1); + if (rpcString == null) { + return null; + } String[] split = rpcString.split(":"); if (split.length < 4) { LOGGER.error("获取玩家rpc地址,长度错误,rpc:{},玩家id:{},服务器id:{}", rpcString, uid, serverId);