From 717481dcbae89b223e264a4ddaa148fd4804780f Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Tue, 9 Dec 2025 10:12:29 +0800 Subject: [PATCH] =?UTF-8?q?chore(addon/aikefu):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E9=80=89=E6=8B=A9=E6=B6=88=E6=81=AF=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/addon/aikefu/shop/controller/Kefu.php | 6 +- .../aikefu/shop/view/kefu/conversation.html | 188 +++++++++++++----- src/addon/aikefu/shop/view/kefu/message.html | 35 +++- 3 files changed, 173 insertions(+), 56 deletions(-) diff --git a/src/addon/aikefu/shop/controller/Kefu.php b/src/addon/aikefu/shop/controller/Kefu.php index a360c4a34..32035ff12 100644 --- a/src/addon/aikefu/shop/controller/Kefu.php +++ b/src/addon/aikefu/shop/controller/Kefu.php @@ -271,6 +271,8 @@ class Kefu extends BaseShop $limit = input("limit/d", 50); $conversation_id = input("conversation_id/s", ""); $user_id = input("user_id/s", ""); + $sort_field = input("sort_field/s", "create_time"); // 排序字段 + $sort_order = input("sort_order/s", "desc"); // 排序方式:asc或desc $kefu_message_model = new KefuMessageModel(); $condition = [ @@ -287,7 +289,9 @@ class Kefu extends BaseShop $condition[] = ['user_id', '=', $user_id]; } - $message_list = $kefu_message_model->getMessageList($condition, '*', 'create_time asc', $page, $limit); + // 构建排序字符串 + $order = $sort_field . ' ' . $sort_order; + $message_list = $kefu_message_model->getMessageList($condition, '*', $order, $page, $limit); // 适配layui table的返回格式,同时保持与Dify API风格一致 $result = [ 'code' => 0, // layui table要求成功状态码为0 diff --git a/src/addon/aikefu/shop/view/kefu/conversation.html b/src/addon/aikefu/shop/view/kefu/conversation.html index 8bb3b2d74..99257ab6e 100644 --- a/src/addon/aikefu/shop/view/kefu/conversation.html +++ b/src/addon/aikefu/shop/view/kefu/conversation.html @@ -20,48 +20,110 @@ color: #faad14; } - /* 简单消息列表样式 */ - .simple-message-list { - max-height: 500px; + /* 消息列表样式优化 - 从message.html复制 */ + .message-list { + max-height: 650px; overflow-y: auto; - padding: 15px; + padding: 25px; + background-color: #fafbfc; + border-radius: 8px; + margin-bottom: 20px; + border: 1px solid #e8e8e8; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08); } + + /* 消息项样式 */ .message-item { - margin-bottom: 15px; - padding: 10px; - border-radius: 4px; - } - .message-item.user { - background-color: #e6f7ff; - border-left: 3px solid #1890ff; - } - .message-item.assistant { - background-color: #f6ffed; - border-left: 3px solid #52c41a; - } - .message-header { + margin-bottom: 25px; display: flex; - justify-content: space-between; - margin-bottom: 5px; - font-size: 12px; + align-items: flex-start; } - .message-role { - font-weight: bold; - color: #333; + + .message-item.user { + justify-content: flex-end; } - .message-time { - color: #999; + + .message-item.assistant { + justify-content: flex-start; } + + /* 头像样式 */ + .message-avatar { + width: 48px; + height: 48px; + border-radius: 50%; + margin: 0 12px; + border: 2px solid #fff; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); + } + + /* 消息内容样式 */ .message-content { - font-size: 14px; - line-height: 1.4; - color: #666; - word-break: break-word; + max-width: 70%; + padding: 16px 20px; + border-radius: 18px; + word-wrap: break-word; + line-height: 1.6; + position: relative; } - .empty-message { - text-align: center; + + .message-item.user .message-content { + background-color: #1E9FFF; + color: white; + border-bottom-right-radius: 4px; + box-shadow: 0 2px 8px rgba(30, 159, 255, 0.3); + } + + .message-item.assistant .message-content { + background-color: white; + color: #333; + border-bottom-left-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + } + + /* 消息时间样式 */ + .message-time { + font-size: 12px; color: #999; - padding: 30px; + margin-top: 8px; + text-align: center; + } + + /* 消息角色样式 */ + .message-role { + font-size: 13px; + font-weight: 500; + margin-bottom: 6px; + } + + .message-item.user .message-role { + color: rgba(106, 38, 38, 0.9); + text-align: right; + } + + .message-item.assistant .message-role { + color: #666; + text-align: left; + } + + /* 空状态样式 */ + .empty-state { + text-align: center; + padding: 60px 20px; + color: #999; + } + + .empty-state i { + font-size: 48px; + margin-bottom: 15px; + display: block; + } + + /* 响应式设计 */ + @media (max-width: 768px) { + .message-content { + max-width: 85%; + } } @@ -118,25 +180,35 @@ }}} - +