bug修复

This commit is contained in:
2025-10-26 23:26:30 +08:00
parent 85e910fac9
commit df818578e5
20 changed files with 2008 additions and 98 deletions
@@ -66,7 +66,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.page(page, wrapper);
}
@@ -75,7 +75,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -94,7 +94,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
wrapper.eq(Message::getConversationId, conversationId)
.between(Message::getCreateTime, startTime, endTime)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -103,7 +103,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime)
.orderByDesc(Message::getMessageOrder)
.last("LIMIT 1");
return this.getOne(wrapper);
}
@@ -113,7 +113,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getParentMessageId, parentMessageId)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -184,10 +184,36 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
message.setIsRead(0);
}
// 设置消息顺序 - 在同一个会话中递增
if (message.getMessageOrder() == null) {
Long nextOrder = getNextMessageOrder(message.getConversationId());
message.setMessageOrder(nextOrder);
}
this.save(message);
return message;
}
/**
* 获取会话中下一个消息顺序
*
* @param conversationId 会话ID
* @return 下一个消息顺序
*/
private Long getNextMessageOrder(String conversationId) {
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getMessageOrder)
.last("LIMIT 1");
Message lastMessage = this.getOne(wrapper);
if (lastMessage != null && lastMessage.getMessageOrder() != null) {
return lastMessage.getMessageOrder() + 1;
}
return 1L;
}
@Override
public boolean markAsRead(String messageId) {
return updateReadStatus(messageId, 1);
@@ -200,7 +226,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
wrapper.eq(Message::getUserId, userId)
.between(Message::getCreateTime, startTime, endTime)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -211,7 +237,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.page(page, wrapper);
}
@@ -223,7 +249,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.like(StringUtils.hasText(keyword), Message::getContent, keyword)
.orderByDesc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
IPage<Message> result = this.page(page, wrapper);
return result.getRecords();
}
@@ -235,7 +261,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
.orderByDesc(Message::getMessageOrder);
IPage<Message> result = this.page(page, wrapper);
return result.getRecords();
}