优化处理

This commit is contained in:
2025-10-26 16:59:50 +08:00
parent fdac026720
commit 2e243c7671
45 changed files with 346 additions and 3757 deletions
@@ -195,35 +195,49 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
@Override
public List<Message> getByUserIdAndTimeRange(String userId, LocalDateTime startTime, LocalDateTime endTime) {
// 由于Message表没有直接的userId字段,需要通过conversation表关联查询
// 这里先通过conversationService获取用户的所有对话ID,然后查询这些对话的消息
return this.baseMapper.getByUserIdAndTimeRange(userId, startTime, endTime);
// 使用 MyBatis-Plus 条件构造器,直接根据消息表的 user_id 字段查询
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.between(Message::getCreateTime, startTime, endTime)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
return this.list(wrapper);
}
@Override
public IPage<Message> getByUserIdWithPage(String userId, Integer current, Integer size) {
// 手动实现分页
Integer offset = (current - 1) * size;
List<Message> records = this.baseMapper.getByUserIdWithPageList(userId, offset, size);
Long total = this.baseMapper.countByUserId(userId);
// 使用 MyBatis-Plus 分页 + 条件构造器
Page<Message> page = new Page<>(current, size);
page.setRecords(records);
page.setTotal(total);
return page;
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
return this.page(page, wrapper);
}
@Override
public List<Message> searchByUserIdAndKeyword(String userId, String keyword, Integer limit) {
// 通过conversation表关联查询用户的消息,根据关键词搜索
return this.baseMapper.searchByUserIdAndKeyword(userId, keyword, limit);
// 使用 MyBatis-Plus 分页 + 条件构造器,避免硬编码 SQL
Page<Message> page = new Page<>(1, limit);
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.like(StringUtils.hasText(keyword), Message::getContent, keyword)
.orderByDesc(Message::getCreateTime);
IPage<Message> result = this.page(page, wrapper);
return result.getRecords();
}
@Override
public List<Message> getRecentByUserId(String userId, Integer limit) {
// 获取用户最近消息,按时间倒序
return this.baseMapper.getRecentByUserId(userId, limit);
// 使用 MyBatis-Plus 分页查询最近消息
Page<Message> page = new Page<>(1, limit);
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
IPage<Message> result = this.page(page, wrapper);
return result.getRecords();
}
@Override