diff --git a/app/Http/Controllers/Admin/DashboardController.php b/app/Http/Controllers/Admin/DashboardController.php index 905e9cd..0306f45 100644 --- a/app/Http/Controllers/Admin/DashboardController.php +++ b/app/Http/Controllers/Admin/DashboardController.php @@ -13,18 +13,37 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Room; use App\Models\User; +use App\Services\ChatStateService; use Illuminate\View\View; +/** + * 类功能:负责后台首页仪表盘的汇总统计展示。 + */ class DashboardController extends Controller { + /** + * 注入聊天室状态服务,供仪表盘读取实时在线数据。 + */ + public function __construct( + private readonly ChatStateService $chatState, + ) {} + /** * 显示后台首页与全局统计 */ public function index(): View { + $onlineUsernames = collect(); + + foreach ($this->chatState->getAllActiveRoomIds() as $roomId) { + // 使用在线名单服务的懒清理结果,保证统计口径与聊天室在线列表一致。 + $onlineUsernames = $onlineUsernames->merge(array_keys($this->chatState->getRoomUsers($roomId))); + } + $stats = [ 'total_users' => User::count(), 'total_rooms' => Room::count(), + 'online_users' => $onlineUsernames->unique()->count(), // 更多统计指标以后再发掘 ]; diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 0be6e0c..e516af0 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -13,6 +13,12 @@
{{ $stats['total_rooms'] }}
+ +{{ $stats['online_users'] }}
+按 Redis 在线心跳实时去重统计
+