bug修复
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user