From 37442f8fabb59ec8b50c4af978d61f219e724b20 Mon Sep 17 00:00:00 2001 From: gaojie Date: Tue, 18 Jun 2019 11:04:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=BD=E5=8F=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/chat/logic/ChatLogic.java | 26 ++++++++++++++----- .../ljsd/jieling/core/HandlerLogicThread.java | 14 +++++----- .../ljsd/jieling/handler/map/MapManager.java | 1 - .../jieling/logic/friend/FriendLogic.java | 6 ++--- .../ljsd/jieling/logic/hero/HeroLogic.java | 6 +++++ .../com/ljsd/jieling/util/CBean2Proto.java | 4 ++- .../java/com/ljsd/jieling/util/ItemUtil.java | 6 +++++ .../com/ljsd/jieling/util/MessageUtil.java | 4 +-- 8 files changed, 47 insertions(+), 20 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 130ce0b87..c1309b9db 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 @@ -5,7 +5,9 @@ import com.ljsd.GameApplication; import com.ljsd.jieling.chat.messge.MessageCache; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.dao.FriendManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; @@ -35,6 +37,8 @@ public class ChatLogic { */ public void getAllChatMessageInfo(ISession iSession, int chatType) throws Exception { int uid = iSession.getUid(); + FriendManager friendManager = UserManager.getUser(uid).getFriendManager(); + List friends = friendManager.getFriends(); List chatInfoList = new ArrayList<>(); switch (chatType){ case 0: // 系统 @@ -53,14 +57,17 @@ public class ChatLogic { String[] split = entry.getKey().toString().split("#"); String message = String.valueOf(entry.getValue()); int userid = Integer.parseInt(split[0]); + if (!friends.contains(userid)){ + continue; + } long time = Long.parseLong(split[1]); User user = UserManager.getUser(userid); - CBean2Proto.getChatInfoBuilder(user,message,time); + chatInfoList.add(CBean2Proto.getChatInfoBuilder(user,message,time)); } } if (hmget!= null && hmget.size() != 0){ //取出数据好友聊天数据后删除 - RedisUtil.getInstence().hdel(GameApplication.serverId + RedisKey.CUser_Chat + uid); + RedisUtil.getInstence().del(GameApplication.serverId + RedisKey.CUser_Chat + uid); } break; } @@ -77,8 +84,10 @@ public class ChatLogic { * @param message */ public void sendChatMessage(ISession iSession, int chatType, String message,int friendId) throws Exception { + int msgId = MessageTypeProto.MessageType.SEND_CHAT_INFO_RESPONSE_VALUE; int uid = iSession.getUid(); User user = UserManager.getUser(uid); + FriendManager friendManager = user.getFriendManager(); long nowTime = System.currentTimeMillis(); switch (chatType){ case 1: //世界 @@ -90,6 +99,11 @@ public class ChatLogic { MessageCache.addGuildMsg(chatInfo); break; case 3: //好友 + List friends = friendManager.getFriends(); + if (!friends.contains(friendId)){ + MessageUtil.sendErrorResponse(iSession,0, msgId, "不能查找自己"); + return; + } //现在好友推送 if (OnlineUserManager.checkUidOnline(friendId)){ ISession sessionByUid = OnlineUserManager.getSessionByUid(friendId); @@ -98,21 +112,21 @@ public class ChatLogic { .setChatInfo(chatInfo) .build(); assert sessionByUid != null; - MessageUtil.sendMessage(sessionByUid, 1, MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION_VALUE, sendChatInfoIndication, true); + MessageUtil.sendIndicationMessage(sessionByUid, 1, MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION_VALUE, sendChatInfoIndication, true); }else{ RedisUtil.getInstence().hset(GameApplication.serverId +RedisKey.CUser_Chat+friendId,uid +"#"+ nowTime,message, -1); } break; } - MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.SEND_CHAT_INFO_RESPONSE_VALUE, null, true); + MessageUtil.sendMessage(iSession, 1, msgId, null, true); } /** * 系统消息跑马灯 */ - public static void sendSysChatMessage(String message,int type,int startTime, int endTime, int priorityLevel, int frequency) { - ChatProto.ChatInfo chatInfo = CBean2Proto.getSysChatInfoBuilder(message,type,startTime,endTime,priorityLevel,frequency); + public void sendSysChatMessage(String message,int messageType ,int itemId, int type,int startTime, int endTime, int priorityLevel, int frequency) { + ChatProto.ChatInfo chatInfo = CBean2Proto.getSysChatInfoBuilder(message,messageType,itemId ,type,startTime,endTime,priorityLevel,frequency); MessageCache.addSystemMsg(chatInfo); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java index a6a030e73..eef3bb839 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java @@ -59,13 +59,13 @@ public class HandlerLogicThread extends Thread{ return; } } - - - LOGGER.info("doWork->uid={},mType={};start", userId, MessageTypeProto.MessageType.valueOf(msgId)); - MissionEventDistributor.requestStart(); - baseHandler.execute(session, packetNetData); - MissionEventDistributor.requestEnd(session,true); - LOGGER.info("doWork->uid={},mType={};end", userId, MessageTypeProto.MessageType.valueOf(msgId)); + if (!MessageTypeProto.MessageType.valueOf(msgId).equals("GET_CHAT_MESSAGE_REQUEST")){ + LOGGER.info("doWork->uid={},mType={};start", userId, MessageTypeProto.MessageType.valueOf(msgId)); + MissionEventDistributor.requestStart(); + baseHandler.execute(session, packetNetData); + MissionEventDistributor.requestEnd(session,true); + LOGGER.info("doWork->uid={},mType={};end", userId, MessageTypeProto.MessageType.valueOf(msgId)); + } }catch (Exception e){ LOGGER.error("",e); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index c32113e0b..d385694f7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -219,7 +219,6 @@ public class MapManager extends MongoBase { if (addValue != 0) { int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue, 0, SGameSetting.getGameSetting().getInitialEnergy()); item.setItemNum(curEnergy > playerInfoManager.getMaxStamina() ? playerInfoManager.getMaxStamina() : curEnergy); - System.out.println("增加之前的==============================="+itemNum + "增加的数量============"+addValue +"总数========="+item.getItemNum()); setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime); } } else { 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 04781ba18..7ba55662f 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 @@ -46,7 +46,7 @@ public class FriendLogic { List friends = friendManager.getFriends(); List onlineList = new CopyOnWriteArrayList<>(); for (Integer friendId :friends){ - if(!OnlineUserManager.checkUidOnline(uid)){ + if(!OnlineUserManager.checkUidOnline(friendId)){ continue; } onlineList.add(friendId); @@ -460,13 +460,13 @@ public class FriendLogic { return; } if (playerInfoManager.getNickName().equals(name)){ - MessageUtil.sendErrorCode(iSession, Global.NO_FIND_ONESELF_STATE, "不能查找自己"); + MessageUtil.sendErrorResponse(iSession, Global.NO_FIND_ONESELF_STATE, msgId, "不能查找自己"); return; } String key = RedisKey.getKey(RedisKey.C_User_Name_Key, name, false); Object friend = RedisUtil.getInstence().get(key); if (friend == null){ - MessageUtil.sendErrorCode(iSession, Global.USER_NO_EXIT_STATE, "玩家不存在"); + MessageUtil.sendErrorResponse(iSession, Global.USER_NO_EXIT_STATE, msgId, "玩家不存在"); return; } int type = 1; 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 ff21eabf8..867c2c328 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 @@ -1,6 +1,7 @@ package com.ljsd.jieling.logic.hero; import com.ljsd.GameApplication; +import com.ljsd.jieling.chat.logic.ChatLogic; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.VipPrivilegeType; @@ -19,6 +20,7 @@ import com.ljsd.jieling.util.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.rmi.ServerError; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -1140,6 +1142,10 @@ public class HeroLogic { .newBuilder() .setDrop(drop) .build(); + List heroList = drop.getHeroList(); + CommonProto.Hero hero = heroList.get(0); + int heroId = hero.getHeroId(); + ChatLogic.getInstance().sendSysChatMessage("",1,heroId,0,0,0,0,0); MessageUtil.sendMessage(iSession,1,msgId,heroComposeResponse,true); } public void getAllPokemon(ISession iSession) throws Exception { 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 b07643ab5..8ba63bf39 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -236,11 +236,13 @@ public class CBean2Proto { return chatInfo.build(); } - public static ChatProto.ChatInfo getSysChatInfoBuilder(String message,int type,int startTime, int endTime, int priorityLevel, int frequency) { + public static ChatProto.ChatInfo getSysChatInfoBuilder(String message,int messageType,int type,int itemId,int startTime, int endTime, int priorityLevel, int frequency) { ChatProto.ChatInfo.Builder chatInfo = ChatProto.ChatInfo.newBuilder(); + chatInfo.setItemId(itemId); chatInfo.setTimes(System.currentTimeMillis()); chatInfo.setMsg(message); chatInfo.setType(type); + chatInfo.setMessageType(messageType); if (type == 1){ chatInfo.setStartTime(startTime); chatInfo.setEndTime(endTime); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index cd2c749b8..f8cc5603d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -387,6 +387,9 @@ public class ItemUtil { if(itemNum>=0){ itemProtoList.add(CBean2Proto.getItem(item,itemNum)); } + if (entry.getKey() == Global.STAMINA){ + LOGGER.info("增加的=========num={}, 操作后={}, 时间={}",itemNum,user.getItemManager().getItemMap().get(Global.STAMINA).getItemNum(),user.getItemManager().getItemMap().get(Global.STAMINA).getEndingTime()); + } } if (dropBuilder != null) { dropBuilder.addAllItemlist(itemProtoList); @@ -540,6 +543,9 @@ public class ItemUtil { temporaryItemList.remove(userItem.getKey()); needCount = Math.abs(leftNum); } + if (userItem.getKey() == Global.STAMINA){ + LOGGER.info("消耗的=========num={}, 操作后={}, 时间={}",needCount,user.getItemManager().getItemMap().get(Global.STAMINA).getItemNum(),user.getItemManager().getItemMap().get(Global.STAMINA).getEndingTime()); + } } Item myItem = itemManager.getItem(userItem.getKey()); if (null == myItem) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java index 9bdcb22e5..9b0b6ce2a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -124,7 +124,7 @@ public class MessageUtil { } GeneratedMessage generatedMessage = CommonProto.ErrorResponse.newBuilder().setErrCode(errorCode).setErrMsg(errMsg).build(); byte[] byteBuf = wrappedBuffer(session.getUid(), session.getToken(), session.getIndex(), - errorCode, MessageTypeProto.MessageType.ERROR_CODE_INDICATION_VALUE, generatedMessage); + 0, MessageTypeProto.MessageType.ERROR_CODE_INDICATION_VALUE, generatedMessage); session.writeAndFlush(byteBuf); } @@ -137,7 +137,7 @@ public class MessageUtil { generatedMessage = CommonProto.ErrorResponse.newBuilder().setErrCode(errorCode).setErrMsg(errMsg).build(); LOGGER.error("send error msg,the uid={},the msgId={},the errMsg={}",session.getUid(),msgId,errMsg); byte[] byteBuf = wrappedBuffer(session.getUid(), session.getToken(), session.getIndex(), - errorCode,msgId, generatedMessage); + 0,msgId, generatedMessage); session.writeAndFlush(byteBuf); session.putBackMassageToMap(byteBuf); }