fix: 离线消息同步接口完善

This commit is contained in:
ql
2025-07-21 19:00:14 +08:00
parent 63954c0e8f
commit e6103b6796
3 changed files with 15 additions and 14 deletions
@@ -7,6 +7,7 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.Map;
/**
@@ -38,7 +39,7 @@ public class ChatMessageResp extends BaseEntity {
@Schema(description ="房间id")
private String roomId;
@Schema(description ="消息发送时间")
private Long sendTime;
private Date sendTime;
@Schema(description ="消息类型 1正常文本 2.撤回消息")
private Integer type;
@Schema(description ="消息内容不同的消息类型,内容体不同")
@@ -58,7 +58,7 @@ public class MessageAdapter {
private static ChatMessageResp.Message buildMessage(Message message, List<MessageMark> marks, Long receiveUid) {
ChatMessageResp.Message messageVO = new ChatMessageResp.Message();
BeanUtil.copyProperties(message, messageVO);
messageVO.setSendTime(message.getCreateTime().getTime());
messageVO.setSendTime(message.getCreateTime());
AbstractMsgHandler<?> msgHandler = MsgHandlerFactory.getStrategyNoNull(message.getType());
if (Objects.nonNull(msgHandler)) {
messageVO.setBody(msgHandler.showMsg(message));
@@ -263,29 +263,29 @@ public class ChatServiceImpl implements ChatService {
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
if(ObjectUtil.isNotNull(lastOptTime) && lastOptTime > 0) {
wrapper.ge(Message::getCreateTime, new Date(lastOptTime)).le(Message::getCreateTime, LocalDate.now());
wrapper.ge(Message::getCreateTime, new Date(lastOptTime)).le(Message::getCreateTime, new Date());
}else {
wrapper.ge(Message::getCreateTime, LocalDate.now().minusMonths(3));
wrapper.ge(Message::getCreateTime, LocalDate.now().minusDays(15));
}
List<Message> messages = messageDao.list(wrapper);
Map<Long, List<Message>> groupedMessages = messages.stream()
.collect(Collectors.groupingBy(Message::getRoomId));
Map<Long, List<Message>> filteredMessageMap = new HashMap<>();
// Map<Long, List<Message>> filteredMessageMap = new HashMap<>();
groupedMessages.forEach((roomId, messageList) -> {
Long lastMsgId = lastMsgIds.get(roomId) == null ? 0L : lastMsgIds.get(roomId);
List<Message> filteredList = messageList.stream()
.filter(item -> item.getId() > lastMsgId)
.toList();
filteredMessageMap.put(roomId, filteredList);
});
// groupedMessages.forEach((roomId, messageList) -> {
// Long lastMsgId = lastMsgIds.get(roomId) == null ? 0L : lastMsgIds.get(roomId);
// List<Message> filteredList = messageList.stream()
// .filter(item -> item.getId() > lastMsgId)
// .toList();
// filteredMessageMap.put(roomId, filteredList);
// });
// 4. 转换为响应对象并返回
List<ChatMessageResp> baseMessages = new ArrayList<>();
for (Long roomId : filteredMessageMap.keySet()) {
baseMessages.addAll(getMsgRespBatch(roomId, filteredMessageMap.get(roomId), receiveUid));
for (Long roomId : groupedMessages.keySet()) {
baseMessages.addAll(getMsgRespBatch(roomId, groupedMessages.get(roomId), receiveUid));
}
return baseMessages;
}