From 4e84b88326efbd49621dfc56e56f283cab497df2 Mon Sep 17 00:00:00 2001 From: liukai Date: Sat, 6 Sep 2025 20:53:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=AE=B0=E5=BD=95=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E6=B7=BB=E5=8A=A0=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/app/config/MysqlChatMemoryRepository.java | 15 +++++++++++---- .../com/ai/app/entity/ChatMessageHistory.java | 2 ++ .../ai/app/mapper/ChatMessageHistoryMapper.java | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ai/app/config/MysqlChatMemoryRepository.java b/src/main/java/com/ai/app/config/MysqlChatMemoryRepository.java index 1b6a8c5..368654d 100644 --- a/src/main/java/com/ai/app/config/MysqlChatMemoryRepository.java +++ b/src/main/java/com/ai/app/config/MysqlChatMemoryRepository.java @@ -13,6 +13,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; @@ -43,8 +44,13 @@ public class MysqlChatMemoryRepository implements ChatMemoryRepository { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public void saveAll(String conversationId, List messages) { chatMessageHistoryMapper.deleteByConversationId(conversationId); - List messageHistoryList = messages.stream().map(message -> { - ChatMessageHistory chatMessageHistory = new ChatMessageHistory(); + + ArrayList messageHistoryList = new ArrayList<>(); + ChatMessageHistory chatMessageHistory; + Message message; + for (int i = 0; i < messages.size(); i++) { + chatMessageHistory = new ChatMessageHistory(); + message = messages.get(i); chatMessageHistory.setId(UUID.randomUUID().toString()); chatMessageHistory.setConversationId(conversationId); chatMessageHistory.setMessageType(message.getMessageType().getValue()); @@ -53,9 +59,10 @@ public class MysqlChatMemoryRepository implements ChatMemoryRepository { if (message instanceof AssistantMessage am) { chatMessageHistory.setToolCalls(JSON.toJSONString(am.getToolCalls())); } + chatMessageHistory.setSort(i); chatMessageHistory.setCreateTime(LocalDateTime.now()); - return chatMessageHistory; - }).collect(Collectors.toList()); + messageHistoryList.add(chatMessageHistory); + } chatMessageHistoryMapper.insert(messageHistoryList); } diff --git a/src/main/java/com/ai/app/entity/ChatMessageHistory.java b/src/main/java/com/ai/app/entity/ChatMessageHistory.java index 2e68080..d4856e1 100644 --- a/src/main/java/com/ai/app/entity/ChatMessageHistory.java +++ b/src/main/java/com/ai/app/entity/ChatMessageHistory.java @@ -28,5 +28,7 @@ public class ChatMessageHistory { private String toolCalls; + private int sort; + private LocalDateTime createTime; } diff --git a/src/main/java/com/ai/app/mapper/ChatMessageHistoryMapper.java b/src/main/java/com/ai/app/mapper/ChatMessageHistoryMapper.java index a686ec1..7934482 100644 --- a/src/main/java/com/ai/app/mapper/ChatMessageHistoryMapper.java +++ b/src/main/java/com/ai/app/mapper/ChatMessageHistoryMapper.java @@ -14,7 +14,7 @@ import java.util.List; */ public interface ChatMessageHistoryMapper extends BaseMapper { - @Select("select * from chat_message_history where conversation_id = #{conversationId}") + @Select("select * from chat_message_history where conversation_id = #{conversationId} order by sort asc") List selectByConversationId(String conversationId); @Delete("delete from chat_message_history where conversation_id = #{conversationId}")