From f136bb811aafa76c7f34082f449b01c6ddeb1949 Mon Sep 17 00:00:00 2001 From: cursor Date: Tue, 9 Jun 2026 05:03:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(R26):=20=E6=96=B0=E5=A2=9E=20api/message/un?= =?UTF-8?q?read=20=E6=8E=A5=E5=8F=A3+=E8=B7=AF=E7=94=B1=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/Message.php | 31 +++++++++++++++++++++++++++++++ route/app.php | 2 ++ 2 files changed, 33 insertions(+) diff --git a/app/controller/Message.php b/app/controller/Message.php index e250179..41880e3 100644 --- a/app/controller/Message.php +++ b/app/controller/Message.php @@ -102,4 +102,35 @@ class Message extends BaseController return json(['code' => 0, 'data' => null, 'msg' => 'ok']); } + + // GET api/message/unread?card_no=XXX 或 ?card_no=all&staff_id=1 + // 顾客端:传 card_no,查 staff 发送的未读消息数 + // 员工端:传 card_no=all + staff_id,统计所有顾客发来的未读消息数 + public function unread() + { + $cardNo = $this->request->get('card_no', ''); + $staffId = $this->request->get('staff_id', null); + + if (empty($cardNo)) { + return json(['code' => -1, 'data' => null, 'msg' => '缺少号码牌']); + } + + $query = MessageModel::where('is_read', 0); + + if ($cardNo === 'all' && $staffId !== null) { + // 员工端:统计所有对话中顾客发来的未读 + $query->where('sender_type', 'customer'); + } elseif ($staffId !== null) { + // 员工端指定号码牌 + $query->where('card_no', $cardNo)->where('sender_type', 'customer'); + } else { + // 顾客端:统计该号码牌员工发来的未读 + $query->where('card_no', $cardNo)->where('sender_type', 'staff'); + } + + $count = $query->count(); + return json(['code' => 0, 'data' => ['count' => $count], 'msg' => 'ok']); + } } + + diff --git a/route/app.php b/route/app.php index 9a98579..261a892 100644 --- a/route/app.php +++ b/route/app.php @@ -13,6 +13,7 @@ Route::post('api/order/remind', 'Order/remind'); Route::get('api/message/list', 'Message/list'); Route::post('api/message/send', 'Message/send'); Route::post('api/message/read', 'Message/read'); +Route::get('api/message/unread', 'Message/unread'); // ── 员工端(需Token中间件) ── Route::post('api/staff/login', 'Staff/login'); @@ -23,3 +24,4 @@ Route::group('api/staff', function () { Route::post('order/done', 'Staff/done'); Route::post('order/cancel', 'Staff/cancel'); })->middleware('StaffAuth'); +