From 0f49dae227515f85e05f73c3715b4f56e2eec1cf Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Tue, 27 Jul 2021 16:43:50 +0800 Subject: [PATCH 1/8] =?UTF-8?q?//=E8=B7=A8=E6=9C=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/chat/logic/ChatLogic.java | 31 ++++++++- .../jieling/chat/messge/MessageCache.java | 66 ++++++++++++++++++- .../reportBeans_37/ChatContentType.java | 3 +- .../com/ljsd/jieling/db/redis/RedisKey.java | 6 ++ .../com/ljsd/jieling/exception/ErrorCode.java | 4 +- 5 files changed, 103 insertions(+), 7 deletions(-) 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 344f7247a..2eb91d8d8 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 @@ -12,6 +12,7 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; 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.dao.FriendManager; import com.ljsd.jieling.logic.dao.GuilidManager; @@ -63,7 +64,7 @@ public class ChatLogic { case 0: // 系统 chatInfoList = MessageCache.sysMsg.getObjs(messageId); break; - case 1: //世界 + case -1: //世界 chatInfoList = MessageCache.worldMsg.getObjs(messageId); break; case 2://公会 @@ -93,6 +94,15 @@ public class ChatLogic { RedisUtil.getInstence().del(GameApplication.serverId + RedisKey.CUser_Chat + uid); } break; + + case 1: + int group = GlobleSystemLogic.getInstence().getCrossGroup(); + if(group==-1){ + throw new ErrorCodeException(ErrorCode.CHAT_NOT_CROSS); + } + chatInfoList = MessageCache.getCrossMsg(messageId,String.valueOf(group)); + + break; default:{ LOGGER.info("getAllChatMessageInfo wrong chatType=>{} uid=>{}", chatType, uid); } @@ -152,7 +162,7 @@ public class ChatLogic { } boolean result = true; switch (chatType){ - case 1: + case -1: //0|content需要解字符串 String s = message; String[] strs = message.split("|",3); @@ -167,6 +177,9 @@ public class ChatLogic { case 3: result = ShieldedWordUtils.checkName(user,message,false,ChatContentType.PRIVATE_CHAT,UserManager.getUser(friendId)); break; + case 1: + result = ShieldedWordUtils.checkName(user,message,false,ChatContentType.CROSS_CHAT); + break; default: break; } @@ -187,7 +200,7 @@ public class ChatLogic { } switch (chatType){ - case 1: //世界 + case -1: //世界 long messageId = RedisUtil.getInstence().increment(GameApplication.serverId + RedisKey.CHAT_WORD_MSG_ID + GameApplication.serverId); ChatProto.ChatInfo chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,messageId); @@ -229,6 +242,18 @@ public class ChatLogic { } break; + + case 1: //跨服 + int group = GlobleSystemLogic.getInstence().getCrossGroup(); + if(group==-1){ + throw new ErrorCodeException(ErrorCode.CHAT_NOT_CROSS); + } + + messageId = RedisUtil.getInstence().increment( RedisKey.CHAT_CROSS_MSG_ID + group); + chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,messageId); + + MessageCache.addCrossMsg(chatInfo,messageId,String.valueOf(group)); + break; default: { break; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java index d57ddd6a5..c24594d81 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java @@ -1,9 +1,17 @@ package com.ljsd.jieling.chat.messge; +import com.google.gson.Gson; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import org.luaj.vm2.ast.Str; import rpc.protocols.ChatProto; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; public class MessageCache { private static final int capuatiy =200; @@ -13,7 +21,7 @@ public class MessageCache { public static LoopQueue worldMsg = new LoopQueue(capuatiy,perCaught,-1); public static LoopQueue sysMsg = new LoopQueue(capuatiy,perCaught,msgInterval); public static Map guildMsg = new ConcurrentHashMap(); - + private static Gson gson = new Gson(); public static void addWordMsg(ChatProto.ChatInfo chatInfo,long messageId){ worldMsg.push(chatInfo,messageId); @@ -29,4 +37,60 @@ public class MessageCache { guildMsg.get(guildId).push(chatInfo,messageId); } + public static void addCrossMsg(ChatProto.ChatInfo chatInfo,long messageId,String group){ + long index = messageId % capuatiy; + String key = RedisKey.CHAT_CROSS_INFO_CACHE+group; + + RedisUtil.getInstence().hset(key,String.valueOf(index),gson.toJson(chatInfo)); + } + + public static List getCrossMsg(long messageId,String group){ + String key = RedisKey.CHAT_CROSS_INFO_CACHE+group; + Map map = new HashMap<>(); + Map collect = RedisUtil.getInstence().hmget(key); + collect.entrySet().forEach(o -> map.put(Integer.parseInt(o.getKey().toString()), + gson.fromJson(o.getValue().toString(),ChatProto.ChatInfo.class))); + List objs = new ArrayList<>(); + Object obj = RedisUtil.getInstence().get(RedisKey.CHAT_CROSS_MSG_ID + group); + if(obj==null){ + return objs; + } + int writeIndex = Integer.parseInt(String.valueOf(obj)); + + Integer nextIndex = writeIndex%capuatiy; + + if(nextIndex==-1){ + nextIndex = capuatiy - 1; + } + if(collect.size()<=0){ + return objs; + } + boolean needCompareTime = (messageId == 0); + + while(map.containsKey(nextIndex)){ + + ChatProto.ChatInfo o = map.get(nextIndex); + if(!needCompareTime){ + //比较消息id + if(messageId>=o.getMessageId()){ + break; + } + + } + objs.add(0, o); + if(objs.size()>perCaught){ + break; + } + nextIndex--; + if(nextIndex == -1){ + nextIndex = capuatiy - 1; + } + } + if(!needCompareTime && objs.size()>perCaught){ + return objs.subList(0,perCaught); + } + + return objs; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/dataReport/reportBeans_37/ChatContentType.java b/serverlogic/src/main/java/com/ljsd/jieling/dataReport/reportBeans_37/ChatContentType.java index 168cabcb6..20331f1d0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/dataReport/reportBeans_37/ChatContentType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/dataReport/reportBeans_37/ChatContentType.java @@ -14,7 +14,8 @@ public enum ChatContentType { FAMILY_HEAD(11,"会长"), FAMILY_NAME(12,"公会名"), ROLE_NAME(13,"角色名"), - ANNOUNCE(14,"公告"); + ANNOUNCE(14,"公告"), + CROSS_CHAT(15,"跨服"); private Integer type; private String text; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 65a7c0c99..40a783256 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -125,10 +125,14 @@ public class RedisKey { public static final String CHAT_GUILD_MSG_ID = ":ChatGuildMsgId:"; + public static final String CHAT_CROSS_MSG_ID = "ChatCrossMsgId:"; + public static final String CHAT_FRIEND_MSG_ID = ":ChatFriendMsgId:"; public static final String CUser_Chat = ":CUser_Chat:"; + public static final String CHAT_CROSS_INFO_CACHE = "CHAT_CROSS_INFO_CACHE:";//跨服聊天缓存 + public static final String USER_LOGIN_URL = "USER_LOGIN_URL:"; public static final String CAR_DEALY_PLAY = "CAR_DEALY_PLAY"; @@ -257,6 +261,8 @@ public class RedisKey { public static final String CHAT_INFO_CACHE = "CHAT_INFO_CACHE";//聊天信息缓存,gm后台使用 + + public static final String MAIL_RED_POINT = "MAIL_RED_POINT";//全服红点加入 public static final String PLAYER_INFO_CACHE = "PLAYER_INFO_CACHE"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java index 901d6f912..ee4ff549b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java @@ -170,8 +170,8 @@ public enum ErrorCode implements IErrorCode { LOCK_FILL(140,"锁定数量已满,无法刷新"), REDPACKET_DAILY_LIMIT(141,"今日福利红包已达领取上限"), - CHAMPION_BET_GUESS_OVER_TIME(142,"巅峰赛竞猜超时,请重新进入页面") - + CHAMPION_BET_GUESS_OVER_TIME(142,"巅峰赛竞猜超时,请重新进入页面"), + CHAT_NOT_CROSS(143,"聊天检查 没有跨服分组"), ; private static final Set CodeSet = new HashSet<>(); From 94bffe4947976c55bb369f7dc8aa38f3b455390b Mon Sep 17 00:00:00 2001 From: duhui Date: Wed, 28 Jul 2021 16:05:50 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E8=B7=A8=E6=9C=8D=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=EF=BC=8C=E5=88=9D=E6=AD=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/db/redis/RedisUtil.java | 10 ++++++- .../crossService/CrossServiceLogic.java | 16 ++++++++--- .../jieling/logic/dao/TeamPosHeroInfo.java | 14 ++++++++++ .../ljsd/jieling/logic/rank/RankLogic.java | 1 - .../logic/rank/rankImpl/AbstractRank.java | 28 +++++++++++++++++++ 5 files changed, 63 insertions(+), 6 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java index a19d96b3f..da80ecfd5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java @@ -1288,8 +1288,16 @@ public class RedisUtil { return getKey(type,key,true); } + /** + * 获取key + * @param type + * @param key + * @param judge + * 本服: true 跨服: false + * @return + */ public String getKey(String type,String key,boolean judge){ - if (judge){ + if (!judge){ return type + RedisKey.Delimiter_colon + key; } 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 486e57369..9aa37b788 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 @@ -151,14 +151,22 @@ public class CrossServiceLogic { return arenaOfPlayerManager; } private ArenaOfHeroManager buildArenaOfHeroManager(User user){ + // 编队列表 Map> teams = new HashMap<>(); - List infos = - user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,new ArrayList<>()); - teams.put(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,infos); + // 需要存储的英雄列表 + HashSet set = new HashSet<>(); + // 跨服世界阵编队 + List worldTeam = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,new ArrayList<>()); + teams.put(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,worldTeam); + set.addAll(worldTeam); + // 主线阵容编队 + List firstTeam = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.FORMATION_NORMAL,new ArrayList<>()); + teams.put(GlobalsDef.FORMATION_NORMAL,firstTeam); + set.addAll(firstTeam); // 英雄 Map heroes = new HashMap<>(); Map heroMap = user.getHeroManager().getHeroMap(); - infos.forEach(v->{ + set.forEach(v->{ Hero hero = heroMap.get(v.getHeroId()); heroes.put(v.getHeroId(),buildArenaOfHero(user,hero)); }); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java index 540977509..11b066b14 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosHeroInfo.java @@ -1,6 +1,8 @@ package com.ljsd.jieling.logic.dao; +import java.util.Objects; + public class TeamPosHeroInfo implements Comparable { private String heroId; private int position; @@ -30,6 +32,18 @@ public class TeamPosHeroInfo implements Comparable { this.position = position; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TeamPosHeroInfo that = (TeamPosHeroInfo) o; + return Objects.equals(heroId, that.heroId); + } + + @Override + public int hashCode() { + return Objects.hash(heroId, position); + } @Override public int compareTo(TeamPosHeroInfo o) { 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 13372829a..9a9caeea0 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 @@ -68,7 +68,6 @@ public class RankLogic { } public void getRank(ISession session, int type, int activityId,int index,MessageTypeProto.MessageType messageType) throws Exception { LOGGER.info("获取排行榜信息type={},activityId={}",type,activityId); - int page = 1; String rkey = ""; if(activityId != 0){ rkey = String.valueOf(activityId); 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 35ed53fce..060e86a15 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 @@ -55,6 +55,34 @@ public abstract class AbstractRank implements IRank { return allUserResponse.build(); } + /** + * 获取跨服排行 + * @param uid + * @param rkey + * @param page + * @param rankEndLine + * @return + * @throws Exception + */ + public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + if(rankEndLine==-1){ + 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(); + } + /** * 向排行榜添加或修改某条数据 * @param uid 修改用户id From 8eb605135d7cfde8e0b8b816bc6457c034903563 Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Wed, 28 Jul 2021 16:57:46 +0800 Subject: [PATCH 3/8] =?UTF-8?q?//=E8=B7=A8=E6=9C=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/chat/logic/ChatLogic.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 2eb91d8d8..8d4863bbc 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 @@ -64,7 +64,7 @@ public class ChatLogic { case 0: // 系统 chatInfoList = MessageCache.sysMsg.getObjs(messageId); break; - case -1: //世界 + case 1: //世界 chatInfoList = MessageCache.worldMsg.getObjs(messageId); break; case 2://公会 @@ -95,7 +95,7 @@ public class ChatLogic { } break; - case 1: + case 4: int group = GlobleSystemLogic.getInstence().getCrossGroup(); if(group==-1){ throw new ErrorCodeException(ErrorCode.CHAT_NOT_CROSS); @@ -162,7 +162,7 @@ public class ChatLogic { } boolean result = true; switch (chatType){ - case -1: + case 1: //0|content需要解字符串 String s = message; String[] strs = message.split("|",3); @@ -177,7 +177,7 @@ public class ChatLogic { case 3: result = ShieldedWordUtils.checkName(user,message,false,ChatContentType.PRIVATE_CHAT,UserManager.getUser(friendId)); break; - case 1: + case 4: result = ShieldedWordUtils.checkName(user,message,false,ChatContentType.CROSS_CHAT); break; default: @@ -200,7 +200,7 @@ public class ChatLogic { } switch (chatType){ - case -1: //世界 + case 1: //世界 long messageId = RedisUtil.getInstence().increment(GameApplication.serverId + RedisKey.CHAT_WORD_MSG_ID + GameApplication.serverId); ChatProto.ChatInfo chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,messageId); @@ -243,7 +243,7 @@ public class ChatLogic { break; - case 1: //跨服 + case 4: //跨服 int group = GlobleSystemLogic.getInstence().getCrossGroup(); if(group==-1){ throw new ErrorCodeException(ErrorCode.CHAT_NOT_CROSS); From 6b76168938411f0c795278ab2f65e5f17e468e2a Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Wed, 28 Jul 2021 17:42:53 +0800 Subject: [PATCH 4/8] =?UTF-8?q?//=E8=B7=A8=E6=9C=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/chat/logic/ChatLogic.java | 16 ++++++++++++++-- .../com/ljsd/jieling/util/CBean2Proto.java | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) 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 8d4863bbc..09cf4edbc 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,10 +14,12 @@ 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.GuilidManager; 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.logic.family.GuildLogic; import com.ljsd.jieling.network.session.ISession; @@ -31,6 +33,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import util.TimeUtils; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -250,9 +253,11 @@ public class ChatLogic { } messageId = RedisUtil.getInstence().increment( RedisKey.CHAT_CROSS_MSG_ID + group); - chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,messageId); - + chatInfo = CBean2Proto.getCrossChatInfoBuilder(user,message,nowTime,messageId); MessageCache.addCrossMsg(chatInfo,messageId,String.valueOf(group)); + + checkSaveUser(user); + break; default: { break; @@ -263,6 +268,13 @@ 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/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index dd04d2772..8e6745b0b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.util; +import com.ljsd.GameApplication; import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; @@ -524,6 +525,24 @@ public class CBean2Proto { return chatInfo.build(); } + public static ChatProto.ChatInfo getCrossChatInfoBuilder(User user,String message,long time,long messageId) { + ChatProto.ChatInfo.Builder chatInfo = ChatProto.ChatInfo.newBuilder(); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + chatInfo.setSenderId(user.getId()); + chatInfo.setSenderName(GameApplication.serverId+"_"+playerInfoManager.getNickName()); + chatInfo.setSenderlevel(playerInfoManager.getLevel()); + chatInfo.setSendervip(playerInfoManager.getVipLevel()); + chatInfo.setTimes(time); + chatInfo.setMsg(message); + chatInfo.setHead(playerInfoManager.getHead()); + chatInfo.setFrame(playerInfoManager.getHeadFrame()); + chatInfo.setSoulVal(playerInfoManager.getMaxForce()); + chatInfo.setMessageId(messageId); + chatInfo.setUserTitle(playerInfoManager.getUserTitle()); + chatInfo.setPracticeLevel(user.getHeroManager().getPracticeLevel()); + return chatInfo.build(); + } + public static ChatProto.ChatInfo getSysChatInfoBuilder(String message,int messageType,String itemId,int type,int startTime, int endTime, int priorityLevel, int multiple,long messageId) { ChatProto.ChatInfo.Builder chatInfo = ChatProto.ChatInfo.newBuilder(); chatInfo.setItemId(itemId); From 0458df75951f5263af51867f8929ff47364d3e1f Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Wed, 28 Jul 2021 18:01:16 +0800 Subject: [PATCH 5/8] =?UTF-8?q?//=E8=B7=A8=E6=9C=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/util/CBean2Proto.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 8e6745b0b..e16f06e28 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -9,6 +9,7 @@ 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; @@ -24,6 +25,7 @@ import util.TimeUtils; import com.ljsd.fight.ArenaRecord; import rpc.protocols.CommonProto; +import java.net.UnknownHostException; import java.util.*; import java.util.stream.Collectors; @@ -525,11 +527,16 @@ public class CBean2Proto { return chatInfo.build(); } - public static ChatProto.ChatInfo getCrossChatInfoBuilder(User user,String message,long time,long messageId) { + public static ChatProto.ChatInfo getCrossChatInfoBuilder(User user,String message,long time,long messageId){ ChatProto.ChatInfo.Builder chatInfo = ChatProto.ChatInfo.newBuilder(); PlayerManager playerInfoManager = user.getPlayerInfoManager(); chatInfo.setSenderId(user.getId()); - chatInfo.setSenderName(GameApplication.serverId+"_"+playerInfoManager.getNickName()); + try { + chatInfo.setSenderName(playerInfoManager.getNickName()+"_"+ CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)); + } catch (UnknownHostException e) { + e.printStackTrace(); + chatInfo.setSenderName(playerInfoManager.getNickName()); + } chatInfo.setSenderlevel(playerInfoManager.getLevel()); chatInfo.setSendervip(playerInfoManager.getVipLevel()); chatInfo.setTimes(time); From ffcb76a74031a919a4b99f51e4876016157494b3 Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Wed, 28 Jul 2021 18:25:41 +0800 Subject: [PATCH 6/8] =?UTF-8?q?//=E8=B7=A8=E6=9C=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/util/CBean2Proto.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 e16f06e28..3935dc9ef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -531,12 +531,7 @@ public class CBean2Proto { ChatProto.ChatInfo.Builder chatInfo = ChatProto.ChatInfo.newBuilder(); PlayerManager playerInfoManager = user.getPlayerInfoManager(); chatInfo.setSenderId(user.getId()); - try { - chatInfo.setSenderName(playerInfoManager.getNickName()+"_"+ CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)); - } catch (UnknownHostException e) { - e.printStackTrace(); - chatInfo.setSenderName(playerInfoManager.getNickName()); - } + chatInfo.setSenderName(playerInfoManager.getNickName()); chatInfo.setSenderlevel(playerInfoManager.getLevel()); chatInfo.setSendervip(playerInfoManager.getVipLevel()); chatInfo.setTimes(time); @@ -547,6 +542,11 @@ public class CBean2Proto { chatInfo.setMessageId(messageId); chatInfo.setUserTitle(playerInfoManager.getUserTitle()); chatInfo.setPracticeLevel(user.getHeroManager().getPracticeLevel()); + try { + chatInfo.setServerName(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)); + } catch (UnknownHostException e) { + e.printStackTrace(); + } return chatInfo.build(); } From d38412726d816856fac4707c80c04afe432b4b95 Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Thu, 29 Jul 2021 10:38:05 +0800 Subject: [PATCH 7/8] =?UTF-8?q?//=E8=B7=A8=E6=9C=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/util/CBean2Proto.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) 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 3935dc9ef..93dffac4c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -542,11 +542,7 @@ public class CBean2Proto { chatInfo.setMessageId(messageId); chatInfo.setUserTitle(playerInfoManager.getUserTitle()); chatInfo.setPracticeLevel(user.getHeroManager().getPracticeLevel()); - try { - chatInfo.setServerName(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)); - } catch (UnknownHostException e) { - e.printStackTrace(); - } + chatInfo.setServerName(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)); return chatInfo.build(); } From c091b123ffbc5ed673005c43a07e36e562e627d4 Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Thu, 29 Jul 2021 14:09:59 +0800 Subject: [PATCH 8/8] =?UTF-8?q?//=E8=B7=A8=E6=9C=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/player/PlayerLogic.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 faad5c52f..0d733464a 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 @@ -672,10 +672,13 @@ public class PlayerLogic { .setUid(id); CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); List teamPosHeroInfos = query.getHeroManager().getTeams().get(teamId); - for (TeamPosHeroInfo heroInfo:teamPosHeroInfos) { - ArenaOfHero hero = query.getHeroManager().getHeros().get(heroInfo.getHeroId()); - teamOneTeamInfo.addTeam(CBean2Proto.getCrossSimpleHero(hero,heroInfo.getPosition())); + 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())); }