From 34333c9a33de5ebb787c2b1f3562a32788d29ca7 Mon Sep 17 00:00:00 2001 From: duhui Date: Wed, 3 Nov 2021 17:35:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E6=9C=8D=E6=95=B0=E6=8D=AE=E6=9B=B4?= =?UTF-8?q?=E5=88=B0=E6=9C=80=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/GameApplication.java | 6 +- .../ljsd/jieling/chat/logic/ChatLogic.java | 19 +- .../CrossYuxulundaoChallengeHandler.java | 17 +- .../GetWorldArenaChallengeRequestHandler.java | 34 +-- ...GetWorldArenaRecordInfoRequestHandler.java | 28 +- .../handler/player/GetPlayerOneTeamInfo.java | 13 +- .../crossService/CrossServiceLogic.java | 274 ++++-------------- .../ljsd/jieling/logic/arena/ArenaLogic.java | 74 +++-- .../logic/arena/CrossYuxulundaoLogic.java | 53 ++-- .../jieling/logic/dao/cross/CSPlayer.java | 2 - .../logic/family/CrossDeathPathLogic.java | 62 +--- .../jieling/logic/family/DeathPathLogic.java | 7 +- .../ljsd/jieling/logic/hero/HeroLogic.java | 5 - .../jieling/logic/player/PlayerLogic.java | 240 +-------------- .../jieling/logic/rank/CrossRankManager.java | 19 +- .../logic/rank/rankImpl/AbstractRank.java | 76 +---- .../logic/rank/rankImpl/CrossArenaRank.java | 24 +- .../rank/rankImpl/CrossGuildForceRank.java | 47 +-- .../rankImpl/CrossYuXuLunDaoPersonRank.java | 5 +- .../rank/rankImpl/CrossYuXuLunDaoRank.java | 16 +- .../rankImpl/DeathPathTotalGuildRank.java | 12 +- .../logic/rank/rankImpl/ForceRank.java | 2 +- .../rank/rankImpl/GuildSheJiScoreRank.java | 1 + .../logic/sevenworld/SevenWorldLogic.java | 2 - .../com/ljsd/jieling/util/CBean2Proto.java | 4 +- test/src/main/java/db/RedisTest.java | 13 +- 26 files changed, 245 insertions(+), 810 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java index a1602468a..f39c3ae47 100644 --- a/serverlogic/src/main/java/com/ljsd/GameApplication.java +++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java @@ -6,8 +6,8 @@ import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.hotfix.HotfixUtil; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.ServerConfig; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.rank.CrossRankManager; import com.ljsd.jieling.network.NetManager; import com.ljsd.jieling.thread.task.RPCServerTask; @@ -23,8 +23,6 @@ import org.springframework.scheduling.annotation.EnableScheduling; import util.TimeUtils; import java.io.File; -import java.text.SimpleDateFormat; -import java.util.Date; import java.util.Scanner; @@ -63,7 +61,7 @@ public class GameApplication { GameLogicService.getInstance().onStart(); NetManager.getInstance().init(); SkyEyeService.getInstance().onStart(); - CrossDeathPathLogic.getInstance().serverInit(); + CrossServiceLogic.serverInit(); CrossRankManager.getInstance().guildCacheHandle(); HotfixUtil.getInstance(); // 开启定时任务 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java index 50f574cb4..f0e12f858 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java @@ -14,11 +14,9 @@ import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.OnlineUserManager; -import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.FriendManager; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.UserManager; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.CBean2Proto; @@ -214,16 +212,10 @@ public class ChatLogic { throw new ErrorCodeException(ErrorCode.CHAT_NO_FAMILY); } chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,messageId); -// = ChatProto.SendChatInfoIndication.newBuilder() -// .setChatInfo(chatInfo) -// .setType(2) -// .build(); MessageCache.addGuildMsg(chatInfo,messageId,guildId); - -// GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId),MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION,sendChatInfoIndication); break; case 3: //好友 - ChatProto.SendChatInfoIndication sendChatInfoIndication = null; + ChatProto.SendChatInfoIndication sendChatInfoIndication; List friends = friendManager.getFriends(); if (!friends.contains(friendId)) { throw new ErrorCodeException(ErrorCode.CHAT_NOT_FRIENDS); @@ -254,8 +246,6 @@ public class ChatLogic { chatInfo = CBean2Proto.getCrossChatInfoBuilder(user,message,nowTime,messageId); MessageCache.addCrossMsg(chatInfo,messageId,String.valueOf(group)); - checkSaveUser(user); - break; default: { break; @@ -266,13 +256,6 @@ public class ChatLogic { MessageUtil.sendMessage(iSession, 1, msgId, null, true); } - private void checkSaveUser(User user) throws Exception { - ArenaOfUser query = CrossServiceLogic.getInstance().query(user.getId()); - if (query == null){ - CrossServiceLogic.getInstance().dispose(user); - } - } - //记录聊天信息 private void onSendChatSuccess(User user,int chatType,String message){ RedisUtil redisUtil = RedisUtil.getInstence(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java index 6a90757df..e367a763d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossYuxulundaoChallengeHandler.java @@ -4,7 +4,6 @@ import com.google.gson.Gson; import com.ljsd.GameApplication; import com.ljsd.fight.ArenaRecord; import com.ljsd.fight.FightType; -import com.ljsd.jieling.config.json.CoreSettings; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; @@ -22,7 +21,6 @@ import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.cross.CSPlayer; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.fight.FightUtil; import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.hero.HeroLogic; @@ -32,9 +30,6 @@ import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.thrift.idl.CrossArenaManager; -import com.ljsd.jieling.thrift.idl.RPCRequestIFace; -import com.ljsd.jieling.thrift.pool.ClientAdapterPo; -import com.ljsd.jieling.util.ConfigurableApplicationContextManager; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.SArenaRobotConfig; @@ -126,8 +121,11 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler enemyList = arenaManager.getCrossYuxulundaoEnemies(); - enemyList.forEach(n -> res.addArenaEnemys(CrossYuxulundaoLogic.getInstance().getMatchRivalInfo(n.getEnemyId(), 0))); + enemyList.forEach(n -> res.addArenaEnemys(CrossYuxulundaoLogic.getMatchRivalInfo(n.getEnemyId(), 0))); CSPlayer myQuery = CrossServiceLogic.getPlayerByRedis(user.getId()); + if (myQuery == null){ + return; + } CSPlayer defQuery = null; //根据双方现有分数计算出 得分 int ackScores = myQuery.getCrossYuxulundaoNewScore(); @@ -135,6 +133,9 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler= 1000) { defQuery = CrossServiceLogic.getPlayerByRedis(defUid); + if (defQuery == null){ + return; + } defScores = defQuery.getCrossYuxulundaoNewScore(); } else { SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(defUid); @@ -258,7 +259,7 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler=setting.getCostMax()){ -// throw new ErrorCodeException(ErrorCode.NOTIME2); -// } - //rank limit if (!ArenaWorldLogic.checkJoin(String.valueOf(iSession.getUid()))) { throw new ErrorCodeException(ErrorCode.WORLD_LEVELIMIT); @@ -159,28 +153,29 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler1000) { - ArenaOfUser arenaOfUser = CrossServiceLogic.getInstance().query(proto.getChallengeUid()); - //defendForce = arenaOfUser.getHeroManager().getTotalForceByTeam().get(proto.getTeamId()); - //teamInfo = FightUtil.makeCrossPersonData(arenaOfUser,proto.getTeamId(),defendForce); CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(proto.getChallengeUid()); + if (csPlayer == null){ + throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT); + } CrossArenaManager crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer); teamInfo = FightUtil.makeCrossPersonData(csPlayer, proto.getTeamId(), null, crossArenaManager); - arenaEnemys =ArenaLogic.getInstance().getUserCrossArenaEnemy(crossGroup,arenaOfUser,proto.getChallengeRank(),false).build(); - + arenaEnemys = ArenaLogic.getInstance().getUserCrossArenaEnemy(csPlayer,proto.getChallengeRank(),false).build(); } else { //机器人 - CrossArenaEnemy info = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_ARENA_ROBOT_INFO, String.valueOf(crossGroup), String.valueOf(proto.getChallengeUid()), CrossArenaEnemy.class); - teamInfo = FightUtil.makeRobotFightData(info.getEnemyId()); -// force = SArenaRobotConfig.getsArenaRobotConfigById(info.getEnemyId()).getTotalForce(); arenaEnemys =ArenaLogic.getInstance().getRobotCrossArenaEnemy(crossGroup,proto.getChallengeRank(),proto.getChallengeUid()).build(); defendForce = info.getTotalForce(); } - arenaAttack = CommonProto.ArenaEnemy.newBuilder().setPersonInfo(CommonProto.ArenaPersonInfo.newBuilder().setUid(iSession.getUid()).setName(user.getPlayerInfoManager().getNickName()).setTotalForce(user.getPlayerInfoManager().getMaxForce()).setServername(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)).setPracticeLevel(user.getHeroManager().getPracticeLevel())).build(); + CommonProto.ArenaPersonInfo.Builder builder2 = CommonProto.ArenaPersonInfo.newBuilder() + .setUid(iSession.getUid()) + .setName(user.getPlayerInfoManager().getNickName()) + .setTotalForce(user.getPlayerInfoManager().getMaxForce()) + .setServername(CrossServiceLogic.simplifyServerName(GameApplication.serverId)) + .setPracticeLevel(user.getHeroManager().getPracticeLevel()); + arenaAttack = CommonProto.ArenaEnemy.newBuilder().setPersonInfo(builder2).build(); int myForce = HeroLogic.getInstance().calTeamTotalForce(user, proto.getTeamId(), true); -// boolean isRevert = proto.getTotalForce() < force; int teamId = proto.getTeamId(); CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightData(UserManager.getUser(iSession.getUid()), teamId, null, null); FightResult fightResult = getFightForPVP(iSession.getUid(), proto.getChallengeUid(), fightTeamInfo, teamInfo, FightUtil.getFightSeed(),myForce { @Override public MessageTypeProto.MessageType getMessageCode() { @@ -43,7 +40,6 @@ public class GetWorldArenaRecordInfoRequestHandler extends BaseHandler integerIntegerHashMap = ArenaLogic.ranInfo.get(integer); @@ -56,16 +52,16 @@ public class GetWorldArenaRecordInfoRequestHandler extends BaseHandler arenaRecordList = new ArrayList<>(result.values()); - List collect = arenaRecordList.stream().map(bytes -> {try { - WorldProto.WroldBattleRecord wroldBattleRecord = WorldProto.WroldBattleRecord.parseFrom(bytes); - //此处不把数据给前端,避免数据过大 - wroldBattleRecord = wroldBattleRecord.toBuilder().setFightData(CommonProto.FightData.newBuilder()).build(); - - return wroldBattleRecord; - }catch (Exception e){} - return null; - }).collect(Collectors.toList()); - collect.sort(Comparator.comparingInt(WorldProto.WroldBattleRecord::getAttackTime)); + List collect = arenaRecordList.stream().map(bytes -> { + try { + WorldProto.WroldBattleRecord wroldBattleRecord = WorldProto.WroldBattleRecord.parseFrom(bytes); + //此处不把数据给前端,避免数据过大 + wroldBattleRecord = wroldBattleRecord.toBuilder().setFightData(CommonProto.FightData.newBuilder()).build(); + return wroldBattleRecord; + } catch (Exception e) { + return null; + } + }).sorted(Comparator.comparingInt(wroldBattleRecord1 -> wroldBattleRecord1 != null ? wroldBattleRecord1.getAttackTime() : 0)).collect(Collectors.toList()); Collections.reverse(collect); int size = arenaRecordList.size(); if (size > 15) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/player/GetPlayerOneTeamInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/player/GetPlayerOneTeamInfo.java index 930b66d30..4cd1477f7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/player/GetPlayerOneTeamInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/player/GetPlayerOneTeamInfo.java @@ -28,7 +28,7 @@ public class GetPlayerOneTeamInfo extends BaseHandler teamId =new ArrayList<>(1); teamId.add(proto.getTeamId()); - //oneTeamInfo = PlayerLogic.getInstance().getCrossOneTeamInfo(proto.getPlayerId(),proto.getTeamId()); - PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo( PlayerLogic.getInstance().getCrossYxldOneTeamInfoNew(proto.getPlayerId(), teamId)); - MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.GET_PLAYER_ONE_TEAM_INFO_RESPONSE.getNumber(),playerTeamInfo.build(),true); - return; + PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = + PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder() + .setTeamInfo(PlayerLogic.getInstance().getCrossYxldOneTeamInfoNew(proto.getPlayerId(), teamId)); + MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.GET_PLAYER_ONE_TEAM_INFO_RESPONSE.getNumber(),playerTeamInfo.build(),true); + return; } } MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.GET_PLAYER_ONE_TEAM_INFO_RESPONSE.getNumber(),oneTeamInfo,true); 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 14f758a9d..0564f1506 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 @@ -1,32 +1,31 @@ package com.ljsd.jieling.logic.activity.crossService; import com.ljsd.GameApplication; -import com.ljsd.jieling.config.json.CoreSettings; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.mongo.MongoUtil; +import com.ljsd.jieling.db.mongo.core.CServerInfo; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.arena.ArenaLogic; -import com.ljsd.jieling.logic.dao.*; +import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.cross.CSPlayer; -import com.ljsd.jieling.logic.dao.gm.*; -import com.ljsd.jieling.logic.dao.root.GuildCache; -import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.UserInfo; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.hero.HeroLogic; -import com.ljsd.jieling.util.ConfigurableApplicationContextManager; +import com.ljsd.jieling.logic.player.PlayerLogic; +import com.ljsd.jieling.thrift.idl.CrossArenaManager; +import com.ljsd.jieling.tools.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; -import org.springframework.data.mongodb.core.query.Update; import java.net.UnknownHostException; -import java.util.*; -import java.util.stream.Collectors; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * @Author hj @@ -51,228 +50,51 @@ public class CrossServiceLogic { return CrossServiceLogic.Instance.instance; } - public String findServerName(int serverId) { - return CrossDeathPathLogic.getInstance().getServerName(serverId); - } - - public void insert(ArenaOfUser arenaOfUser) throws UnknownHostException { - MongoTemplate core = MongoUtil.getCoreMongoTemplate(); - core.insert(arenaOfUser,"arenaOfUser"); - } - - public void update(ArenaOfUser arenaOfUser) throws Exception { - MongoTemplate core = MongoUtil.getCoreMongoTemplate(); - // 根据id查询 - Query query = new Query(Criteria.where("_id").is(arenaOfUser.getId())); - // 修改的参数 - Update update = new Update(); - update.set("arenaOfPlayerManager",arenaOfUser.getPlayerManager()); - update.set("arenaOfHeroManager",arenaOfUser.getHeroManager()); - update.set("arenaOfPokemons",arenaOfUser.getPokemons()); - update.set("arenaOfSeals",arenaOfUser.getSeals()); - update.set("arenaOfGuildSkill",arenaOfUser.getGuildSkill()); - core.updateMulti(query, update, ArenaOfUser.class); - } - - public ArenaOfUser query(int uid) throws UnknownHostException { - MongoTemplate core = MongoUtil.getCoreMongoTemplate(); - Query query = new Query(); - query.addCriteria(Criteria.where("_id").is(uid)); - return core.findOne(query, ArenaOfUser.class); - } - /** - * 计算战力 - * @param arenaOfUser - * @throws Exception + * 服务器列表缓存 */ - private void countForce(ArenaOfUser arenaOfUser) throws Exception { - User user = UserManager.getUser(arenaOfUser.getId()); - int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE, false); - int yxldForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false)+ - HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO, false)+ - HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE, false); - arenaOfUser.getHeroManager().setTotalForce(totalForce); - arenaOfUser.getHeroManager().setYxldForce(yxldForce); - } + private static volatile Map cServerInfoMap = new ConcurrentHashMap<>(); /** - * 处理跨服数据 - * @param user - * @throws Exception + * 服务器初始化 */ - public void dispose(User user) throws Exception{ - ArenaOfUser query = query(user.getId()); - ArenaOfUser arenaOfUser = buildArenaOfUser(user); - countForce(arenaOfUser); - // 添加 - if (query == null){ - insert(arenaOfUser); - } else { - arenaOfUser.getPlayerManager().setCrossYuxulundaoNewScore(query.getPlayerManager().getCrossYuxulundaoNewScore()); - arenaOfUser.getPlayerManager().setCrossYuxulundaoOldScore( query.getPlayerManager().getCrossYuxulundaoOldScore()); - arenaOfUser.getPlayerManager().setCrossYxldMaxLevel(arenaOfUser.getPlayerManager().getCrossYxldMaxLevel()); - update(arenaOfUser); + public static void serverInit() { + try { + MongoTemplate core = MongoUtil.getCoreMongoTemplate(); + List cServerInfos = core.findAll(CServerInfo.class); + Map serverInfoMap = new HashMap<>(cServerInfos.size()); + cServerInfos.forEach(n->serverInfoMap.put(n.getServerId(),n)); + cServerInfoMap = serverInfoMap; + } catch (UnknownHostException e) { + LOGGER.error("=========跨服服务器列表获取失败=======:{}",e.getMessage()); } } - public ArenaOfUser buildArenaOfUser(User user){ - ArenaOfUser arenaOfUser = new ArenaOfUser(); - arenaOfUser.setId(user.getId()); - - HeroManager heroManager = user.getHeroManager(); - // 玩家基本信息 - arenaOfUser.setPlayerManager(buildArenaOfPlayerManager(user)); - // 英雄 - arenaOfUser.setHeroManager(buildArenaOfHeroManager(user)); - // 灵兽 - Map pokemons = new HashMap<>(); - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - Map teamMap = user.getPokemonManager().getPokemonTeamMap(); - for (Map.Entry entry : teamMap.entrySet()) { - // clone 深度复制 - Pokemon pokemon = (Pokemon)pokemonMap.get(entry.getValue()).clone(); - pokemons.put(entry.getKey(),pokemon); - } - arenaOfUser.setPokemons(pokemons); - // 紫府神印 - arenaOfUser.setSeals(new HashMap<>(heroManager.getPurpleMansionSeal())); - // 公会技能 - arenaOfUser.setGuildSkill(new HashMap<>(user.getGuildMyInfo().getGuildSkill())); - return arenaOfUser; - } - - private ArenaOfPlayerManager buildArenaOfPlayerManager(User user){ - ArenaOfPlayerManager arenaOfPlayerManager = new ArenaOfPlayerManager(); - - PlayerManager player = user.getPlayerInfoManager(); - int guildId = player.getGuildId(); - - arenaOfPlayerManager.setuId(user.getId()); - arenaOfPlayerManager.setLevel(player.getLevel()); - arenaOfPlayerManager.setName(player.getNickName()); - arenaOfPlayerManager.setHead(player.getHead()); - arenaOfPlayerManager.setHeadFrame(player.getHeadFrame()); - GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(guildId); - arenaOfPlayerManager.setGuildId(guildId); - arenaOfPlayerManager.setGuildName(mapEntry==null?"":mapEntry.getName()); - - arenaOfPlayerManager.setUserTitle(player.getUserTitle()); - arenaOfPlayerManager.setPracticeLevel(user.getHeroManager().getPracticeLevel()); - arenaOfPlayerManager.setServerId(GameApplication.serverId); - arenaOfPlayerManager.setGender(player.getSex()); - arenaOfPlayerManager.setSkin(player.getUserSkin()); - arenaOfPlayerManager.setUserMount(player.getUserMount()); - arenaOfPlayerManager.setMaxFore(player.getMaxForce()); - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(GameApplication.serverId); - arenaOfPlayerManager.setServerName(serverName); - return arenaOfPlayerManager; - } - - private void teamBuild(User user,int teamId,Map> teams,HashSet set){ - List team = user.getTeamPosManager().getTeamPosForHero().getOrDefault(teamId,new ArrayList<>()); - teams.put(teamId,team); - set.addAll(team); - } - - private ArenaOfHeroManager buildArenaOfHeroManager(User user){ - // 编队列表 - Map> teams = new HashMap<>(); - // 需要存储的英雄列表 - HashSet set = new HashSet<>(); - // 跨服世界阵编队 - teamBuild(user,TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId(),teams,set); - // 主线阵容编队 - teamBuild(user,TeamEnum.FORMATION_NORMAL.getTeamId(),teams,set); - // 主线阵容编队 - List firstTeam = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.FORMATION_NORMAL,new ArrayList<>()); - teams.put(GlobalsDef.FORMATION_NORMAL,firstTeam); - set.addAll(firstTeam); - //玉虚论道编队 - List yxldOne = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE,new ArrayList<>()); - teams.put(GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE,yxldOne); - set.addAll(yxldOne); - List yxldTwo = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO,new ArrayList<>()); - teams.put(GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO,yxldTwo); - set.addAll(yxldTwo); - List yxldTree = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE,new ArrayList<>()); - teams.put(GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE,yxldTree); - set.addAll(yxldTree); - teamBuild(user,TeamEnum.SEVEN_WORLD_TEAM.getTeamId(),teams,set); - // 英雄 - Map heroes = new HashMap<>(); - Map heroMap = user.getHeroManager().getHeroMap(); - set.forEach(v->{ - Hero hero = heroMap.get(v.getHeroId()); - heroes.put(v.getHeroId(),buildArenaOfHero(user,hero,teams)); - }); - // 魂宝灵宝 - Map jewels = new HashMap<>(); - - Map equipMap = user.getEquipManager().getEquipMap(); - heroMap.values().forEach(v-> v.getJewelInfo().forEach(v2->{ - PropertyItem item = equipMap.get(v2); - jewels.put(v2,item); - })); - // 总战力 - HashMap map = new HashMap<>(); - teams.forEach((k,v)->{ - int totalForce = HeroLogic.getInstance().calTeamTotalForce(user,k,false); - map.put(k,totalForce); - }); - int force = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE, false); - return new ArenaOfHeroManager(teams,heroes,jewels,map,force); - } - - private ArenaOfHero buildArenaOfHero(User user,Hero hero, Map> teamMap){ - HeroManager heroManager = user.getHeroManager(); - ArenaOfHero arenaOfHero = new ArenaOfHero(); - arenaOfHero.setId(hero.getId()); - arenaOfHero.setTemplateId(hero.getTemplateId()); - arenaOfHero.setLevel(hero.getLevel(heroManager)); - arenaOfHero.setStar(hero.getStar()); - arenaOfHero.setEquipByPositionMap(new HashMap<>(hero.getEquipByHongmengPositionMap(heroManager))); - arenaOfHero.setSoulEquipByPositionMap(new HashMap<>(hero.getSoulEquipByPositionMap())); - arenaOfHero.setBreakId(hero.getBreakIdByHongMeng(heroManager)); - arenaOfHero.setStarBreakId(hero.getStarBreakId()); - arenaOfHero.setCreateTime(hero.getCreateTime()); - arenaOfHero.setEspecialEquipLevel(hero.getEspecialEquipLevelByHongmeng(heroManager,hero.getId())); - arenaOfHero.setJewelInfo(new HashSet<>(hero.getJewelInfo())); - arenaOfHero.setCreateTime(hero.getCreateType()); - arenaOfHero.setChangeId(hero.getChangeId()); - arenaOfHero.setSkin(hero.getSkin()); - for (Map.Entry> entry : teamMap.entrySet()) { - Integer teamId = entry.getKey(); - List teamList = entry.getValue(); - List collect = teamList.stream().filter(v -> v.getHeroId().equals(hero.getId())).collect(Collectors.toList()); - if (collect.isEmpty()){ - continue; - } - Map attribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); - arenaOfHero.putAttributeMapByTeam(teamId,attribute); - } - return arenaOfHero; - } - /** - * 根据uid获取服务器名称 - * @param uid + * 获取服务器名字 + * @param serverId * @return */ - public String getServerNameByUId(int uid){ - String name = ""; - try { - ArenaOfUser query = query(uid); - if (query != null){ - int serverId = query.getPlayerManager().getServerId(); - return CrossDeathPathLogic.getInstance().getServerNameByDeathPath(serverId); - } - } catch (UnknownHostException e) { - LOGGER.error("===========获取跨服玩家信息报错=======:{}",e.getMessage()); + public static String getServerName(int serverId){ + String name = String.valueOf(serverId); + CServerInfo cServerInfo = cServerInfoMap.get(serverId); + if(cServerInfo==null){ + serverInit(); + cServerInfo = cServerInfoMap.get(serverId); } + name = cServerInfo!=null?cServerInfo.getName():name; return name; } + /** + * 简化servername,拼接“s” + * @param serverId + * @return + */ + public static String simplifyServerName(int serverId){ + String name = getServerName(serverId); + return "S"+ Utils.getIntByString(name); + } public static void update(CSPlayer player) { RedisUtil.getInstence().setObject(getKey(player.getUserId()),player,EXPIRE); @@ -286,6 +108,21 @@ public class CrossServiceLogic { RedisUtil.getInstence().setObject(getKey(player.getUserId()),player,EXPIRE); } + /** + * 获取跨服队伍战力 + * @param userId + * @param teamId + * @return + */ + public static long getCrossTeamForce(int userId, int teamId){ + CSPlayer csPlayer = getPlayerByRedis(userId); + if (csPlayer == null){ + return 0; + } + CrossArenaManager data = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer); + return data.getTotalForceByTeam().getOrDefault(teamId,0); + } + private static CSPlayer formattUserToPlayer(User user){ CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId()); int newScore=0,oldScore =0,crossYxldMaxLevel=0 ; @@ -312,13 +149,11 @@ public class CrossServiceLogic { player.setCrossYuxulundaoOldScore(oldScore); player.setGuildId(p.getGuildId()); player.setCrossYxldMaxLevel(crossYxldMaxLevel); - //player.setGuildId(); //三个队伍总战力 int force1 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false); int force2 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO, false); int force3 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE, false); player.setMaxFore(force1+force2+force3); - //CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class); return player; } /** @@ -361,7 +196,6 @@ public class CrossServiceLogic { player.setCrossYuxulundaoNewScore(0); player.setCrossYuxulundaoOldScore(0); player.setGuildId(p.getGuildId()); - //player.setGuildId(); //三个队伍总战力 int force1 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false); int force2 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO, false); 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 03f16a5d5..1e07c2d66 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 @@ -23,9 +23,7 @@ import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.cross.CSPlayer; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.fight.*; import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.hero.HeroLogic; @@ -52,7 +50,6 @@ import util.MathUtils; import util.StringUtil; import util.TimeUtils; -import java.net.UnknownHostException; import java.util.*; public class ArenaLogic { @@ -670,9 +667,11 @@ public class ArenaLogic { }else{ //跨服切磋 - ArenaOfUser user = CrossServiceLogic.getInstance().query(challengeUid); - deforce = user.getHeroManager().getTotalForceByTeam().get(myteamId); - CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId()); + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(challengeUid); + if (csPlayer == null){ + throw new ErrorCodeException(ErrorCode.newDefineCode("当前玩家没有跨服数据")); + } + deforce = 0; CrossArenaManager crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer); deffightTeamInfo = FightUtil.makeCrossPersonData(csPlayer, myteamId, null, crossArenaManager); } @@ -911,26 +910,22 @@ public class ArenaLogic { arenaEnemyList.add(robotCrossArenaEnemy.build()); }else{ - arenaEnemyList.add(getUserCrossArenaEnemy(groupId,rankIndex,Integer.valueOf(next.getValue()),list.contains(next.getValue()))); + arenaEnemyList.add(getUserCrossArenaEnemy(rankIndex,Integer.valueOf(next.getValue()),list.contains(next.getValue()))); } }); return arenaEnemyList; } - //获取单个玩家信息(玩家) - public CommonProto.ArenaEnemy getUserCrossArenaEnemy(int crossGroup,int rank,int id,boolean hadProud) { - ArenaOfUser user = null; - CommonProto.ArenaEnemy.Builder userCrossArenaEnemy = null; - try { - user = CrossServiceLogic.getInstance().query(id); - userCrossArenaEnemy = getUserCrossArenaEnemy(crossGroup,user,rank,hadProud); - } catch (UnknownHostException e) { - e.printStackTrace(); - return null; - } - return userCrossArenaEnemy.build(); - } - //获取单个信息(机器人) + //获取单个玩家信息(玩家) + public CommonProto.ArenaEnemy getUserCrossArenaEnemy(int rank,int id,boolean hadProud) { + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id); + if (csPlayer == null){ + return CommonProto.ArenaEnemy.newBuilder().build(); + } + return getUserCrossArenaEnemy(csPlayer,rank,hadProud).build(); + } + + //获取单个信息(机器人) public CommonProto.ArenaEnemy.Builder getRobotCrossArenaEnemy(int groupId,int rank,int id){ CrossArenaEnemy info = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_ARENA_ROBOT_INFO, String.valueOf(groupId), String.valueOf(id), CrossArenaEnemy.class); if(info==null){ @@ -987,31 +982,34 @@ public class ArenaLogic { ids.add(Integer.parseInt(next.getValue())); } }); - List crossArenaEnemyList = ArenaLogic.getInstance().getCrossArenaEnemyList(uid,matchRank,crossGroup); - return crossArenaEnemyList; + return ArenaLogic.getInstance().getCrossArenaEnemyList(uid,matchRank,crossGroup); } - public CommonProto.ArenaEnemy.Builder getUserCrossArenaEnemy(int crossGroup,ArenaOfUser enemy,int rank,boolean hadProud){ - Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT, String.valueOf(enemy.getId())); + + public CommonProto.ArenaEnemy.Builder getUserCrossArenaEnemy(CSPlayer csPlayer,int rank,boolean hadProud){ + Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT, String.valueOf(csPlayer.getUserId())); int proudTime = get==null?1:Integer.parseInt((String)get); - int enemyId = enemy.getId(); - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(enemy.getPlayerManager().getServerId()); + String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); + + CrossArenaManager data = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer); + Integer force = data.getTotalForceByTeam().getOrDefault(TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId(), 0); + CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder() - .setUid(enemyId) - .setLevel(enemy.getPlayerManager().getLevel()) - .setName(enemy.getPlayerManager().getName()) + .setUid(csPlayer.getUserId()) + .setLevel(csPlayer.getLevel()) + .setName(csPlayer.getName()) .setServername(serverName) - .setTotalForce(enemy.getHeroManager().getTotalForce()) - .setUserTitle(enemy.getPlayerManager().getUserTitle()) - .setUserMount(enemy.getPlayerManager().getUserMount()) - .setGender(enemy.getPlayerManager().getGender()) - .setUserSkin(enemy.getPlayerManager().getSkin()) - .setPracticeLevel(enemy.getPlayerManager().getPracticeLevel()) + .setTotalForce(force) + .setUserTitle(csPlayer.getUserTitle()) + .setUserMount(csPlayer.getUserMount()) + .setGender(csPlayer.getSex()) + .setUserSkin(csPlayer.getSkin()) + .setPracticeLevel(csPlayer.getPracticeLevel()) .setRank(rank) .build(); return CommonProto.ArenaEnemy.newBuilder() .setPersonInfo(personInfoBuild).setHadProud(hadProud).setWorshipTime(proudTime); -// .setTeam(teamBuild) } + public CommonProto.ArenaEnemy.Builder getRobotCrossArenaEnemy(int rank,CrossArenaEnemy enemy){ Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT_ROBOT, String.valueOf(rank)); int proudTime = get==null?1:Integer.parseInt((String)get); @@ -1019,7 +1017,7 @@ public class ArenaLogic { int enemyId = enemy.getEnemyId(); SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(enemyId); CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(sArenaRobotConfig.getHeroList()).build(); - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(enemy.getServerID()); + String serverName = CrossServiceLogic.simplifyServerName(enemy.getServerID()); CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder() .setUid(enemy.getEnemyId_UUid()) .setLevel(sArenaRobotConfig.getRobotLevel()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossYuxulundaoLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossYuxulundaoLogic.java index 8f54e3aec..3a4fcce29 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossYuxulundaoLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossYuxulundaoLogic.java @@ -1,47 +1,33 @@ package com.ljsd.jieling.logic.arena; -import com.ljsd.GameApplication; import com.ljsd.fight.ArenaRecord; -import com.ljsd.jieling.chat.logic.ChatLogic; -import com.ljsd.jieling.config.json.CoreSettings; -import com.ljsd.jieling.core.FunctionIdEnum; -import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; -import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.Global; -import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; -import com.ljsd.jieling.logic.dao.*; +import com.ljsd.jieling.logic.dao.ArenaEnemy; +import com.ljsd.jieling.logic.dao.ArenaManager; +import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.cross.CSPlayer; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; -import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; -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; -import com.ljsd.jieling.thrift.idl.CrossArenaManager; -import com.ljsd.jieling.util.ConfigurableApplicationContextManager; -import config.*; +import config.SArenaRobotConfig; +import config.SErrorCodeEerverConfig; +import config.SMServerRankConfig; +import config.SMServerRankReward; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.data.mongodb.core.aggregation.ArrayOperators; import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import util.StringUtil; import util.TimeUtils; -import java.net.UnknownHostException; import java.util.*; import java.util.stream.Collectors; -import com.ljsd.jieling.logic.dao.root.User; - /** * 玉虚论道 */ @@ -319,8 +305,8 @@ public class CrossYuxulundaoLogic { if (csPlayer == null) { return null; } - String serverName = CrossServiceLogic.getInstance().getServerNameByUId(enemyId); - CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder() + String serverName = CrossServiceLogic.simplifyServerName(enemyId); + return CommonProto.ArenaPersonInfo.newBuilder() .setUid(enemyId) .setLevel(csPlayer.getLevel()) .setName(csPlayer.getName()) @@ -336,7 +322,6 @@ public class CrossYuxulundaoLogic { .setHead(csPlayer.getHead()) .setHeadFrame(csPlayer.getHeadFrame()) .build(); - return personInfoBuild; } public static boolean limitOpen(User user) throws Exception { @@ -387,9 +372,9 @@ public class CrossYuxulundaoLogic { }else{ fightDataProto3 = CommonProto.FightData.newBuilder().build(); } - List result = null;// + List result = null; if (arenaRecord.getYxldResult() == null) { - result = new ArrayList(); + result = new ArrayList<>(); result.add(0); result.add(0); result.add(0); @@ -397,13 +382,15 @@ public class CrossYuxulundaoLogic { result = Arrays.stream(arenaRecord.getYxldResult()).boxed().collect(Collectors.toList()); } if(isSend){ - CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(uid); CSPlayer defPlayer = CrossServiceLogic.getPlayerByRedis(arenaRecord.getDefUid()); - String myServerName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId()); - String defServerName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(defPlayer.getServerId()); + if (csPlayer == null || defPlayer == null){ + throw new ErrorCodeException("玩家没有跨服数据"); + } + String myServerName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); + String defServerName = CrossServiceLogic.simplifyServerName(defPlayer.getServerId()); return CommonProto.crossYxldPlayerRecordInfo.newBuilder().setTime(arenaRecord.getCreateTime()) - .setMyServerName(myServerName==null?"":myServerName)//我的服务器名称 + .setMyServerName(myServerName)//我的服务器名称 .setServerName(defServerName) //对手的服务器名称 .setUid(arenaRecord.getAttackId()) .addAllResult(result) @@ -426,8 +413,8 @@ public class CrossYuxulundaoLogic { .setHeadFrame(arenaRecord.getHeadFrame()) .setPower(arenaRecord.getAttackForce()).setType(arenaRecord.getYxldBattleType()) .addAllYxldMyForce(arenaRecord.getYxldMyForce()) - .addAllYxldDefForce(arenaRecord.getYxldDefForce()).setPracticeLevel(arenaRecord.getPracticeLevel()).build() - ; + .addAllYxldDefForce(arenaRecord.getYxldDefForce()).setPracticeLevel(arenaRecord.getPracticeLevel()) + .build(); } } } 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 92eb367ee..73458ae92 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 @@ -31,7 +31,6 @@ public class CSPlayer { * 头像框 */ private int headFrame; - //帮会相关的 /** * 皮肤 @@ -63,7 +62,6 @@ public class CSPlayer { */ private int guildId; - /** * 玉虚论道三队总战力 */ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java index 79a018474..62ee7d4b7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java @@ -5,12 +5,8 @@ import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.mongo.core.CServerInfo; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; -import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; -import com.ljsd.jieling.logic.dao.GuildInfoCache; -import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.GuildInfo; -import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; @@ -18,17 +14,16 @@ import com.ljsd.jieling.tools.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.redis.core.Cursor; import org.springframework.data.redis.core.ZSetOperations; -import util.StringUtil; import util.TimeUtils; -import java.io.IOException; import java.math.BigDecimal; import java.net.UnknownHostException; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.regex.Pattern; /** * @Author hj @@ -49,26 +44,6 @@ public class CrossDeathPathLogic { return CrossDeathPathLogic.CrossDeathPathLogicInstance.instance; } - /** - * 服务器列表缓存 - */ - private volatile Map cServerInfoMap = new ConcurrentHashMap<>(); - - /** - * 服务器初始化 - */ - public void serverInit() { - try { - MongoTemplate core = MongoUtil.getCoreMongoTemplate(); - List cServerInfos = core.findAll(CServerInfo.class); - Map serverInfoMap = new HashMap<>(cServerInfos.size()); - cServerInfos.forEach(n->serverInfoMap.put(n.getServerId(),n)); - cServerInfoMap = serverInfoMap; - } catch (UnknownHostException e) { - LOGGER.error("=========跨服服务器列表获取失败=======:{}",e.getMessage()); - } - } - /** * 首页公会 * @param redisUtil @@ -85,7 +60,7 @@ public class CrossDeathPathLogic { /** * 添加跨服排行 */ - void addCrossDeathPathRank(DeathPathTask task) throws Exception { + void addCrossDeathPathRank(DeathPathTask task){ long damage = task.getDamage(); int uid = task.getUid(); int pathId = task.getPathId(); @@ -123,12 +98,6 @@ public class CrossDeathPathLogic { redisUtil.incrementZsetScore(totalGuild.getCrossRedisKey(),"",String.valueOf(guildId), decimal.doubleValue(),false); // 结算标识设置 redisUtil.hset(RedisKey.DEATH_PATH_EVERY_OVER_HASH,String.valueOf(GameApplication.serverId),1); - - User user = UserManager.getUserNotCache(uid); - if (user == null){ - return; - } - CrossServiceLogic.getInstance().dispose(user); } /** @@ -164,27 +133,6 @@ public class CrossDeathPathLogic { } } - /** - * 获取服务器名字 - * @param serverId - * @return - */ - public String getServerName(int serverId){ - String name = String.valueOf(serverId); - CServerInfo cServerInfo = cServerInfoMap.get(serverId); - if(cServerInfo==null){ - serverInit(); - cServerInfo = cServerInfoMap.get(serverId); - } - name = cServerInfo!=null?cServerInfo.getName():name; - return name; - } - - public String getServerNameByDeathPath(int serverId){ - String name = getServerName(serverId); - return "S"+Utils.getIntByString(name); - } - /** * 跨服排行奖励 * @param groupId diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java index f17a38bae..c4946aa97 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java @@ -15,6 +15,7 @@ import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.GuildInfo; @@ -36,7 +37,6 @@ import config.SGuildWarRewardConfig; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.data.redis.core.Cursor; import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import rpc.protocols.Family; @@ -46,7 +46,6 @@ import util.TimeUtils; import java.util.*; import java.util.concurrent.BlockingQueue; -import java.util.regex.Pattern; /** * @author lvxinran @@ -333,7 +332,7 @@ public class DeathPathLogic { int guildId = Integer.parseInt(next.getValue()); GuildCache crossGuild = CrossDeathPathLogic.getCrossGuild(guildId); Integer serverId = Optional.ofNullable(CrossDeathPathLogic.getCrossGuild(guildId)).map(GuildCache::getServerId).orElse(0); - String serverName = result?CrossDeathPathLogic.getInstance().getServerNameByDeathPath(serverId):""; + String serverName = result ? CrossServiceLogic.simplifyServerName(serverId):""; Family.DeathPathInfo info = Family.DeathPathInfo.newBuilder().setGuildName(crossGuild.getName()).setPathId(i).setGid(guildId).setServerName(serverName).build(); response.addInfos(info); } @@ -509,7 +508,7 @@ public class DeathPathLogic { GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(n.getValue())); if(guildInfo!=null){ GuildCache crossGuild = CrossDeathPathLogic.getCrossGuild(guildInfo.getId()); - String name = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(crossGuild.getServerId()); + String name = CrossServiceLogic.simplifyServerName(crossGuild.getServerId()); String serverName = getGroupId()>0?name:""; Family.DeathPathInfo info = Family.DeathPathInfo.newBuilder() .setGuildName(guildInfo.getName()).setGid(currFirstGuildId) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 5011e1d67..c3be34cc6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -1225,11 +1225,6 @@ public class HeroLogic { if (teamId == GlobalsDef.FORMATION_NORMAL) { Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid())); } - - // 跨服 更新编队信息 - if (teamId == GlobalsDef.WORLD_TEAM_ARENA_DEFENSE) { - CrossServiceLogic.getInstance().dispose(user); - } //跨服 玉虚论道 if (teamId == GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE || teamId == GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO || teamId == GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE) { CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user); 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 8e046ab9f..daa3e79db 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 @@ -27,8 +27,6 @@ import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent; import com.ljsd.jieling.logic.activity.eventhandler.UserForceUpEventHandler; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.cross.CSPlayer; -import com.ljsd.jieling.logic.dao.gm.ArenaOfHero; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.family.CrossDeathPathLogic; @@ -48,14 +46,14 @@ import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.thrift.idl.CrossArenaManager; import com.ljsd.jieling.thrift.idl.RPCRequestIFace; import com.ljsd.jieling.thrift.pool.ClientAdapterPo; -import rpc.protocols.CommonProto; -import rpc.protocols.MessageTypeProto; -import rpc.protocols.PlayerInfoProto; import com.ljsd.jieling.util.*; import config.*; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import rpc.protocols.CommonProto; +import rpc.protocols.MessageTypeProto; +import rpc.protocols.PlayerInfoProto; import util.MathUtils; import util.TimeUtils; @@ -693,8 +691,6 @@ public class PlayerLogic { } //PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.newBuilder().setTeamInfo(oneInfo); return oneInfo.build(); - - } //玉虚论道 private CommonProto.TeamOneInfo.Builder getYuxuRobotOneInfo(SArenaRobotConfig sArenaRobotConfig,CrossArenaEnemy info,List crossTeamId){ @@ -760,109 +756,6 @@ public class PlayerLogic { //oneInfo.setTeam(teamInfo); return oneInfo; } - //跨服三队伍 - public CommonProto.TeamOneInfo.Builder getUserTeamOneInfo(int uid,List crossTeamId) throws Exception { - User user = UserManager.getUser(uid); - CommonProto.TeamOneInfo.Builder oneInfo = CBean2Proto.getTeamOneInfo(user); - TeamPosManager teamPosManager = user.getTeamPosManager(); - for(int teamId:crossTeamId){ - CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); - // 总战力 - teamInfo.setTotalForce(HeroLogic.getInstance().calTeamTotalForce(user,teamId,false)); - - if(teamId==GlobalsDef.TASUILINGXIAO_CHALLENGE){ - Map taSuiHeroMap = user.getHeroManager().getTaSuiHeroMap(); - for(Map.Entry entry:taSuiHeroMap.entrySet()){ - TaSuiHero hero = entry.getValue(); - CommonProto.TeamSimpleInfo info = CommonProto.TeamSimpleInfo.newBuilder().setHeroTid(hero.getTempId()).setLevel(hero.getLeve()).setStar(hero.getStar()).setPosition(entry.getKey()).build(); - teamInfo.addTeam(info); - } - teamInfo.setTotalForce(user.getHeroManager().getTaSuiLingXiaoRankForce()); - - }else{ - if(teamPosManager.getTeamPosForHero().containsKey(teamId)){ - // 添加队伍信息 - List heroInfos = teamPosManager.getTeamPosForHero().get(teamId); - for (TeamPosHeroInfo heroInfo:heroInfos) { - Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId()); - teamInfo.addTeam(CBean2Proto.getSimpleTeamInfoByHero(user, hero,heroInfo.getPosition())); - } - // 紫府神印 - List collect = heroInfos.stream().map(TeamPosHeroInfo::getHeroId).collect(Collectors.toList()); - teamInfo.addAllSealShow(CBean2Proto.getPurpleSealShow(user,collect)); - } - - } - //加入灵兽信息 - PokemonManager pokemonManager = user.getPokemonManager(); - if(!pokemonManager.getPokemonTeamMap().isEmpty()){ - for(Map.Entry entry:pokemonManager.getPokemonTeamMap().entrySet()){ - Pokemon pokemon = pokemonManager.getPokemonMap().get(entry.getValue()); - if(pokemon==null){ - continue; - } - teamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(pokemon,entry.getKey())); - } - } - int guildId = user.getPlayerInfoManager().getGuildId(); - if(guildId!=0){ - if(GuilidManager.guildInfoMap.containsKey(guildId)){ - String name = GuilidManager.guildInfoMap.get(guildId).getName(); - oneInfo.setGuildName(name); - } - - } - if(teamId==GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE ||teamId==GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO || teamId==GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE ){ - oneInfo.addCrossTeam(teamInfo); - }else{ - oneInfo.setTeam(teamInfo); - } - } - return oneInfo; - } - - //获取跨服玩家信息 - public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,int teamId) throws Exception { - ArenaOfUser query = CrossServiceLogic.getInstance().query(id); - if(query==null){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder() - .setHead(query.getPlayerManager().getHead()) - .setHeadFrame(query.getPlayerManager().getHeadFrame()) - .setUserTitle(query.getPlayerManager().getUserTitle()) - .setLevel(query.getPlayerManager().getLevel()) - .setName(query.getPlayerManager().getName()) - .setGuildName(query.getPlayerManager().getGuildName()) - .setPracticeLevel(query.getPlayerManager().getPracticeLevel()) - .setUid(id); - CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); - List teamPosHeroInfos = query.getHeroManager().getTeams().get(teamId); - if(teamPosHeroInfos!=null){ - for (TeamPosHeroInfo heroInfo:teamPosHeroInfos) { - ArenaOfHero hero = query.getHeroManager().getHeros().get(heroInfo.getHeroId()); - teamOneTeamInfo.addTeam(CBean2Proto.getCrossSimpleHero(hero,heroInfo.getPosition())); - } - } - - for(Map.Entry entry:query.getPokemons().entrySet()){ - teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(entry.getValue(), entry.getKey())); - } - LOGGER.info("=====================跨服获取阵容:{}",teamId); - Integer integer = query.getHeroManager().getTotalForceByTeam().getOrDefault(teamId,0); - teamOneTeamInfo.setTotalForce(integer); - for(Map.Entry entry:query.getSeals().entrySet()){ - PurpleMansionSeal value = entry.getValue(); - ArenaOfHero arenaOfHero = query.getHeroManager().getHeros().get(value.getSubId()); - if(value.getState()==0){ - continue; - } - teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId())); - } - builder.setTeam(teamOneTeamInfo.build()); - PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(builder.build()); - return playerTeamInfo.build(); - } //获取跨服玩家信息 public CommonProto.TeamOneInfo getCrossYxldMyTeamInfo(User user,List team) throws Exception{ @@ -871,7 +764,7 @@ public class PlayerLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } //基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用 - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId()); + String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder() .setHead(csPlayer.getHead()) .setHeadFrame(csPlayer.getHeadFrame()) @@ -940,7 +833,7 @@ public class PlayerLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } //基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用 - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId()); + String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId()); CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder() .setHead(csPlayer.getHead()) @@ -1003,7 +896,7 @@ public class PlayerLogic { } return builder.build(); } - public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer )throws Exception{ + public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer){ String rpcString = RedisUtil.getInstence().getObject(RedisKey.LOGIC_SERVER_INFO, String.valueOf(csPlayer.getServerId()), String.class, -1); String ip = rpcString.split(":")[0]; String port = rpcString.split(":")[3]; @@ -1040,7 +933,7 @@ public class PlayerLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } //基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用 - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId()); + String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder() .setHead(csPlayer.getHead()) .setHeadFrame(csPlayer.getHeadFrame()) @@ -1118,7 +1011,7 @@ public class PlayerLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } //基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用 - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId()); + String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId()); CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder() @@ -1132,9 +1025,11 @@ public class PlayerLogic { .setUid(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore()) .setServerName(serverName); //如果是本服玩家 直接本服调用数据 - CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class); if(GameApplication.serverId == csPlayer.getServerId()){ - User user = UserManager.getUser(id); + User user = UserManager.getUserNotCache(id); + if (user == null){ + throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT); + } return PlayerLogic.getInstance().getCrossYxldMyTeamInfoNew(user, team); } CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ; @@ -1192,52 +1087,6 @@ public class PlayerLogic { return builder.build(); } - public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,List crossTeamId) throws Exception { - ArenaOfUser query = CrossServiceLogic.getInstance().query(id); - if(query==null){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder() - .setHead(query.getPlayerManager().getHead()) - .setHeadFrame(query.getPlayerManager().getHeadFrame()) - .setUserTitle(query.getPlayerManager().getUserTitle()) - .setLevel(query.getPlayerManager().getLevel()) - .setName(query.getPlayerManager().getName()) - .setGuildName(query.getPlayerManager().getGuildName()) - .setPracticeLevel(query.getPlayerManager().getPracticeLevel()) - .setUid(id); - for(int teamId: crossTeamId){ - CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); - List teamPosHeroInfos = query.getHeroManager().getTeams().get(teamId); - if(teamPosHeroInfos!=null){ - for (TeamPosHeroInfo heroInfo:teamPosHeroInfos) { - ArenaOfHero hero = query.getHeroManager().getHeros().get(heroInfo.getHeroId()); - teamOneTeamInfo.addTeam(CBean2Proto.getCrossSimpleHero(hero,heroInfo.getPosition())); - } - } - - for(Map.Entry entry:query.getPokemons().entrySet()){ - teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(entry.getValue(), entry.getKey())); - } - LOGGER.info("=====================跨服获取阵容:{}",teamId); - Integer integer = query.getHeroManager().getTotalForceByTeam().getOrDefault(teamId,0); - teamOneTeamInfo.setTotalForce(integer); - for(Map.Entry entry:query.getSeals().entrySet()){ - PurpleMansionSeal value = entry.getValue(); - ArenaOfHero arenaOfHero = query.getHeroManager().getHeros().get(value.getSubId()); - if(value.getState()==0){ - continue; - } - teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId())); - } - //builder.setTeam(teamOneTeamInfo.build()); - builder.addCrossTeam(teamOneTeamInfo.build()); - } - - PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(builder.build()); - return playerTeamInfo.build(); - } - public void viewRobotHeroInfo(ISession session, SArenaRobotConfig sArenaRobotConfig,String robotHeroId,int teamId) throws Exception { PlayerInfoProto.ViewHeroInfoResponse.Builder builder = PlayerInfoProto.ViewHeroInfoResponse.newBuilder(); @@ -1310,10 +1159,13 @@ public class PlayerLogic { */ public PlayerInfoProto.ViewHeroInfoResponse viewCrossHeroInfo(int uid,String heroId,int teamId) throws Exception { CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(uid); + if (csPlayer == null){ + throw new ErrorCodeException(ErrorCode.newDefineCode("该玩家没有跨服数据")); + } //其他服玩家rpc 数据调用 CrossArenaManager crossArenaManager = null; if(GameApplication.serverId == csPlayer.getServerId()){ - return viewCrossHeroInfoMyserver(uid,heroId,teamId); + return viewCrossHeroInfoMyserver(uid,heroId,teamId); }else{ crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer); } @@ -1429,66 +1281,6 @@ public class PlayerLogic { builder.setTreeLevel(user.getPlayerInfoManager().getTreeLevel()); return builder.build(); } - public PlayerInfoProto.ViewHeroInfoResponse viewCrossHeroInfo1(int uid,String heroId,int teamId) throws Exception{ - ArenaOfUser query = CrossServiceLogic.getInstance().query(uid); - - Map heroes = query.getHeroManager().getHeros(); - - ArenaOfHero hero = heroes.get(heroId); - if(hero == null){ - throw new ErrorCodeException(ErrorCode.newDefineCode("hero no")); - } - CommonProto.Hero.Builder heroBuilder = CommonProto.Hero.newBuilder().setLevel(hero.getLevel()).setEspecialEquipLevel(hero.getEspecialEquipLevel()).setStar(hero.getStar()).setId(hero.getId()).setHeroId(hero.getTemplateId()).setBreakId(hero.getBreakId()).setStarBreakId(hero.getStarBreakId()); - PlayerInfoProto.ViewHeroInfoResponse.Builder builder = PlayerInfoProto.ViewHeroInfoResponse.newBuilder(); - - Map heroNotBufferAttribute = hero.getAttributeMapByTeam().getOrDefault(teamId,new HashMap<>()); - for(Map.Entry item : heroNotBufferAttribute.entrySet()){ - int id = item.getKey(); - int values = item.getValue().intValue(); - if (id == 53 || id == 57 || id == 58){ - values = item.getValue().intValue()-10000; - } - builder.addSpecialEffects(CommonProto.SpecialEffects.newBuilder().setPropertyId(id).setPropertyValue(values).build()); - } - Map jewels = query.getHeroManager().getJewels(); - for(String equipId : hero.getJewelInfo()){ - heroBuilder.addJewels(equipId); - builder.addEquip(CBean2Proto.getEquipProto(jewels.get(equipId))); - } - // 装备 - for(int equipId : hero.getEquipByPositionMap().values()){ - heroBuilder.addEquipIdList(equipId); - builder.addEquip(CBean2Proto.getEquipProto(equipId)); - } - // 法宝 - Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); - for(Map.Entry entry: soulEquipByPositionMap.entrySet()){ - heroBuilder.addSoulPos(CommonProto.SoulPos.newBuilder().setEquipId(entry.getValue()).setPosition(entry.getKey())); - } - // 皮肤 - heroBuilder.setSkinId(hero.getSkin()); - // 英雄技能 - int profession = SCHero.getsCHero().get(hero.getTemplateId()).getProfession(); - int skill = query.getGuildSkill().getOrDefault(profession, 0); - builder.setGuildSkill(skill); - // 战力 - builder.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute)); - builder.setHero(heroBuilder); - return builder.build(); - } - /** - * 跨服英雄属性展示特殊处理 - * @param id - * @param value - * @return - */ - private CommonProto.SpecialEffects crossPropertyHandle(int id,int value){ - int values = value; - if (id == 53 || id == 57 || id == 58){ - values = value-10000; - } - return CommonProto.SpecialEffects.newBuilder().setPropertyId(id).setPropertyValue(values).build(); - } public void takeSevenScoreReward(ISession iSession) throws Exception { User user = UserManager.getUser(iSession.getUid()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java index 6ca152c7f..bb46ad155 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java @@ -1,10 +1,8 @@ package com.ljsd.jieling.logic.rank; -import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.dao.GuilidManager; -import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; @@ -59,20 +57,11 @@ public class CrossRankManager { int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); if(crossGroup != -1){ AbstractRank rank = RankContext.getRankEnum(type); - String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false); - Map cacheMap = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_INFO, "", Integer.class, GuildCache.class); + // 获取本服排行榜数据 Set> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(rank.getRedisKey(), "", 0, 100, true); - for (ZSetOperations.TypedTuple tuple : range) { - if (tuple.getValue().length() == 8){ - rank.crossUserCache(Integer.parseInt(tuple.getValue())); - }else { - GuildCache cache = cacheMap.get(Integer.valueOf(tuple.getValue())); - if (cache != null && cache.getLeaderUId() != 0){ - rank.crossUserCache(cache.getLeaderUId()); - } - } - RedisUtil.getInstence().zsetAddOne(key,tuple.getValue(),tuple.getScore()); - } + // 批量放入跨服排行榜 + String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false); + RedisUtil.getInstence().zsetAddAall(key,range); LOGGER.info("=====================跨服排行榜处理========,key:{}",key); } } 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 c879359fe..e54851504 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 @@ -1,13 +1,12 @@ package com.ljsd.jieling.logic.rank.rankImpl; -import com.ljsd.GameApplication; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; +import com.ljsd.jieling.logic.dao.TeamEnum; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.cross.CSPlayer; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.family.CrossDeathPathLogic; @@ -45,6 +44,7 @@ public abstract class AbstractRank implements IRank { * @return 当前排行榜数据 * @throws Exception */ + @Override public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception { if(rankEndLine==-1){ rankEndLine = 100; @@ -93,30 +93,14 @@ public abstract class AbstractRank implements IRank { return allUserResponse.build(); } - /** - * 跨服缓存玩家数据 - * @param uid - * @throws Exception - */ - public void crossUserCache(int uid){ - try { - User user = UserManager.getUserNotCache(uid); - if (user == null){ - return; - } - CrossServiceLogic.getInstance().dispose(user); - } catch (Exception e) { - LOGGER.error("================跨服排行榜缓存玩家数据报错=========,uid:{},error:{}",uid,e.getMessage()); - } - } - /** * 向排行榜添加或修改某条数据 * @param uid 修改用户id * @param rkey redis 小key 自定义 * @param data 注意:此处为传入修改的分数需要的所有参数即可,里面调用getScore方法,注意参数顺序 */ - public void addRank(int uid,String rkey,double... data){ + @Override + public void addRank(int uid, String rkey, double... data){ String key = RedisKey.getKey(redisKey,rkey,false); RedisUtil.getInstence().zsetAddOne(key,String.valueOf(uid), getScore(data)); } @@ -186,7 +170,7 @@ public abstract class AbstractRank implements IRank { * @return * @throws Exception */ - public CommonProto.UserRank.Builder getFirstByCross(String rKey) throws Exception { + public CommonProto.UserRank.Builder getFirstByCross(String rKey){ Set> rankByKey = RedisUtil.getInstence().getZsetreverseRangeWithScores(getCrossRedisKey(),rKey, 0, 0, false); CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); @@ -194,8 +178,8 @@ public abstract class AbstractRank implements IRank { return builder; } ZSetOperations.TypedTuple data = rankByKey.iterator().next(); - ArenaOfUser everyUser = CrossServiceLogic.getInstance().query(Integer.parseInt(data.getValue())); - if (everyUser == null){ + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(Integer.parseInt(data.getValue())); + if (csPlayer == null){ return builder; } CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() @@ -203,7 +187,7 @@ public abstract class AbstractRank implements IRank { .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); - builder = getCrossOneUserRank(everyUser,everyRankInfo); + builder = getCrossOneUserRank(csPlayer,everyRankInfo); return builder; } @@ -245,23 +229,7 @@ public abstract class AbstractRank implements IRank { return builder; } - protected void getCrossOptional1(int index,ZSetOperations.TypedTuple data,PlayerInfoProto.RankResponse.Builder builder) throws Exception { - CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(Integer.parseInt(data.getValue())); - if (csPlayer == null){ - LOGGER.error("改玩家没有跨服数据...:{}",data.getValue()); - return; - } - 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 = getCrossOneUserRank(csPlayer, everyRankInfo); - builder.addRanks(oneUserRank); - } protected void getCrossOptional(int index,ZSetOperations.TypedTuple data,PlayerInfoProto.RankResponse.Builder builder) throws Exception { - //ArenaOfUser everyUser = CrossServiceLogic.getInstance().query(Integer.parseInt(data.getValue())); - CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(Integer.parseInt(data.getValue())); if (csPlayer == null){ LOGGER.error("该玩家没有跨服数据...:{}",data.getValue()); @@ -293,14 +261,15 @@ public abstract class AbstractRank implements IRank { } public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){ - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId()); + String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId()); + long force = CrossServiceLogic.getCrossTeamForce(csPlayer.getUserId(), TeamEnum.FORMATION_NORMAL.getTeamId()); return CommonProto.UserRank.newBuilder() .setUid(csPlayer.getUserId()) .setLevel(csPlayer.getLevel()) .setUserName(csPlayer.getName()) .setRankInfo(everyRankInfo) - .setForce(0) //TODO + .setForce((int) force) .setSex(csPlayer.getSex()) .setHead(csPlayer.getHead()) .setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse("")) @@ -309,28 +278,8 @@ public abstract class AbstractRank implements IRank { .setUserSkin(csPlayer.getSkin()) .setUserTitle(csPlayer.getUserTitle()) .setPracticeLevel(csPlayer.getPracticeLevel()) - .setServerName(serverName==null?"":serverName) - .setCrossScore(csPlayer.getCrossYuxulundaoNewScore()); - } - public CommonProto.UserRank.Builder getCrossOneUserRank(ArenaOfUser query, CommonProto.RankInfo.Builder everyRankInfo){ - String serverName = CrossServiceLogic.getInstance().getServerNameByUId(query.getId()); - GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(query.getPlayerManager().getGuildId()); - return CommonProto.UserRank.newBuilder() - .setUid(query.getId()) - .setLevel(query.getPlayerManager().getLevel()) - .setUserName(query.getPlayerManager().getName()) - .setRankInfo(everyRankInfo) - .setForce(query.getPlayerManager().getMaxFore()) - .setSex(query.getPlayerManager().getGender()) - .setHead(query.getPlayerManager().getHead()) - .setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse("")) - .setHeadFrame(query.getPlayerManager().getHeadFrame()) - .setUserMount(query.getPlayerManager().getUserMount()) - .setUserSkin(query.getPlayerManager().getSkin()) - .setUserTitle(query.getPlayerManager().getUserTitle()) - .setPracticeLevel(query.getPlayerManager().getPracticeLevel()) .setServerName(serverName) - .setCrossScore(query.getPlayerManager().getCrossYuxulundaoNewScore()); + .setCrossScore(csPlayer.getCrossYuxulundaoNewScore()); } protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){ @@ -416,7 +365,6 @@ public abstract class AbstractRank implements IRank { return; } try { -// Set dimKey = RedisUtil.getInstence().getDimKey(RedisKey.getKey(redisKey, rkey, false) + "*", 200); String[] dimKey = new String[configMap.size()]; int index = 0; for (Integer integer : configMap.keySet()) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossArenaRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossArenaRank.java index 0f2d729fe..565de1861 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossArenaRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossArenaRank.java @@ -6,17 +6,15 @@ import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.CrossArenaEnemy; +import com.ljsd.jieling.logic.dao.TeamEnum; import com.ljsd.jieling.logic.dao.UserManager; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; +import com.ljsd.jieling.logic.dao.cross.CSPlayer; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.hero.HeroLogic; -import config.SArenaRobotConfig; import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; -import java.net.UnknownHostException; import java.util.Set; /** @@ -63,7 +61,7 @@ public class CrossArenaRank extends AbstractRank { if(mapEntry==null){ return; } - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(mapEntry.getServerID()); + String serverName = CrossServiceLogic.simplifyServerName(mapEntry.getServerID()); everyRankInfo.setParam1(mapEntry.getTotalForce()); CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() .setUid(mapEntry.getEnemyId_UUid()) @@ -75,10 +73,14 @@ public class CrossArenaRank extends AbstractRank { .setSex(0); builder.addRanks(everyRank); }else{ - ArenaOfUser query = CrossServiceLogic.getInstance().query(Integer.valueOf(data.getValue())); + CSPlayer query = CrossServiceLogic.getPlayerByRedis(Integer.valueOf(data.getValue())); + if (query == null){ + return; + } + long teamForce = CrossServiceLogic.getCrossTeamForce(query.getUserId(), TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId()); CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(index) - .setParam1(query.getHeroManager().getTotalForce()) + .setParam1(teamForce) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); CommonProto.UserRank.Builder everyRank = getCrossOneUserRank(query,everyRankInfo); @@ -86,6 +88,14 @@ public class CrossArenaRank extends AbstractRank { } } + @Override + public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){ + CommonProto.UserRank.Builder oneUserRank = super.getCrossOneUserRank(csPlayer, everyRankInfo); + long force = CrossServiceLogic.getCrossTeamForce(csPlayer.getUserId(), TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId()); + oneUserRank.setForce((int) force); + return oneUserRank; + } + @Override public void getCrossMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){ String crossGroup = String.valueOf(GlobleSystemLogic.getInstence().getCrossGroup()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossGuildForceRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossGuildForceRank.java index b9cef7d6c..c74125556 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossGuildForceRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossGuildForceRank.java @@ -1,10 +1,8 @@ package com.ljsd.jieling.logic.rank.rankImpl; -import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; -import com.ljsd.jieling.logic.dao.UserManager; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; +import com.ljsd.jieling.logic.dao.cross.CSPlayer; import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.family.CrossDeathPathLogic; @@ -12,8 +10,6 @@ import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; -import java.net.UnknownHostException; -import java.util.Optional; import java.util.Set; /** @@ -28,42 +24,25 @@ public class CrossGuildForceRank extends GuildForceRank { @Override protected void getCrossOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) throws Exception { - GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(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())); - ArenaOfUser query = CrossServiceLogic.getInstance().query(mapEntry.getLeaderUId()); - if (query == null){ + GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue())); + if (mapEntry == null){ return; } - String name = Optional.of(mapEntry).map(GuildCache::getName).orElse(""); - CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(query,name,everyRankInfo); + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId()); + if (csPlayer == null){ + return; + } + CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(csPlayer,everyRankInfo); builder.addRanks(oneUserRank); } - public CommonProto.UserRank.Builder getCrossOneUserRank(ArenaOfUser query,String guildName,CommonProto.RankInfo.Builder everyRankInfo){ - String serverName = CrossServiceLogic.getInstance().getServerNameByUId(query.getId()); - return CommonProto.UserRank.newBuilder() - .setUid(query.getId()) - .setLevel(query.getPlayerManager().getLevel()) - .setUserName(query.getPlayerManager().getName()) - .setRankInfo(everyRankInfo) - .setForce(query.getPlayerManager().getMaxFore()) - .setSex(query.getPlayerManager().getGender()) - .setHead(query.getPlayerManager().getHead()) - .setGuildName(guildName) - .setHeadFrame(query.getPlayerManager().getHeadFrame()) - .setUserMount(query.getPlayerManager().getUserMount()) - .setUserSkin(query.getPlayerManager().getSkin()) - .setUserTitle(query.getPlayerManager().getUserTitle()) - .setPracticeLevel(query.getPlayerManager().getPracticeLevel()) - .setServerName(serverName); - } - @Override - public CommonProto.UserRank.Builder getFirstByCross(String rKey) throws UnknownHostException { + public CommonProto.UserRank.Builder getFirstByCross(String rKey){ Set> rankByKey = RedisUtil.getInstence().getZsetreverseRangeWithScores(getCrossRedisKey(),rKey, 0, 0, false); CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); @@ -81,11 +60,11 @@ public class CrossGuildForceRank extends GuildForceRank { .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); - ArenaOfUser query = CrossServiceLogic.getInstance().query(mapEntry.getLeaderUId()); - if (query == null){ + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId()); + if (csPlayer == null){ return builder; } - builder = getCrossOneUserRank(query,mapEntry.getName(),everyRankInfo); + builder = getCrossOneUserRank(csPlayer,everyRankInfo); return builder; } @@ -96,7 +75,7 @@ public class CrossGuildForceRank extends GuildForceRank { if (guildId == 0){ return; } - int myRank= RedisUtil.getInstence().getZSetreverseRank(getCrossRedisKey(),rkey,Integer.toString(guildId),false).intValue(); + int myRank= RedisUtil.getInstence().getZSetreverseRank(getCrossRedisKey(), rkey, Integer.toString(guildId),false).intValue(); Double zSetScore = RedisUtil.getInstence().getZSetScore(getCrossRedisKey(), rkey, Integer.toString(guildId),false); CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder() .setRank(myRank) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoPersonRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoPersonRank.java index ec70903ed..ccec723f9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoPersonRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoPersonRank.java @@ -79,9 +79,8 @@ public class CrossYuXuLunDaoPersonRank extends AbstractRank{ builder.addRanks(everyRank); } } - public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player , CommonProto.RankInfo.Builder everyRankInfo){ - String serverName = CrossServiceLogic.getInstance().getServerNameByUId(player.getUserId()); - //CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid); + public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player, CommonProto.RankInfo.Builder everyRankInfo){ + String serverName = CrossServiceLogic.simplifyServerName(player.getServerId()); return CommonProto.UserRank.newBuilder() .setUid(player.getUserId()) .setLevel(player.getLevel()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoRank.java index fa9ae31a3..867debe7a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossYuXuLunDaoRank.java @@ -9,16 +9,13 @@ import com.ljsd.jieling.logic.arena.ArenaLogic; import com.ljsd.jieling.logic.dao.CrossArenaEnemy; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.cross.CSPlayer; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; -import util.TimeUtils; import java.util.Set; @@ -66,7 +63,7 @@ public class CrossYuXuLunDaoRank extends AbstractRank{ if(mapEntry==null){ return; } - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(mapEntry.getServerID()); + String serverName = CrossServiceLogic.simplifyServerName(mapEntry.getServerID()); everyRankInfo.setParam1(mapEntry.getTotalForce()); CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() .setUid(mapEntry.getEnemyId_UUid()) @@ -78,21 +75,22 @@ public class CrossYuXuLunDaoRank extends AbstractRank{ .setSex(0).setCrossScore(mapEntry.getEnemyStatus()); builder.addRanks(everyRank); }else{ - //ArenaOfUser query = CrossServiceLogic.getInstance().query(Integer.valueOf(data.getValue())); CSPlayer cPlayer = CrossServiceLogic.getPlayerByRedis(Integer.valueOf(data.getValue())); + if (cPlayer == null){ + return; + } CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(index) .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); - //CommonProto.UserRank.Builder everyRank = getCrossOneUserRank(query,everyRankInfo); CommonProto.UserRank.Builder everyRank = getCrossOneUserRankyx(cPlayer,everyRankInfo); builder.addRanks(everyRank); } } - public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player , CommonProto.RankInfo.Builder everyRankInfo){ - String serverName = CrossServiceLogic.getInstance().getServerNameByUId(player.getUserId()); - //CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid); + + private static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player, CommonProto.RankInfo.Builder everyRankInfo){ + String serverName = CrossServiceLogic.simplifyServerName(player.getServerId()); return CommonProto.UserRank.newBuilder() .setUid(player.getUserId()) .setLevel(player.getLevel()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java index 4c72f5b9d..835f49f5c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java @@ -1,21 +1,18 @@ package com.ljsd.jieling.logic.rank.rankImpl; -import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; -import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.GuilidManager; -import com.ljsd.jieling.logic.dao.UserManager; -import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; +import com.ljsd.jieling.logic.dao.cross.CSPlayer; import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.family.DeathChallengeCount; import com.ljsd.jieling.logic.family.DeathPathLogic; +import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; -import org.springframework.data.redis.core.ZSetOperations; import java.math.BigDecimal; import java.util.Optional; @@ -70,12 +67,11 @@ public class DeathPathTotalGuildRank extends CrossGuildForceRank{ .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(countInfo==null?0:countInfo.getUserReward().size()); - ArenaOfUser query = CrossServiceLogic.getInstance().query(mapEntry.getLeaderUId()); + CSPlayer query = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId()); if (query == null){ return; } - String name = Optional.of(mapEntry).map(GuildCache::getName).orElse(""); - CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(query,name,everyRankInfo); + CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(query,everyRankInfo); builder.addRanks(oneUserRank); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceRank.java index 97aaf05b1..507df1c35 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceRank.java @@ -12,7 +12,7 @@ public class ForceRank extends AbstractRank { @Override public long[] getDataByScore(Double score) { - return new long[]{score.intValue()}; + return new long[]{score.longValue()}; } @Override 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 3976e8b2a..892a978d9 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 @@ -32,6 +32,7 @@ public class GuildSheJiScoreRank extends AbstractRank { return data[0]; } + @Override protected void getOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) throws Exception{ GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue())); CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java index a341a71b4..c7899e6f7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java @@ -272,8 +272,6 @@ public class SevenWorldLogic { // 层数 user.getPlayerInfoManager().putSevenWorldOpenTier(week,tierId); } - // 跨服数据保存 - CrossServiceLogic.getInstance().dispose(user); } // 战斗数据 builder.setResult(fightResult.getResult()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 753410255..06e393788 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -10,11 +10,11 @@ import com.ljsd.jieling.handler.map.Cell; import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.map.TowerBuff; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.gm.ArenaOfHero; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.family.CrossDeathPathLogic; import com.ljsd.jieling.logic.fight.CombatLogic; import com.ljsd.jieling.logic.help.HelpHero; import com.ljsd.jieling.logic.help.HelpHeroLogic; @@ -784,7 +784,7 @@ public class CBean2Proto { chatInfo.setMessageId(messageId); chatInfo.setUserTitle(playerInfoManager.getUserTitle()); chatInfo.setPracticeLevel(user.getHeroManager().getPracticeLevel()); - String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(GameApplication.serverId); + String serverName = CrossServiceLogic.simplifyServerName(GameApplication.serverId); chatInfo.setServerName(serverName); return chatInfo.build(); } diff --git a/test/src/main/java/db/RedisTest.java b/test/src/main/java/db/RedisTest.java index 520520945..dc21a6438 100644 --- a/test/src/main/java/db/RedisTest.java +++ b/test/src/main/java/db/RedisTest.java @@ -10,22 +10,21 @@ public class RedisTest { public static void main(String[] args) { StringRedisTemplate redisTemplate = getRedisTemplate(); - List result = new ArrayList<>(); - result.add("30007078010215604220600000"); - result.add("1"); - result.add("30007078010215604361980000"); - List objects = redisTemplate.opsForHash().multiGet("10016:CHero_Key:30007078", result); - System.out.println(objects); + redisTemplate.opsForZSet().add("test","1000",78); + redisTemplate.opsForZSet().add("test","1000",2); + System.out.println("ok"); } public static StringRedisTemplate getRedisTemplate(){ JedisConnectionFactory connectionFactory = new JedisConnectionFactory(); //设置host - connectionFactory.setHostName("60.1.1.14"); + connectionFactory.setHostName("60.1.1.21"); //设置端口 connectionFactory.setPort(6379); //初始化connectionFactory connectionFactory.afterPropertiesSet(); + // 设置数据库 + connectionFactory.setDatabase(2); //实例化 return new StringRedisTemplate(connectionFactory); }