From 4324633f82189aec21ae04027aad9d7899fcbe3e Mon Sep 17 00:00:00 2001 From: lkddi Date: Tue, 3 Mar 2026 14:46:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=9A=E5=8F=B3=E4=BE=A7?= =?UTF-8?q?=E3=80=8C=E6=88=BF=E9=97=B4=E3=80=8D=E9=9D=A2=E6=9D=BF=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=89=80=E6=9C=89=E6=88=BF=E9=97=B4=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E4=BA=BA=E6=95=B0=EF=BC=8C=E7=82=B9=E5=87=BB=E5=8F=AF=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=88=BF=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ChatController 新增 roomsOnlineStatus() 接口 - GET /rooms/online-status 返回所有房间名称+Redis 实时在线人数 - 右侧面板房间列表动态渲染:当前房间高亮蓝色,有人数绿色徽标,空房间灰色 - 点击其他房间直接跳转,当前房间禁止点击并标注「当前」 - 切换到「房间」Tab 时自动触发拉取 --- app/Http/Controllers/ChatController.php | 25 ++++++++ .../views/chat/partials/right-panel.blade.php | 11 +++- .../views/chat/partials/scripts.blade.php | 60 ++++++++++++++++++- routes/web.php | 3 + 4 files changed, 96 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php index 62e3cb3..092329e 100644 --- a/app/Http/Controllers/ChatController.php +++ b/app/Http/Controllers/ChatController.php @@ -552,6 +552,31 @@ class ChatController extends Controller ]); } + /** + * 返回所有房间的在线人数,供右侧房间面板轮询使用。 + * + * 合并 rooms 数据库记录与 Redis 在线名单, + * 返回 [{ id, name, online, permit_level, door_open }] 数组。 + */ + public function roomsOnlineStatus(): JsonResponse + { + $rooms = Room::orderBy('id')->get(['id', 'room_name', 'permit_level', 'door_open']); + + $data = $rooms->map(function (Room $room) { + $onlineCount = Redis::hlen("room:{$room->id}:users"); + + return [ + 'id' => $room->id, + 'name' => $room->room_name, + 'online' => (int) $onlineCount, + 'permit_level' => $room->permit_level ?? 0, + 'door_open' => (bool) $room->door_open, + ]; + }); + + return response()->json(['rooms' => $data]); + } + /** * 离开房间 (等同于原版 LEAVE.ASP) * diff --git a/resources/views/chat/partials/right-panel.blade.php b/resources/views/chat/partials/right-panel.blade.php index 1333d50..d99809a 100644 --- a/resources/views/chat/partials/right-panel.blade.php +++ b/resources/views/chat/partials/right-panel.blade.php @@ -55,8 +55,15 @@ {{-- 房间列表面板 --}}