update 聊天模块新增异常
This commit is contained in:
@@ -15,7 +15,9 @@ public enum ExceptionEnum {
|
||||
SET_PRINCIPAL_FAIL(1022, "websocket链接异常,用户身份设置失败"),
|
||||
GET_PRINCIPAL_FAIL(1023, "websocket链接异常,用户信息邮箱获取失败"),
|
||||
ACCOUNT_HAS_CONNECTED(1024, "当前登录用户在其他地方链接"),
|
||||
;
|
||||
|
||||
ROOM_NOT_EXIST(1025, "聊天室不存在,发送消息失败");
|
||||
|
||||
|
||||
private final int code;
|
||||
private final String description;
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.m2pool.chat.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.m2pool.chat.config.CustomWebSocketConfig;
|
||||
import com.m2pool.chat.constant.Destination;
|
||||
import com.m2pool.chat.constant.ExceptionEnum;
|
||||
import com.m2pool.chat.dto.WebsocketMessageDto;
|
||||
import com.m2pool.chat.entity.ChatMessage;
|
||||
import com.m2pool.chat.entity.ChatRoom;
|
||||
@@ -13,6 +14,7 @@ import com.m2pool.chat.service.StompService;
|
||||
import com.m2pool.chat.vo.UserMessageVo;
|
||||
import com.m2pool.common.core.web.Result.AjaxResult;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.messaging.MessageDeliveryException;
|
||||
import org.springframework.messaging.simp.SimpMessagingTemplate;
|
||||
import org.springframework.messaging.simp.user.SimpUserRegistry;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -64,24 +66,7 @@ public class StompServiceImpl implements StompService {
|
||||
ChatRoom chatRoom = chatRoomMapper.selectOne(new LambdaQueryWrapper<ChatRoom>()
|
||||
.eq(ChatRoom::getUserOneEmail,userMessageVo.getEmail())
|
||||
.eq(ChatRoom::getUserTwoEmail,principal.getName()));
|
||||
|
||||
build.setRoomId(userMessageVo.getRoomId());
|
||||
int serviceReadNum = chatRoom != null ? chatRoom.getClientReadNum() : 0;
|
||||
build.setClientReadNum( serviceReadNum+ 1);
|
||||
//分块传输,只有最后一个块拼接完成才能发送消息
|
||||
//if (userMessageVo.getCurrentChunk() == userMessageVo.getTotalChunks()-1){
|
||||
// build.setContent(handleImage(userMessageVo.getEmail()+principal.getName(),userMessageVo.getContent()));
|
||||
// System.out.println("发送图片成功"+build.getContent());
|
||||
// messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_USER + "/" + userMessageVo.getEmail(),build);
|
||||
// executeTran(principal, userMessageVo, chatRoom);
|
||||
// imageContent.remove(userMessageVo.getEmail()+principal.getName());
|
||||
//}else{
|
||||
// handleImage(userMessageVo.getEmail()+principal.getName(),userMessageVo.getContent());
|
||||
//}
|
||||
Long id = executeTran(principal, userMessageVo, chatRoom);
|
||||
System.out.println("发送消息,聊天室id"+userMessageVo.getRoomId()+"发送者邮箱"+principal.getName()+"接受者邮箱"+userMessageVo.getEmail()+"消息id"+id);
|
||||
//多端情况下,需要把消息发送给自己
|
||||
build.setId(id);
|
||||
build(chatRoom,userMessageVo,principal,build);
|
||||
messagingTemplate.convertAndSendToUser(principal.getName(), Destination.QUEUE_CUSTOMER + "/" + principal.getName(),build);
|
||||
messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_USER + "/" + userMessageVo.getEmail(),build);
|
||||
return AjaxResult.success("成功");
|
||||
@@ -93,35 +78,28 @@ public class StompServiceImpl implements StompService {
|
||||
ChatRoom chatRoom = chatRoomMapper.selectOne(new LambdaQueryWrapper<ChatRoom>()
|
||||
.eq(ChatRoom::getUserOneEmail, principal.getName())
|
||||
.eq(ChatRoom::getUserTwoEmail, userMessageVo.getEmail()));
|
||||
build.setRoomId(userMessageVo.getRoomId());
|
||||
int serviceReadNum = chatRoom != null ? chatRoom.getServiceReadNum() : 0;
|
||||
build.setClientReadNum(serviceReadNum + 1);
|
||||
|
||||
//分块传输,只有最后一个块拼接完成才能发送消息
|
||||
//if (userMessageVo.getCurrentChunk() == userMessageVo.getTotalChunks()-1){
|
||||
// build.setContent(handleImage(userMessageVo.getEmail()+principal.getName(),userMessageVo.getContent()));
|
||||
// messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_CUSTOMER + "/" + userMessageVo.getEmail(),build);
|
||||
// executeTran(principal, userMessageVo, chatRoom);
|
||||
// imageContent.remove(userMessageVo.getEmail()+principal.getName());
|
||||
//}else{
|
||||
// handleImage(userMessageVo.getEmail()+principal.getName(),userMessageVo.getContent());
|
||||
//}
|
||||
Long id = executeTran(principal, userMessageVo, chatRoom);
|
||||
System.out.println("发送消息,聊天室id"+userMessageVo.getRoomId()+"发送者邮箱"+principal.getName()+"接受者邮箱"+userMessageVo.getEmail()+"消息id"+id);
|
||||
// 多端情况下,需要把消息发送给
|
||||
build.setId(id);
|
||||
build(chatRoom,userMessageVo,principal,build);
|
||||
messagingTemplate.convertAndSendToUser(principal.getName(), Destination.QUEUE_USER + "/" + principal.getName(),build);
|
||||
messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_CUSTOMER + "/" + userMessageVo.getEmail(),build);
|
||||
|
||||
return AjaxResult.success("成功");
|
||||
}
|
||||
/**
|
||||
* 分片图片处理
|
||||
* @return
|
||||
*/
|
||||
//private String handleImage(String key,String value){
|
||||
// return imageContent.compute(key, (k, s) -> s + value);
|
||||
//}
|
||||
|
||||
public void build(ChatRoom chatRoom,UserMessageVo userMessageVo,StompPrincipal principal,WebsocketMessageDto build){
|
||||
if (chatRoom == null && userMessageVo.getRoomId() == null){
|
||||
throw new MessageDeliveryException(ExceptionEnum.fromCode(ExceptionEnum.ROOM_NOT_EXIST));
|
||||
}
|
||||
if(chatRoom != null && userMessageVo.getRoomId() == null){
|
||||
userMessageVo.setRoomId(chatRoom.getId());
|
||||
}
|
||||
build.setRoomId(userMessageVo.getRoomId());
|
||||
int serviceReadNum = chatRoom != null ? chatRoom.getServiceReadNum() : 0;
|
||||
build.setClientReadNum(serviceReadNum + 1);
|
||||
Long id = executeTran(principal, userMessageVo, chatRoom);
|
||||
System.out.println("发送消息,聊天室id"+userMessageVo.getRoomId()+"发送者邮箱"+principal.getName()+"接受者邮箱"+userMessageVo.getEmail()+"消息id"+id);
|
||||
// 多端情况下,需要把消息发送给
|
||||
build.setId(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建聊天实时返回信息
|
||||
|
||||
Reference in New Issue
Block a user