update 聊天室功能,图片改url
This commit is contained in:
parent
65bd4c90c1
commit
f65f08d1a6
|
@ -19,7 +19,7 @@ public class CommonMessageConvert implements MessageConverter {
|
||||||
/**
|
/**
|
||||||
* 将客户端发送过来的消息转换为指定的对象
|
* 将客户端发送过来的消息转换为指定的对象
|
||||||
* @param message 客户端发送过来的消息
|
* @param message 客户端发送过来的消息
|
||||||
* @param targetClass 目标数据类型
|
* @param targetClass 目标数据类型 注意:这里的targetClass是消息对象,对应接口的@Payload 注解的类型,且里面序列化的字段必须一模一样。否则序列化报错
|
||||||
* @return 转换后的对象
|
* @return 转换后的对象
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,6 +30,7 @@ public class CommonMessageConvert implements MessageConverter {
|
||||||
System.out.println("发送者发送到服务器的消息:"+textPayload);
|
System.out.println("发送者发送到服务器的消息:"+textPayload);
|
||||||
return JsonUtil.convertString2Object(textPayload,targetClass);
|
return JsonUtil.convertString2Object(textPayload,targetClass);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
System.out.println("错误详情"+e);
|
||||||
throw new MessageDeliveryException( "消息格式错误");
|
throw new MessageDeliveryException( "消息格式错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,9 @@ import org.springframework.transaction.support.TransactionTemplate;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import static com.alibaba.nacos.client.utils.EnvUtil.LOGGER;
|
import static com.alibaba.nacos.client.utils.EnvUtil.LOGGER;
|
||||||
import static com.m2pool.chat.constant.UserType.CUSTOMER;
|
import static com.m2pool.chat.constant.UserType.CUSTOMER;
|
||||||
|
@ -48,6 +51,12 @@ public class StompServiceImpl implements StompService {
|
||||||
@Resource
|
@Resource
|
||||||
private CustomWebSocketConfig webSocketConfig;
|
private CustomWebSocketConfig webSocketConfig;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* key 为发送者+接受者 ,value 为 图片内容
|
||||||
|
*/
|
||||||
|
//private final ConcurrentHashMap<String, String> imageContent = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult sendMessageToUser(StompPrincipal principal, UserMessageVo userMessageVo) {
|
public AjaxResult sendMessageToUser(StompPrincipal principal, UserMessageVo userMessageVo) {
|
||||||
WebsocketMessageDto build = buildDto(principal, userMessageVo);
|
WebsocketMessageDto build = buildDto(principal, userMessageVo);
|
||||||
|
@ -58,9 +67,17 @@ public class StompServiceImpl implements StompService {
|
||||||
build.setRoomId(String.valueOf(userMessageVo.getRoomId()));
|
build.setRoomId(String.valueOf(userMessageVo.getRoomId()));
|
||||||
int serviceReadNum = chatRoom != null ? chatRoom.getClientReadNum() : 0;
|
int serviceReadNum = chatRoom != null ? chatRoom.getClientReadNum() : 0;
|
||||||
build.setClientReadNum( serviceReadNum+ 1);
|
build.setClientReadNum( serviceReadNum+ 1);
|
||||||
//不在判断接收者是否在线
|
//分块传输,只有最后一个块拼接完成才能发送消息
|
||||||
// boolean bool = checkOnline(userMessageVo);
|
//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());
|
||||||
|
//}
|
||||||
|
|
||||||
messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_USER + "/" + userMessageVo.getEmail(),build);
|
messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_USER + "/" + userMessageVo.getEmail(),build);
|
||||||
executeTran(principal, userMessageVo, chatRoom);
|
executeTran(principal, userMessageVo, chatRoom);
|
||||||
return AjaxResult.success("成功");
|
return AjaxResult.success("成功");
|
||||||
|
@ -69,17 +86,34 @@ public class StompServiceImpl implements StompService {
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult sendMessageToCustomer(StompPrincipal principal, UserMessageVo userMessageVo) {
|
public AjaxResult sendMessageToCustomer(StompPrincipal principal, UserMessageVo userMessageVo) {
|
||||||
WebsocketMessageDto build = buildDto(principal, userMessageVo);
|
WebsocketMessageDto build = buildDto(principal, userMessageVo);
|
||||||
|
|
||||||
ChatRoom chatRoom = chatRoomMapper.selectOne(new LambdaQueryWrapper<ChatRoom>()
|
ChatRoom chatRoom = chatRoomMapper.selectOne(new LambdaQueryWrapper<ChatRoom>()
|
||||||
.eq(ChatRoom::getUserOneEmail, userMessageVo.getEmail())
|
.eq(ChatRoom::getUserOneEmail, userMessageVo.getEmail())
|
||||||
.eq(ChatRoom::getUserTwoEmail, principal.getName()));
|
.eq(ChatRoom::getUserTwoEmail, principal.getName()));
|
||||||
build.setRoomId(String.valueOf(userMessageVo.getRoomId()));
|
build.setRoomId(String.valueOf(userMessageVo.getRoomId()));
|
||||||
int serviceReadNum = chatRoom != null ? chatRoom.getServiceReadNum() : 0;
|
int serviceReadNum = chatRoom != null ? chatRoom.getServiceReadNum() : 0;
|
||||||
build.setClientReadNum(serviceReadNum + 1);
|
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());
|
||||||
|
//}
|
||||||
messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_CUSTOMER + "/" + userMessageVo.getEmail(),build);
|
messagingTemplate.convertAndSendToUser(userMessageVo.getEmail(), Destination.QUEUE_CUSTOMER + "/" + userMessageVo.getEmail(),build);
|
||||||
executeTran(principal, userMessageVo, chatRoom);
|
executeTran(principal, userMessageVo, chatRoom);
|
||||||
|
|
||||||
return AjaxResult.success("成功");
|
return AjaxResult.success("成功");
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 分片图片处理
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
//private String handleImage(String key,String value){
|
||||||
|
// return imageContent.compute(key, (k, s) -> s + value);
|
||||||
|
//}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建聊天实时返回信息
|
* 构建聊天实时返回信息
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
package com.m2pool.chat.vo;
|
package com.m2pool.chat.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName UserMessageVo
|
* @ClassName UserMessageVo
|
||||||
* @Description 用户发送消息对象
|
* @Description 用户发送消息对象
|
||||||
|
@ -43,4 +48,24 @@ public class UserMessageVo {
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "聊天室id", example = "1")
|
@ApiModelProperty(value = "聊天室id", example = "1")
|
||||||
private String roomId;
|
private String roomId;
|
||||||
|
|
||||||
|
///**
|
||||||
|
// * 总的分片数
|
||||||
|
// */
|
||||||
|
//@ApiModelProperty(value = "总的分片数", example = "1",required = false)
|
||||||
|
//private Integer totalChunks;
|
||||||
|
///**
|
||||||
|
// * 当前分片数
|
||||||
|
// */
|
||||||
|
//@ApiModelProperty(value = "当前分片数", example = "1",required = false)
|
||||||
|
//private Integer currentChunk;
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * 是否是第一个分片
|
||||||
|
// */
|
||||||
|
//@ApiModelProperty(value = "是否是第一个分片", example = "true",required = false)
|
||||||
|
//private Boolean isFirstChunk;
|
||||||
|
//
|
||||||
|
//@ApiModelProperty(value = "发送时间", example = "2025-05-27T15:39:29.221Z",required = false)
|
||||||
|
//private Date sendTime;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue