All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 1m18s
1. 重構機台在線狀態判定機制:移除資料庫 status 欄位,改由 Model 根據心跳時間動態計算。 2. 修正儀表板 (Dashboard) 與機台管理頁面的多語系顯示問題,解決換行導致翻譯失效的 Bug。 3. 修正個人檔案頁面的麵包屑 (Breadcrumbs) 導航,補齊「個人設定」層級。 4. 更新 IoT API (B010, B600) 的認證機制與日誌處理邏輯。 5. 同步更新繁中、英文、日文語言檔,確保 UI 標籤一致性。
46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Machine\Machine;
|
|
use Illuminate\Http\Request;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
// 每頁顯示筆數限制 (預設為 10)
|
|
$perPage = (int) request()->input('per_page', 10);
|
|
if ($perPage <= 0)
|
|
$perPage = 10;
|
|
|
|
// 從資料庫獲取真實統計數據
|
|
$totalRevenue = \App\Models\Member\MemberWallet::sum('balance');
|
|
$activeMachines = Machine::online()->count();
|
|
$offlineMachines = Machine::offline()->count();
|
|
$alertsPending = Machine::hasError()->count();
|
|
$memberCount = \App\Models\Member\Member::count();
|
|
|
|
// 獲取機台列表 (分頁)
|
|
$machines = Machine::when($request->search, function ($query, $search) {
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('name', 'like', "%{$search}%")
|
|
->orWhere('serial_no', 'like', "%{$search}%");
|
|
});
|
|
})
|
|
->orderByDesc('last_heartbeat_at')
|
|
->paginate($perPage)
|
|
->withQueryString();
|
|
|
|
return view('admin.dashboard', compact(
|
|
'totalRevenue',
|
|
'activeMachines',
|
|
'offlineMachines',
|
|
'alertsPending',
|
|
'memberCount',
|
|
'machines'
|
|
));
|
|
}
|
|
}
|