From 1c152e2d1a5dbdec4df2197783564e3a53612478 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Thu, 31 Oct 2024 17:24:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=AF=B9=E4=B8=80=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/webSocket/WebSocketServer.java | 3 + .../system/domain/vo/SocketMessageVo.java | 6 ++ .../impl/SocketContactServiceImpl.java | 11 ++- ruoyi-ui/src/layout/components/Navbar.vue | 97 ++++++++++++++++--- ruoyi-ui/src/utils/websocket.js | 5 +- 5 files changed, 103 insertions(+), 19 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/webSocket/WebSocketServer.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/webSocket/WebSocketServer.java index f79c5fa..21e09f1 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/webSocket/WebSocketServer.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/webSocket/WebSocketServer.java @@ -69,9 +69,12 @@ public class WebSocketServer { */ @OnMessage public void onMessage(String message) throws IOException { + System.out.println("-------------------------------------------------------------------"); JSONObject jsonObject = JSONObject.parseObject(message); String userId = jsonObject.getString("userId"); String type = jsonObject.getString("type"); + System.out.println(type); + System.out.println(message); if (type.equals(MessageType.CHAT.getType())) { log.debug("聊天消息推送"); sendToUser(userId, JSONObject.toJSONString(jsonObject)); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SocketMessageVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SocketMessageVo.java index 8ed5e5c..f515377 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SocketMessageVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SocketMessageVo.java @@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; +import com.ruoyi.common.core.domain.entity.SysUser; import lombok.Data; import java.util.Date; @@ -58,5 +59,10 @@ public class SocketMessageVo { @ExcelProperty(value = "备注") private String remark; + /** + * 用户数据 + */ + private SysUser user; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SocketContactServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SocketContactServiceImpl.java index 8029623..480e9ce 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SocketContactServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SocketContactServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.system.domain.SocketMessage; +import com.ruoyi.system.domain.vo.SocketMessageVo; import com.ruoyi.system.mapper.SocketMessageMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.service.ISysUserService; @@ -25,6 +26,7 @@ import com.ruoyi.system.service.ISocketContactService; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.stream.Collectors; /** * 通信目录Service业务层处理 @@ -56,7 +58,14 @@ public class SocketContactServiceImpl implements ISocketContactService { .eq(SocketMessage::getUserId, socketContactVo.getUserId()) ); - socketContactVo.setMessages(socketMessageMapper.selectVoList(socketMessageLambdaQueryWrapper)); + socketContactVo.setUser(sysUserMapper.selectUserById(socketContactVo.getContactUserId())); + List socketMessageVos = socketMessageMapper.selectVoList(socketMessageLambdaQueryWrapper); + socketMessageVos.stream() + .peek(item->{ + SysUser sysUser = sysUserMapper.selectUserById(item.getUserId()); + item.setUser(sysUser); + }).collect(Collectors.toList()); + socketContactVo.setMessages(socketMessageVos); return socketContactVo; } diff --git a/ruoyi-ui/src/layout/components/Navbar.vue b/ruoyi-ui/src/layout/components/Navbar.vue index b8e44e1..fbbba08 100644 --- a/ruoyi-ui/src/layout/components/Navbar.vue +++ b/ruoyi-ui/src/layout/components/Navbar.vue @@ -11,8 +11,8 @@ -
- 99 +
+
@@ -43,11 +43,81 @@ - + + +
+ + + {{currentContact.user.nickName}} + + + + + + +
+ +
{{item.user.nickName}}:
+
+
+ {{item.content}} +
+
+
{{item.createTime}}
+
+
+
+ +
+ {{item.content}} +
+ + {{item.createTime}} +
+
+
+ +
+
+ + + + + +
+ +
+ +
+
+
+ + + 发送 +
+ +
+
+
+ + + + + + + + 与您进行过沟通的联系人都会在左侧列表中显示 + + +
+
+ @@ -55,18 +125,13 @@ - - - 添加联系人 - - - + 全部 个人 群聊 -
+
@@ -111,7 +176,11 @@
+ + + +
@@ -293,7 +362,6 @@ export default { this.fleshScroll(); }, subscribeMessage(res) { - if (res) { const { sendUserId, sendUserName, userId, type, detail } = res.detail.data; const message = { @@ -310,6 +378,7 @@ export default { } }, fleshLastMsg() { + console.log(this.contactList) const index = this.contactList.findIndex(e => e.id === this.currentContact.id); this.contactList[index].endMsg = this.msgList[this.msgList.length - 1].content; }, @@ -452,7 +521,7 @@ export default { } .main { background-color: white; - height: 600px; + height: 86%; margin-left: 5px; } .main_empty { @@ -471,7 +540,7 @@ export default { } .msg_content { margin-top: 30px; - height: 390px; + height: 50%; overflow: auto; //background-color: gray; } diff --git a/ruoyi-ui/src/utils/websocket.js b/ruoyi-ui/src/utils/websocket.js index 9f3cb19..9760809 100644 --- a/ruoyi-ui/src/utils/websocket.js +++ b/ruoyi-ui/src/utils/websocket.js @@ -15,15 +15,11 @@ const initWebSocket = async () => { console.log("未登录!websocket工具获取不到userId") }else { const wsUrl = process.env.VUE_APP_SOCKET_SERVER + store.state.user.id; - console.log("连接已开启") - socket = new WebSocket(wsUrl); - socket.onerror = webSocketOnError; socket.onmessage = webSocketOnMessage; socket.onclose = closeWebsocket; socket.onopen = openWebsocket; - console.log(socket) } } else { Notification.error({ @@ -94,6 +90,7 @@ const webSocketOnError = (e) => { //服务器返回的数据 const webSocketOnMessage = (e)=> { + console.log(e) //判断是否登录 if (getToken()) { //window自定义事件