mirror of
https://github.com/HuLaSpark/HuLa-Server.git
synced 2026-08-29 00:03:28 +08:00
fix: 离线消息同步接口完善
This commit is contained in:
+2
-1
@@ -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 ="消息内容不同的消息类型,内容体不同")
|
||||
|
||||
+1
-1
@@ -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));
|
||||
|
||||
+12
-12
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user