diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetCrossServerHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetCrossServerHandler.java new file mode 100644 index 000000000..755481b65 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetCrossServerHandler.java @@ -0,0 +1,28 @@ +package com.ljsd.jieling.handler; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.logic.GlobleSystemLogic; +import rpc.protocols.MessageTypeProto; +import rpc.protocols.PlayerInfoProto; + +/** + * @Author hj + * @Date 2021/7/28 16:36:26 + * @Description: 跨服信息 + * @Version 1.0 + */ +public class GetCrossServerHandler extends BaseHandler { + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GetCrossServerRequest; + } + + @Override + public GeneratedMessage processWithProto(int uid, PlayerInfoProto.IsCrossRequert proto) throws Exception { + int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); + int result = crossGroup == -1 ? 0 : 1; + return PlayerInfoProto.IsCrossResponse.newBuilder().setIsCross(result).build(); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java index 13f70c728..474ee19c5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java @@ -17,6 +17,6 @@ public class RankHandler extends BaseHandler { @Override public void processWithProto(ISession iSession, PlayerInfoProto.RankRequest proto) throws Exception { RankLogic.getInstance().getRank(iSession,proto.getType(),proto.getActiviteId(), - proto.getIndex(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE); + proto.getIndex(),proto.getIsCross(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/PlayWithSbHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/PlayWithSbHandler.java index 94cb6d49f..1cbfd22f4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/PlayWithSbHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/PlayWithSbHandler.java @@ -16,6 +16,6 @@ public class PlayWithSbHandler extends BaseHandler value = memberEntry.getValue(); for(Integer uidTmp : value){ - LOGGER.info("family有问题的uid:{}",uidTmp); User userTmp = UserManager.getUser(uidTmp); builder.addFamilyUserInfo(CBean2Proto.getFamilyUserInfo(userTmp,position)); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index 3686cc8dd..a186b44c2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -76,7 +76,6 @@ public class FriendLogic { List friends = friendManager.getFriends(); List friendList = new CopyOnWriteArrayList<>(); for (Integer friendId :friends){ - LOGGER.info("有问题的Uid:{}",friendId); CommonProto.Friend friend = CBean2Proto.getFriendInfo(friendId,friendManager); friendList.add(friend); } 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 f0c7bb0e1..17ffcd2b6 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 @@ -1169,6 +1169,7 @@ public class HeroLogic{ } if (teamId == GlobalsDef.FORMATION_NORMAL) { Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid())); + CrossServiceLogic.getInstance().dispose(user); } // 跨服 更新编队信息 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 428946cd5..accdca1a2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -213,6 +213,9 @@ public class MissionLoigc { int jadeMissionType = GameMisionType.JADE_DYNASTY_MISSION.getType(); for(Integer id:jadeDynastyMissionType.getDoingMissionIds()){ SThemeActivityTaskConfig config = SThemeActivityTaskConfig.idTaskConfig.get(id); + if(config==null){ + continue; + } int progress = config.getTaskValue()[1][0]; switch (config.getType()){ case 1: diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java index 921f27c2f..f1e126b18 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java @@ -24,10 +24,10 @@ public enum RankEnum { GUILD_RED_PACKAGE_RANK(13,RedisKey.GUILD_RED_PACKAGE_RANK,GuildRedPackageRank::new,false),//param1:红包总价格 param2:无 param3:无 CAR_DEALY_RANK(14,RedisKey.CAR_DEALY_RANK,CarDealyRank::new,false),//param1:伤害 param2:无 param3:无 CAR_DEALY_GUILD_RANK(19,RedisKey.CAR_DEALY_GUILD_RANK,CarDealyGuildRank::new,false),//param1:伤害 param2:无 param3:无 - DEATH_PATH_EVERY_PERSON_RANK(15,RedisKey.DEATH_PATH_EVERY_PERSON_RANK,DeathPathEveryPersonRank::new,false),//param1:当前阵玩家伤害 param2:无 param3:无 - DEATH_PATH_EVERY_GUILD_RANK(16,RedisKey.DEATH_PATH_EVERY_GUILD_RANK, DeathPathEveryGuildRank::new,false),//param1:当前阵公会伤害 param2:当前工会挑战人数 param3:无 - DEATH_PATH_TOTAL_PERSON_RANK(17,RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,DeathPathTotalPersonRank::new,false),//param1:玩家总伤害 param2:无 param3:无 - DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new,false),//param1:工会总伤害 param2:无 param3:无 + DEATH_PATH_EVERY_PERSON_RANK(15,RedisKey.DEATH_PATH_EVERY_PERSON_RANK,DeathPathEveryPersonRank::new,true),//param1:当前阵玩家伤害 param2:无 param3:无 + DEATH_PATH_EVERY_GUILD_RANK(16,RedisKey.DEATH_PATH_EVERY_GUILD_RANK, DeathPathEveryGuildRank::new,true),//param1:当前阵公会伤害 param2:当前工会挑战人数 param3:无 + DEATH_PATH_TOTAL_PERSON_RANK(17,RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,DeathPathTotalPersonRank::new,true),//param1:玩家总伤害 param2:无 param3:无 + DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new,true),//param1:工会总伤害 param2:无 param3:无 GUILD_FORCE_RANK(20,RedisKey.GUILD_FORCE_RANK,GuildForceRank::new,false),//param1:公会总战力 param2:无 param3:无 //达人排行榜 EXPERT_RANK(21,RedisKey.EXPERT_RANK,GoldRank::new,false),//param1:活动进度 param2:无 param3:无 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java index 9a9caeea0..dabe0589b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java @@ -66,7 +66,7 @@ public class RankLogic { public static class Instance { public final static RankLogic instance = new RankLogic(); } - public void getRank(ISession session, int type, int activityId,int index,MessageTypeProto.MessageType messageType) throws Exception { + public void getRank(ISession session, int type, int activityId,int index,int isCross,MessageTypeProto.MessageType messageType) throws Exception { LOGGER.info("获取排行榜信息type={},activityId={}",type,activityId); String rkey = ""; if(activityId != 0){ @@ -74,11 +74,11 @@ public class RankLogic { } PlayerInfoProto.RankResponse rankResponse=null; AbstractRank rank = RankContext.getRankEnum(type); - if(RankContext.isCrossRank(type)){ + if(RankContext.isCrossRank(type) || isCross == 1){ //跨服 int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); if(crossGroup>0){ - rankResponse = rank.getRank(session.getUid(),String.valueOf(crossGroup),index/20+1, 20); + rankResponse = rank.getCrossRank(session.getUid(),String.valueOf(crossGroup),index/20+1, 20); } }else{ rankResponse = rank.getRank(session.getUid(),rkey,index/20+1, 20); 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 060e86a15..50e34ae61 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 @@ -2,6 +2,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.GlobleSystemLogic; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.rank.IRank; @@ -36,7 +38,7 @@ public abstract class AbstractRank implements IRank { * @return 当前排行榜数据 * @throws Exception */ - public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception { if(rankEndLine==-1){ rankEndLine = 100; } @@ -65,22 +67,9 @@ public abstract class AbstractRank implements IRank { * @throws Exception */ public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception { - if(rankEndLine==-1){ - rankEndLine = 100; - } - User user = UserManager.getUser(uid); - if (page == 0) { - page = 1; - } - int start = (page - 1) * rankEndLine, end = page * rankEndLine - 1; - Set> zsetreverseRangeWithScores = getRankByKey(rkey,start,end); - if(start%rankEndLine == 0){ - start++; - } - PlayerInfoProto.RankResponse.Builder allUserResponse = getAllUserResponse(zsetreverseRangeWithScores,start); - //当前用户信息 - getMyInfo(user,rkey,allUserResponse); - return allUserResponse.build(); + int groupId = GlobleSystemLogic.getInstence().getCrossGroup(); + redisKey = RedisUtil.getInstence().getKey(String.valueOf(groupId),redisKey,false); + return getRank(uid,rkey,page,rankEndLine); } /** @@ -157,7 +146,6 @@ public abstract class AbstractRank implements IRank { } protected void getOptional(int index,ZSetOperations.TypedTuple data,PlayerInfoProto.RankResponse.Builder builder) throws Exception { - LOGGER.info("获取排行榜信息===================玩家id:{}"+data.getValue()); User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true); if (everyUser == null){ return; @@ -170,8 +158,10 @@ public abstract class AbstractRank implements IRank { CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo); builder.addRanks(oneUserRank); } - public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo) throws Exception { - CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() + + private CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){ + String serverName = CrossServiceLogic.getInstance().getServerNameByUId(everyUser.getId()); + return CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) .setUserName(everyUser.getPlayerInfoManager().getNickName()) .setHead(everyUser.getPlayerInfoManager().getHead()) @@ -183,8 +173,8 @@ public abstract class AbstractRank implements IRank { .setUserSkin(everyUser.getPlayerInfoManager().getUserSkin()) .setUserTitle(everyUser.getPlayerInfoManager().getUserTitle()) .setUserMount(everyUser.getPlayerInfoManager().getUserMount()) - .setPracticeLevel(everyUser.getHeroManager().getPracticeLevel()); - return everyRank; + .setPracticeLevel(everyUser.getHeroManager().getPracticeLevel()) + .setServerName(serverName); } protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){ 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 ab06fda14..71dcdc68d 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 @@ -105,4 +105,9 @@ public class CrossArenaRank extends AbstractRank { e.printStackTrace(); } } + + @Override + public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + return getRank(uid,rkey,page,rankEndLine); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryPersonRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryPersonRank.java index d53ac2a12..aaaba5ad2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryPersonRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryPersonRank.java @@ -23,6 +23,7 @@ public class DeathPathEveryPersonRank extends AbstractRank { return data[0]; } + @Override public void addRank(int uid,String rkey,double... data){ RedisUtil.getInstence().incrementZsetScore(redisKey,rkey,String.valueOf(uid), Double.valueOf(getScore(data)).intValue()); }