From 0918083443d3920335c5b09a5d28e4f8d1bb3f45 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 27 May 2021 16:59:28 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/netty/logic/WebSocketLogic.java | 14 +++++-- src/main/java/com/xcong/excoin/netty/bean/ChatRequest.java | 59 ++++++++--------------------- src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java | 22 +++++----- 3 files changed, 37 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/xcong/excoin/netty/bean/ChatRequest.java b/src/main/java/com/xcong/excoin/netty/bean/ChatRequest.java index 15936f6..ef23959 100644 --- a/src/main/java/com/xcong/excoin/netty/bean/ChatRequest.java +++ b/src/main/java/com/xcong/excoin/netty/bean/ChatRequest.java @@ -1,58 +1,31 @@ package com.xcong.excoin.netty.bean; -import java.io.Serializable; +import lombok.Data; +import java.io.Serializable; +import java.util.Date; + +/** + * {"data": {"fromMemberId": 443, "isSelf": 1, "memberId": 443, "msg": "w shi shei ", "msgType": 1, "targetId": 444}, "type": 2} + */ +@Data public class ChatRequest implements Serializable { private static final long serialVersionUID = 3079080008111369136L; - private String to; + private Long fromMemberId; - private String from; + private Long targetId; + + private Long memberId; private Integer msgType; - private String content; + private String msg; + + private Integer isSelf; private Integer cmd; - public Integer getCmd() { - return cmd; - } - - public void setCmd(Integer cmd) { - this.cmd = cmd; - } - - public String getTo() { - return to; - } - - public void setTo(String to) { - this.to = to; - } - - public String getFrom() { - return from; - } - - public void setFrom(String from) { - this.from = from; - } - - public Integer getMsgType() { - return msgType; - } - - public void setMsgType(Integer msgType) { - this.msgType = msgType; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } + private Long timestamp; } diff --git a/src/main/java/com/xcong/excoin/netty/logic/WebSocketLogic.java b/src/main/java/com/xcong/excoin/netty/logic/WebSocketLogic.java index 8378aa7..aec85e6 100644 --- a/src/main/java/com/xcong/excoin/netty/logic/WebSocketLogic.java +++ b/src/main/java/com/xcong/excoin/netty/logic/WebSocketLogic.java @@ -79,16 +79,22 @@ ChatRequest chat = JSONObject.parseObject(chatStr, ChatRequest.class); Channel channel = ChannelManager.findWebSocketChannel(requestBean.getChannelId()); - channel.writeAndFlush(NettyTools.webSocketJson(ResponseBean.ok(chat))); + ResponseBean res = ResponseBean.ok(chat); + res.setType(2); + channel.writeAndFlush(NettyTools.webSocketJson(res)); + // 判断是否在线 - Channel targetChannel = ChannelManager.findWsChannel(Long.parseLong(chat.getTo())); + Channel targetChannel = ChannelManager.findWsChannel(chat.getTargetId()); if (targetChannel != null) { - targetChannel.writeAndFlush(NettyTools.webSocketBytes(JSONObject.toJSONString(ResponseBean.ok(chat)))); + chat.setIsSelf(2); + ResponseBean toRes = ResponseBean.ok(chat); + res.setType(2); + targetChannel.writeAndFlush(NettyTools.webSocketJson(toRes)); chatProducer.sendMsgHistory(chat); } else { // 在redis中保存用户未在线时,给该用户发送的消息条数 - String key = AppContants.MSG_NOTICE + chat.getTo(); + String key = AppContants.MSG_NOTICE + chat.getTargetId(); String value = redisUtils.getString(key); if (StrUtil.isEmpty(value)) { redisUtils.set(key , 1); diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java index 4902736..fffc824 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java +++ b/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java @@ -41,33 +41,33 @@ log.info("收到历史消息处理:{}", content); ChatRequest chat = JSONObject.parseObject(content, ChatRequest.class); - Long toId = Long.parseLong(chat.getTo()); - Long fromId = Long.parseLong(chat.getFrom()); + Long toId = chat.getTargetId(); + Long fromId = chat.getFromMemberId(); // 发送人是否存在聊天框 - OtcMsgUserListEntity fromList = otcMsgUserListDao.selectChatListByToAndFrom(Long.parseLong(chat.getTo()), Long.parseLong(chat.getFrom())); + OtcMsgUserListEntity fromList = otcMsgUserListDao.selectChatListByToAndFrom(toId, fromId); if (fromList == null) { OtcMsgUserListEntity from = new OtcMsgUserListEntity(); - from.setMemberId(Long.parseLong(chat.getFrom())); - from.setTargetId(Long.parseLong(chat.getTo())); + from.setMemberId(toId); + from.setTargetId(fromId); from.setIsRead(OtcMsgUserListEntity.ISREAD_TWO); from.setLastMsgTime(new Date()); otcMsgUserListDao.insert(from); } // 收件人是否存在聊天框 - OtcMsgUserListEntity toList = otcMsgUserListDao.selectChatListByToAndFrom(Long.parseLong(chat.getFrom()), Long.parseLong(chat.getTo())); + OtcMsgUserListEntity toList = otcMsgUserListDao.selectChatListByToAndFrom(fromId, toId); if (toList == null) { OtcMsgUserListEntity from = new OtcMsgUserListEntity(); - from.setMemberId(Long.parseLong(chat.getTo())); - from.setTargetId(Long.parseLong(chat.getFrom())); + from.setMemberId(toId); + from.setTargetId(fromId); from.setIsRead(OtcMsgUserListEntity.ISREAD_ONE); from.setLastMsgTime(new Date()); otcMsgUserListDao.insert(from); } else { // 收件人正在聊的用户 - String value = redisUtils.getString(AppContants.MSG_CHATTING + chat.getTo()); - if (StrUtil.isNotBlank(value) && value.equals(chat.getFrom())) { + String value = redisUtils.getString(AppContants.MSG_CHATTING + toId); + if (StrUtil.isNotBlank(value) && value.equals(fromId.toString())) { toList.setLastMsgTime(new Date()); otcMsgUserListDao.updateById(toList); } else { @@ -84,7 +84,7 @@ toHistory.setTargetId(toId); toHistory.setIsSelf(OtcMsgHistoryEntity.ISSELF_TWO); toHistory.setMsgType(chat.getMsgType()); - toHistory.setMsg(chat.getContent()); + toHistory.setMsg(chat.getMsg()); OtcMsgHistoryEntity fromHistory = new OtcMsgHistoryEntity(); BeanUtil.copyProperties(toHistory, fromHistory); -- Gitblit v1.9.1