From 91b70d5ad2ada85cf00b25f7b9ecd9cf980bf138 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期一, 12 八月 2024 16:42:44 +0800 Subject: [PATCH] 优化:websocket接收消息 --- ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java | 75 ++++++++++++++++++++++++++----------- 1 files changed, 53 insertions(+), 22 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..d442904 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,26 +1,23 @@ package com.ruoyi.call.service.impl; -import java.util.List; - import com.ruoyi.call.domain.*; -import com.ruoyi.call.mapper.*; +import com.ruoyi.call.dto.MessageEvent; +import com.ruoyi.call.mapper.ArdCallGroupUserMapper; +import com.ruoyi.call.mapper.ArdCallHistoryMapper; +import com.ruoyi.call.mapper.ArdCallSessionMapper; +import com.ruoyi.call.mapper.ArdCallUnreadMessagesMapper; +import com.ruoyi.call.service.IArdCallGroupService; +import com.ruoyi.call.service.IArdCallHistoryService; import com.ruoyi.common.utils.DateUtils; - -import com.ruoyi.common.utils.MessageUtils; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.IdUtils; -import com.ruoyi.utils.websocket.util.WebSocketUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; -import java.util.ArrayList; - -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.call.service.IArdCallHistoryService; - import javax.annotation.Resource; - -import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; +import java.util.List; /** * 浼氳瘽鍘嗗彶Service涓氬姟灞傚鐞� @@ -29,6 +26,7 @@ * @date 2024-07-03 */ @Service +@Slf4j(topic = "msgListener") public class ArdCallHistoryServiceImpl implements IArdCallHistoryService { @Resource private ArdCallHistoryMapper ardCallHistoryMapper; @@ -38,6 +36,10 @@ private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper; @Resource private ArdCallGroupUserMapper ardCallGroupUserMapper; + @Resource + private IArdCallGroupService ardCallGroupService; + @Autowired + private ApplicationEventPublisher eventPublisher; /** * 鏌ヨ浼氳瘽鍘嗗彶 @@ -47,7 +49,18 @@ */ @Override public ArdCallHistory selectArdCallHistoryById(String id) { - return ardCallHistoryMapper.selectArdCallHistoryById(id); + ArdCallHistory ardCallHistory = ardCallHistoryMapper.selectArdCallHistoryById(id); + if (ardCallHistory != null) { + //缇よ亰鍒欏皢targetNickName鏀逛负缇ゅ悕绉� + ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(ardCallHistory.getSessionId()); + if (ardCallSession != null && ardCallSession.getType().equals("1")) { + ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(ardCallHistory.getTargetId()); + if (ardCallGroup != null) { + ardCallHistory.setTargetNickName(ardCallGroup.getName()); + } + } + } + return ardCallHistory; } /** @@ -58,7 +71,18 @@ */ @Override public List<ArdCallHistory> selectArdCallHistoryList(ArdCallHistory ardCallHistory) { - return ardCallHistoryMapper.selectArdCallHistoryList(ardCallHistory); + List<ArdCallHistory> ardCallHistories = ardCallHistoryMapper.selectArdCallHistoryList(ardCallHistory); + ardCallHistories.stream().forEach(aCallHistory -> { + //缇よ亰鍒欏皢targetNickName鏀逛负缇ゅ悕绉� + ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(aCallHistory.getSessionId()); + if (ardCallSession != null && ardCallSession.getType().equals("1")) { + ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(aCallHistory.getTargetId()); + if (ardCallGroup != null) { + aCallHistory.setTargetNickName(ardCallGroup.getName()); + } + } + }); + return ardCallHistories; } /** @@ -80,13 +104,17 @@ 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()); + MessageEvent messageEvent = new MessageEvent(ardCallHistory.getTargetId(), ardCallHistory); + eventPublisher.publishEvent(messageEvent); } else { //鏇存柊缇よ亰鐢ㄦ埛鏈娑堟伅璁℃暟 ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser(); @@ -101,16 +129,19 @@ 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 + MessageEvent messageEvent = new MessageEvent(groupUser.getUserId(), ardCallHistory); + eventPublisher.publishEvent(messageEvent); } - //websocket鍙戦�佺粰targetId - WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(groupUser.getUserId()),ardCallHistory.getContent()); }); - } return ardCallHistoryMapper.insertArdCallHistory(ardCallHistory); } -- Gitblit v1.9.3