From f041323a2bce037843fcb163b017427baa556da3 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期三, 24 七月 2024 16:41:16 +0800 Subject: [PATCH] 优化:修改未读消息入库前判断不存在则插入 取消:程序自动拉起redis/mediamtx/minio,中间件全部服务化 增加:流媒体vtdu详情接口 --- ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 47 insertions(+), 5 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java index 8667806..29b8097 100644 --- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java @@ -1,7 +1,10 @@ package com.ruoyi.call.service.impl; +import java.util.HashMap; import java.util.List; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.ruoyi.call.domain.*; import com.ruoyi.call.mapper.*; import com.ruoyi.common.utils.DateUtils; @@ -13,12 +16,17 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.call.service.IArdCallHistoryService; import javax.annotation.Resource; +import javax.websocket.Session; import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; @@ -69,6 +77,7 @@ */ @Override public int insertArdCallHistory(ArdCallHistory ardCallHistory) { + ardCallHistory.setId(IdUtils.simpleUUID()); ardCallHistory.setCreateTime(DateUtils.getNowDate()); ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(ardCallHistory.getSessionId()); @@ -80,13 +89,29 @@ ardCallUnreadMessages.setUserId(ardCallHistory.getTargetId()); ardCallUnreadMessages.setSessionId(ardCallHistory.getSessionId()); ardCallUnreadMessages.setUnreadCount(1); - ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages); + int rows = ardCallUnreadMessagesMapper.selectCountByUserIdAndSessionId(ardCallUnreadMessages.getUserId(), ardCallUnreadMessages.getSessionId()); + if (rows == 0) { + ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages); + } } else { ardCallUnreadMessages.setUnreadCount(ardCallUnreadMessages.getUnreadCount() + 1); ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages); } //websocket鍙戦�佺粰targetId - WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(ardCallHistory.getTargetId()),ardCallHistory.getContent()); + // 鏋勫缓姝e垯琛ㄨ揪寮忔ā寮� + String regex = "^" + Pattern.quote(ardCallHistory.getTargetId()) + "_\\d+$"; + Pattern pattern = Pattern.compile(regex); + Map<String, Object> messageMap = new HashMap<>(); + messageMap.put("type", "message"); + messageMap.put("message", JSON.toJSONString(ardCallHistory)); + ONLINE_USER_SESSIONS.entrySet().stream() + .filter(entry -> { + Matcher matcher = pattern.matcher(entry.getKey()); + return matcher.matches(); + }) + .map(Map.Entry::getValue) + .forEach(session -> WebSocketUtils.sendMessage(session, messageMap)); + } else { //鏇存柊缇よ亰鐢ㄦ埛鏈娑堟伅璁℃暟 ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser(); @@ -101,14 +126,31 @@ ardCallUnreadMessages.setUserId(groupUser.getUserId()); ardCallUnreadMessages.setSessionId(ardCallHistory.getSessionId()); ardCallUnreadMessages.setUnreadCount(1); - ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages); + int rows = ardCallUnreadMessagesMapper.selectCountByUserIdAndSessionId(ardCallUnreadMessages.getUserId(), ardCallUnreadMessages.getSessionId()); + if (rows == 0) { + ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages); + } } else { ardCallUnreadMessages.setUnreadCount(ardCallUnreadMessages.getUnreadCount() + 1); ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages); } + //websocket鍙戦�佺粰targetId + // 鏋勫缓姝e垯琛ㄨ揪寮忔ā寮� + String regex = "^" + Pattern.quote(groupUser.getUserId()) + "_\\d+$"; + Pattern pattern = Pattern.compile(regex); + Map<String, Object> messageMap = new HashMap<>(); + messageMap.put("type", "message"); + messageMap.put("message", JSON.toJSONString(ardCallHistory)); + ONLINE_USER_SESSIONS.entrySet().stream() + .filter(entry -> + { + Matcher matcher = pattern.matcher(entry.getKey()); + return matcher.matches(); + }) + .map(Map.Entry::getValue) + .forEach(session -> WebSocketUtils.sendMessage(session, messageMap)); } - //websocket鍙戦�佺粰targetId - WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(groupUser.getUserId()),ardCallHistory.getContent()); + }); } -- Gitblit v1.9.3