From 6903ac1c0dd6a665d45b7cbe66470acea7b4f6a6 Mon Sep 17 00:00:00 2001 From: peanut_hzm Date: Sat, 26 Jul 2025 10:46:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96CozeAPI=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=80=BB=E8=BE=91=E5=92=8C=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复前端TrendingUpOutlined图标导入错误,改为LineChartOutlined - 优化CozeAPI调用记录保存逻辑: * 正确保存创建人和更新人字段为当前用户ID * 正确传递和保存message_id字段 * 新增带messageId的WebSocket聊天方法重载 - 修复WebSocket处理器中的用户消息保存逻辑 - 确保CozeApiCallService正确设置创建人和更新人字段 - 改进AI回复保存时的创建人设置逻辑 --- .idea/AugmentWebviewStateStore.xml | 2 +- .../com/emotion/service/AiChatService.java | 10 + .../service/impl/AiChatServiceImpl.java | 34 +- .../service/impl/CozeApiCallServiceImpl.java | 4 +- .../service/impl/WebSocketServiceImpl.java | 6 +- web/src/assets/styles/animations.scss | 256 ++++++++++ web/src/components/layout/AppHeader.vue | 157 ++++-- web/src/views/Home/index.vue | 477 ++++++++++++++++-- 8 files changed, 856 insertions(+), 90 deletions(-) create mode 100644 web/src/assets/styles/animations.scss diff --git a/.idea/AugmentWebviewStateStore.xml b/.idea/AugmentWebviewStateStore.xml index 88fc6f3..d408b67 100644 --- a/.idea/AugmentWebviewStateStore.xml +++ b/.idea/AugmentWebviewStateStore.xml @@ -3,7 +3,7 @@ diff --git a/backend-single/src/main/java/com/emotion/service/AiChatService.java b/backend-single/src/main/java/com/emotion/service/AiChatService.java index 495ea3f..c4d4de3 100644 --- a/backend-single/src/main/java/com/emotion/service/AiChatService.java +++ b/backend-single/src/main/java/com/emotion/service/AiChatService.java @@ -27,6 +27,16 @@ public interface AiChatService { */ String sendChatMessageForWebSocket(String conversationId, String message, String userId); + /** + * WebSocket方式发送聊天消息(只保存AI回复,带messageId) + * @param conversationId 会话ID + * @param messageId 用户消息ID + * @param message 用户消息内容 + * @param userId 用户ID + * @return AI回复内容 + */ + String sendChatMessageForWebSocket(String conversationId, String messageId, String message, String userId); + /** * 生成对话总结 * @param conversationId 会话ID diff --git a/backend-single/src/main/java/com/emotion/service/impl/AiChatServiceImpl.java b/backend-single/src/main/java/com/emotion/service/impl/AiChatServiceImpl.java index bc2d68e..85c0e30 100644 --- a/backend-single/src/main/java/com/emotion/service/impl/AiChatServiceImpl.java +++ b/backend-single/src/main/java/com/emotion/service/impl/AiChatServiceImpl.java @@ -149,7 +149,7 @@ public class AiChatServiceImpl implements AiChatService { log.info("WebSocket发送聊天消息: conversationId={}, userId={}, message={}", conversationId, userId, message); try { - // 调用Coze API + // 调用Coze API(不带messageId) String aiReply = sendMessage(conversationId, message, userId); // 注意:不保存用户消息,因为WebSocket处理器已经保存了 @@ -172,6 +172,38 @@ public class AiChatServiceImpl implements AiChatService { } } + @Override + public String sendChatMessageForWebSocket(String conversationId, String messageId, String message, String userId) { + log.info("WebSocket发送聊天消息(带messageId): conversationId={}, messageId={}, userId={}, message={}", + conversationId, messageId, userId, message); + + try { + // 调用Coze API(带messageId) + String aiReply = sendMessageWithMessageId(conversationId, messageId, message, userId); + + // 注意:不保存用户消息,因为WebSocket处理器已经保存了 + // 只保存AI回复 + Message aiMessage = new Message(); + aiMessage.setConversationId(conversationId); + aiMessage.setCreateBy(userId); // 设置创建人为当前用户 + aiMessage.setContent(aiReply); + aiMessage.setType("text"); + aiMessage.setSender("ai"); + aiMessage.setCozeRole("assistant"); + aiMessage.setCozeContentType("text"); + aiMessage = messageService.createMessage(aiMessage); + + log.info("WebSocket聊天消息处理完成(带messageId): userMessageId={}, aiMessageId={}", + messageId, aiMessage.getId()); + + return aiReply; + + } catch (Exception e) { + log.error("WebSocket发送聊天消息失败(带messageId)", e); + return "抱歉,我暂时无法回复,请稍后再试。"; + } + } + @Override public String generateConversationSummary(String conversationId, String userId) { log.info("生成对话总结: conversationId={}, userId={}", conversationId, userId); diff --git a/backend-single/src/main/java/com/emotion/service/impl/CozeApiCallServiceImpl.java b/backend-single/src/main/java/com/emotion/service/impl/CozeApiCallServiceImpl.java index 5bdc2b8..e41d906 100644 --- a/backend-single/src/main/java/com/emotion/service/impl/CozeApiCallServiceImpl.java +++ b/backend-single/src/main/java/com/emotion/service/impl/CozeApiCallServiceImpl.java @@ -233,7 +233,7 @@ public class CozeApiCallServiceImpl extends ServiceImpl -
+
-
+ + +
+ +