From c755befa28056ae53a337840fdfc75f2443cf192 Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 5 Sep 2024 14:50:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=81=8A=E5=A4=A9=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=88=B7=E6=96=B0=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=B9=8B=E5=90=8E=E8=87=AA=E5=8A=A8=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E5=AF=B9=E8=AF=9D=E7=9A=84=20role=5Fid=20?= =?UTF-8?q?=E5=92=8C=20model=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/handler/chatimpl/chat_handler.go | 21 ++++--- web/src/views/ChatPlus.vue | 87 ++++++++++++++-------------- 2 files changed, 55 insertions(+), 53 deletions(-) diff --git a/api/handler/chatimpl/chat_handler.go b/api/handler/chatimpl/chat_handler.go index 58b9870a..730043e9 100644 --- a/api/handler/chatimpl/chat_handler.go +++ b/api/handler/chatimpl/chat_handler.go @@ -543,9 +543,9 @@ func (h *ChatHandler) saveChatHistory( } historyUserMsg.CreatedAt = promptCreatedAt historyUserMsg.UpdatedAt = promptCreatedAt - res := h.DB.Save(&historyUserMsg) - if res.Error != nil { - logger.Error("failed to save prompt history message: ", res.Error) + err = h.DB.Save(&historyUserMsg).Error + if err != nil { + logger.Error("failed to save prompt history message: ", err) } // for reply @@ -565,9 +565,9 @@ func (h *ChatHandler) saveChatHistory( } historyReplyMsg.CreatedAt = replyCreatedAt historyReplyMsg.UpdatedAt = replyCreatedAt - res = h.DB.Create(&historyReplyMsg) - if res.Error != nil { - logger.Error("failed to save reply history message: ", res.Error) + err = h.DB.Create(&historyReplyMsg).Error + if err != nil { + logger.Error("failed to save reply history message: ", err) } // 更新用户算力 @@ -576,8 +576,8 @@ func (h *ChatHandler) saveChatHistory( } // 保存当前会话 var chatItem model.ChatItem - res = h.DB.Where("chat_id = ?", session.ChatId).First(&chatItem) - if res.Error != nil { + err = h.DB.Where("chat_id = ?", session.ChatId).First(&chatItem).Error + if err != nil { chatItem.ChatId = session.ChatId chatItem.UserId = userVo.Id chatItem.RoleId = role.Id @@ -588,7 +588,10 @@ func (h *ChatHandler) saveChatHistory( chatItem.Title = prompt } chatItem.Model = req.Model - h.DB.Create(&chatItem) + err = h.DB.Create(&chatItem).Error + if err != nil { + logger.Error("failed to save chat item: ", err) + } } } diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index 4550c0fa..2d4f7c3c 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -272,10 +272,22 @@ const tools = ref([]) const toolSelected = ref([]) const loadHistory = ref(false) +// 初始化角色ID参数 +if (router.currentRoute.value.query.role_id) { + roleId.value = parseInt(router.currentRoute.value.query.role_id) +} + // 初始化 ChatID chatId.value = router.currentRoute.value.params.id if (!chatId.value) { chatId.value = UUID() +}else { // 查询对话信息 + httpGet("/api/chat/detail", {chat_id: chatId.value}).then(res => { + roleId.value = res.data.role_id + modelID.value = res.data.model_id + }).catch(e => { + console.error("获取对话信息失败:"+e.message) + }) } if (isMobile()) { @@ -344,59 +356,46 @@ onUnmounted(() => { // 初始化数据 const initData = () => { - // 检查会话 - checkSession().then((user) => { - loginUser.value = user - isLogin.value = true - // 获取会话列表 - httpGet("/api/chat/list").then((res) => { - if (res.data) { - chatList.value = res.data; - allChats.value = res.data; - } - if (router.currentRoute.value.query.role_id) { - roleId.value = parseInt(router.currentRoute.value.query.role_id) - } - // 加载模型 - httpGet('/api/model/list').then(res => { - models.value = res.data - modelID.value = models.value[0].id - // 加载角色列表 - httpGet(`/api/role/list`,{id:roleId.value}).then((res) => { - roles.value = res.data; - if (!roleId.value) { - roleId.value = roles.value[0]['id'] - } - - newChat(); - }).catch((e) => { - ElMessage.error('获取聊天角色失败: ' + e.messages) - }) - }).catch(e => { - ElMessage.error("加载模型失败: " + e.message) - }) - }).catch(() => { - ElMessage.error("加载会话列表失败!") - }) - }).catch(() => { - // 加载模型 - httpGet('/api/model/list',{id:roleId.value}).then(res => { - models.value = res.data + // 加载模型 + httpGet('/api/model/list').then(res => { + models.value = res.data + if (!modelID.value) { modelID.value = models.value[0].id - }).catch(e => { - ElMessage.error("加载模型失败: " + e.message) - }) - + } // 加载角色列表 - httpGet(`/api/role/list`).then((res) => { + httpGet(`/api/role/list`,{id:roleId.value}).then((res) => { roles.value = res.data; - roleId.value = roles.value[0]['id']; + if (!roleId.value) { + roleId.value = roles.value[0]['id'] + } + + // 如果登录状态就创建对话连接 + checkSession().then((user) => { + loginUser.value = user + isLogin.value = true + + newChat(); + }) + }).catch((e) => { ElMessage.error('获取聊天角色失败: ' + e.messages) }) + }).catch(e => { + ElMessage.error("加载模型失败: " + e.message) }) + // 获取会话列表 + httpGet("/api/chat/list").then((res) => { + if (res.data) { + chatList.value = res.data; + allChats.value = res.data; + } + }).catch(() => { + ElMessage.error("加载会话列表失败!") + }) + + // 允许在输入框粘贴文件 inputRef.value.addEventListener('paste', (event) => { const items = (event.clipboardData || window.clipboardData).items; let fileFound = false;