From 408d4d4bc1877c7365ce5d9058ef411587241334 Mon Sep 17 00:00:00 2001 From: ziin Date: Wed, 28 Jan 2026 18:06:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(service):=20=E9=99=90=E5=88=B6=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E6=9F=A5=E8=AF=A2=E4=BB=85=E6=B4=BB=E8=B7=83=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KeyboardAiChatMessageServiceImpl.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java index 9e37efe..258e99c 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiChatMessageServiceImpl.java @@ -7,8 +7,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yolo.keyborad.mapper.KeyboardAiChatMessageMapper; import com.yolo.keyborad.model.entity.KeyboardAiChatMessage; +import com.yolo.keyborad.model.entity.KeyboardAiChatSession; import com.yolo.keyborad.model.vo.ChatMessageHistoryVO; import com.yolo.keyborad.service.KeyboardAiChatMessageService; +import com.yolo.keyborad.service.KeyboardAiChatSessionService; +import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.util.Collections; @@ -21,12 +24,28 @@ import java.util.List; @Service public class KeyboardAiChatMessageServiceImpl extends ServiceImpl implements KeyboardAiChatMessageService { + @Resource + private KeyboardAiChatSessionService sessionService; + @Override public IPage pageHistory(Long userId, Long companionId, Integer pageNum, Integer pageSize) { + // 获取当前活跃会话 + LambdaQueryWrapper sessionWrapper = new LambdaQueryWrapper<>(); + sessionWrapper.eq(KeyboardAiChatSession::getUserId, userId) + .eq(KeyboardAiChatSession::getCompanionId, companionId) + .eq(KeyboardAiChatSession::getIsActive, true); + KeyboardAiChatSession activeSession = sessionService.getOne(sessionWrapper); + + // 如果没有活跃会话,返回空分页 + if (activeSession == null) { + return new Page(pageNum, pageSize).setRecords(Collections.emptyList()); + } + Page page = new Page<>(pageNum, pageSize); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(KeyboardAiChatMessage::getUserId, userId) .eq(KeyboardAiChatMessage::getCompanionId, companionId) + .eq(KeyboardAiChatMessage::getSessionId, activeSession.getId()) .orderByDesc(KeyboardAiChatMessage::getCreatedAt); IPage entityPage = this.page(page, queryWrapper); return entityPage.convert(entity -> BeanUtil.copyProperties(entity, ChatMessageHistoryVO.class)); @@ -34,9 +53,22 @@ public class KeyboardAiChatMessageServiceImpl extends ServiceImpl getRecentMessages(Long userId, Long companionId, int limit) { + // 获取当前活跃会话 + LambdaQueryWrapper sessionWrapper = new LambdaQueryWrapper<>(); + sessionWrapper.eq(KeyboardAiChatSession::getUserId, userId) + .eq(KeyboardAiChatSession::getCompanionId, companionId) + .eq(KeyboardAiChatSession::getIsActive, true); + KeyboardAiChatSession activeSession = sessionService.getOne(sessionWrapper); + + // 如果没有活跃会话,返回空列表 + if (activeSession == null) { + return Collections.emptyList(); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(KeyboardAiChatMessage::getUserId, userId) .eq(KeyboardAiChatMessage::getCompanionId, companionId) + .eq(KeyboardAiChatMessage::getSessionId, activeSession.getId()) .orderByDesc(KeyboardAiChatMessage::getCreatedAt) .last("LIMIT " + limit); List messages = this.list(queryWrapper);