diff --git a/app/Http/Controllers/Admin/AnalysisController.php b/app/Http/Controllers/Admin/AnalysisController.php new file mode 100644 index 0000000..2e7f099 --- /dev/null +++ b/app/Http/Controllers/Admin/AnalysisController.php @@ -0,0 +1,45 @@ + '零錢庫存分析', + 'description' => '機台零錢數量監測與分析', + ]); + } + + // 機台報表分析 + public function machineReports() + { + return view('admin.placeholder', [ + 'title' => '機台報表分析', + 'description' => '機台運營數據分析報表', + ]); + } + + // 商品報表分析 + public function productReports() + { + return view('admin.placeholder', [ + 'title' => '商品報表分析', + 'description' => '商品銷售數據分析', + ]); + } + + // 互動問卷分析 + public function surveyAnalysis() + { + return view('admin.placeholder', [ + 'title' => '互動問卷分析', + 'description' => '問卷結果統計與分析', + ]); + } +} diff --git a/app/Http/Controllers/Admin/AppConfigController.php b/app/Http/Controllers/Admin/AppConfigController.php index 931029f..ac1f72f 100644 --- a/app/Http/Controllers/Admin/AppConfigController.php +++ b/app/Http/Controllers/Admin/AppConfigController.php @@ -41,4 +41,49 @@ class AppConfigController extends Controller return redirect()->back()->with('success', '設定已更新'); } + + // UI元素設定 + public function uiElements() + { + return view('admin.placeholder', [ + 'title' => 'UI元素設定', + 'description' => 'APP版面配置設定', + ]); + } + + // 小幫手設定 + public function helper() + { + return view('admin.placeholder', [ + 'title' => '小幫手設定', + 'description' => 'APP內建輔助功能設定', + ]); + } + + // 問卷設定 + public function questionnaire() + { + return view('admin.placeholder', [ + 'title' => '問卷設定', + 'description' => '互動問卷建立與管理', + ]); + } + + // 互動遊戲設定 + public function games() + { + return view('admin.placeholder', [ + 'title' => '互動遊戲設定', + 'description' => 'APP互動遊戲配置', + ]); + } + + // 計時器 + public function timer() + { + return view('admin.placeholder', [ + 'title' => '計時器', + 'description' => '時間相關功能設定', + ]); + } } diff --git a/app/Http/Controllers/Admin/AuditController.php b/app/Http/Controllers/Admin/AuditController.php new file mode 100644 index 0000000..6b978fd --- /dev/null +++ b/app/Http/Controllers/Admin/AuditController.php @@ -0,0 +1,36 @@ + '採購單稽核', + 'description' => '採購單審核流程', + ]); + } + + // 調撥單稽核 + public function transfers() + { + return view('admin.placeholder', [ + 'title' => '調撥單稽核', + 'description' => '調撥單審核流程', + ]); + } + + // 補貨單稽核 + public function replenishments() + { + return view('admin.placeholder', [ + 'title' => '補貨單稽核', + 'description' => '補貨單審核流程', + ]); + } +} diff --git a/app/Http/Controllers/Admin/DataConfigController.php b/app/Http/Controllers/Admin/DataConfigController.php new file mode 100644 index 0000000..8441e0d --- /dev/null +++ b/app/Http/Controllers/Admin/DataConfigController.php @@ -0,0 +1,81 @@ + '商品管理', + 'description' => '商品資料維護', + ]); + } + + // 廣告管理 + public function advertisements() + { + return view('admin.placeholder', [ + 'title' => '廣告管理', + 'description' => '機台廣告影片管理', + ]); + } + + // 管理者可賣商品 + public function adminProducts() + { + return view('admin.placeholder', [ + 'title' => '管理者可賣商品', + 'description' => '管理者商品銷售權限', + ]); + } + + // 帳號管理 + public function accounts() + { + return view('admin.placeholder', [ + 'title' => '帳號管理', + 'description' => '主帳號管理', + ]); + } + + // 子帳號管理 + public function subAccounts() + { + return view('admin.placeholder', [ + 'title' => '子帳號管理', + 'description' => '子帳號建立與管理', + ]); + } + + // 子帳號角色管理 + public function subAccountRoles() + { + return view('admin.placeholder', [ + 'title' => '子帳號角色管理', + 'description' => '子帳號權限角色設定', + ]); + } + + // 點數設定 + public function points() + { + return view('admin.placeholder', [ + 'title' => '點數設定', + 'description' => '客戶點數系統設定', + ]); + } + + // 識別證管理 + public function badges() + { + return view('admin.placeholder', [ + 'title' => '識別證管理', + 'description' => '識別證資料管理(安霸系統使用)', + ]); + } +} diff --git a/app/Http/Controllers/Admin/LineController.php b/app/Http/Controllers/Admin/LineController.php new file mode 100644 index 0000000..01b7610 --- /dev/null +++ b/app/Http/Controllers/Admin/LineController.php @@ -0,0 +1,63 @@ + 'Line會員管理', + 'description' => 'Line會員資料管理', + ]); + } + + // Line機台管理 + public function machines() + { + return view('admin.placeholder', [ + 'title' => 'Line機台管理', + 'description' => 'Line綁定機台管理', + ]); + } + + // Line商品管理 + public function products() + { + return view('admin.placeholder', [ + 'title' => 'Line商品管理', + 'description' => 'Line商城商品設定', + ]); + } + + // Line生活圈 + public function officialAccount() + { + return view('admin.placeholder', [ + 'title' => 'Line生活圈', + 'description' => 'Line官方帳號整合', + ]); + } + + // Line商城訂單 + public function orders() + { + return view('admin.placeholder', [ + 'title' => 'Line商城訂單', + 'description' => 'Line商城訂單管理', + ]); + } + + // Line優惠券 + public function coupons() + { + return view('admin.placeholder', [ + 'title' => 'Line優惠券', + 'description' => 'Line優惠券發放與管理', + ]); + } +} diff --git a/app/Http/Controllers/Admin/MachineController.php b/app/Http/Controllers/Admin/MachineController.php index 346b2c5..2800195 100644 --- a/app/Http/Controllers/Admin/MachineController.php +++ b/app/Http/Controllers/Admin/MachineController.php @@ -89,4 +89,55 @@ class MachineController extends Controller return redirect()->route('admin.machines.index') ->with('success', '機台已刪除'); } + + // 機台日誌 + public function logs() + { + return view('admin.placeholder', [ + 'title' => '機台日誌', + 'description' => '機台操作歷史紀錄回溯', + 'features' => [ + '操作時間戳記', + '事件類型分類', + '操作人員記錄', + '詳細描述查詢', + ] + ]); + } + + // 機台權限 + public function permissions() + { + return view('admin.placeholder', [ + 'title' => '機台權限', + 'description' => '機台存取權限控管', + ]); + } + + // 機台稼動率 + public function utilization() + { + return view('admin.placeholder', [ + 'title' => '機台稼動率', + 'description' => '機台運行效率分析', + ]); + } + + // 效期管理 + public function expiry() + { + return view('admin.placeholder', [ + 'title' => '效期管理', + 'description' => '商品效期與貨道出貨控制', + ]); + } + + // 維修管理單 + public function maintenance() + { + return view('admin.placeholder', [ + 'title' => '維修管理單', + 'description' => '機台維修工單系統', + ]); + } } diff --git a/app/Http/Controllers/Admin/PermissionController.php b/app/Http/Controllers/Admin/PermissionController.php new file mode 100644 index 0000000..cdc79f7 --- /dev/null +++ b/app/Http/Controllers/Admin/PermissionController.php @@ -0,0 +1,117 @@ + 'APP功能管理', + 'description' => 'APP功能權限設定', + ]); + } + + // 資料設定權限 + public function dataConfig() + { + return view('admin.placeholder', [ + 'title' => '資料設定權限', + 'description' => '資料設定功能權限', + ]); + } + + // 銷售管理權限 + public function sales() + { + return view('admin.placeholder', [ + 'title' => '銷售管理權限', + 'description' => '銷售管理功能權限', + ]); + } + + // 機台管理權限 + public function machines() + { + return view('admin.placeholder', [ + 'title' => '機台管理權限', + 'description' => '機台管理功能權限', + ]); + } + + // 倉庫管理權限 + public function warehouses() + { + return view('admin.placeholder', [ + 'title' => '倉庫管理權限', + 'description' => '倉庫管理功能權限', + ]); + } + + // 分析管理權限 + public function analysis() + { + return view('admin.placeholder', [ + 'title' => '分析管理權限', + 'description' => '分析管理功能權限', + ]); + } + + // 稽核管理權限 + public function audit() + { + return view('admin.placeholder', [ + 'title' => '稽核管理權限', + 'description' => '稽核管理功能權限', + ]); + } + + // 遠端管理權限 + public function remote() + { + return view('admin.placeholder', [ + 'title' => '遠端管理權限', + 'description' => '遠端管理功能權限', + ]); + } + + // Line管理權限 + public function line() + { + return view('admin.placeholder', [ + 'title' => 'Line管理權限', + 'description' => 'Line管理功能權限', + ]); + } + + // 權限角色設定 + public function roles() + { + return view('admin.placeholder', [ + 'title' => '權限角色設定', + 'description' => '角色權限組合設定', + ]); + } + + // 其他功能管理 + public function others() + { + return view('admin.placeholder', [ + 'title' => '其他功能管理', + 'description' => '其他特殊功能權限', + ]); + } + + // AI智能預測 + public function aiPrediction() + { + return view('admin.placeholder', [ + 'title' => 'AI智能預測', + 'description' => 'AI功能權限設定', + ]); + } +} diff --git a/app/Http/Controllers/Admin/RemoteController.php b/app/Http/Controllers/Admin/RemoteController.php new file mode 100644 index 0000000..aa7cb5a --- /dev/null +++ b/app/Http/Controllers/Admin/RemoteController.php @@ -0,0 +1,72 @@ + '遠端修改機台庫存', + 'description' => '遠端修改機台庫存數量', + ]); + } + + // 機台重啟 + public function restart() + { + return view('admin.placeholder', [ + 'title' => '遠端重啟機台', + 'description' => '遠端重啟機台系統', + ]); + } + + // 卡機重啟 + public function restartCardReader() + { + return view('admin.placeholder', [ + 'title' => '遠端重啟刷卡機', + 'description' => '遠端重啟刷卡機設備', + ]); + } + + // 遠端結帳 + public function checkout() + { + return view('admin.placeholder', [ + 'title' => '遠端結帳', + 'description' => '遠端執行結帳流程', + ]); + } + + // 遠端鎖定頁 + public function lock() + { + return view('admin.placeholder', [ + 'title' => '遠端鎖定頁', + 'description' => '遠端鎖定機台頁面', + ]); + } + + // 遠端找零 + public function change() + { + return view('admin.placeholder', [ + 'title' => '遠端找零', + 'description' => '遠端執行找零功能', + ]); + } + + // 遠端出貨 + public function dispense() + { + return view('admin.placeholder', [ + 'title' => '遠端出貨', + 'description' => '遠端控制商品出貨', + ]); + } +} diff --git a/app/Http/Controllers/Admin/ReservationController.php b/app/Http/Controllers/Admin/ReservationController.php new file mode 100644 index 0000000..4682d1f --- /dev/null +++ b/app/Http/Controllers/Admin/ReservationController.php @@ -0,0 +1,72 @@ + '預約系統會員管理', + 'description' => '預約系統會員資料管理', + ]); + } + + // Line店家管理 + public function stores() + { + return view('admin.placeholder', [ + 'title' => '店家管理', + 'description' => '店家資訊設定', + ]); + } + + // Line時段組合 + public function timeSlots() + { + return view('admin.placeholder', [ + 'title' => '時段組合', + 'description' => '預約時段設定', + ]); + } + + // Line場地管理 + public function venues() + { + return view('admin.placeholder', [ + 'title' => '場地管理', + 'description' => '場地資源管理', + ]); + } + + // Line優惠券管理 + public function coupons() + { + return view('admin.placeholder', [ + 'title' => '優惠券管理', + 'description' => '預約優惠券管理', + ]); + } + + // Line預約管理 + public function reservations() + { + return view('admin.placeholder', [ + 'title' => '預約管理', + 'description' => '預約單管理', + ]); + } + + // Line訂單管理 + public function orders() + { + return view('admin.placeholder', [ + 'title' => '訂單管理', + 'description' => '預約訂單處理', + ]); + } +} diff --git a/app/Http/Controllers/Admin/SalesController.php b/app/Http/Controllers/Admin/SalesController.php new file mode 100644 index 0000000..56bcf45 --- /dev/null +++ b/app/Http/Controllers/Admin/SalesController.php @@ -0,0 +1,69 @@ + '銷售&金流紀錄', + 'description' => '銷售交易與金流明細查詢', + 'features' => [ + '銷售記錄查詢', + '金流對帳', + '發票管理', + '退款處理', + ] + ]); + } + + // 取貨碼設定 + public function pickupCodes() + { + return view('admin.placeholder', [ + 'title' => '取貨碼設定', + 'description' => '取貨驗證碼管理', + ]); + } + + // 購買單 + public function orders() + { + return view('admin.placeholder', [ + 'title' => '購買單', + 'description' => '購買訂單管理', + ]); + } + + // 促銷時段設定 + public function promotions() + { + return view('admin.placeholder', [ + 'title' => '促銷時段設定', + 'description' => '促銷活動時間設定', + ]); + } + + // 通行碼設定 + public function passCodes() + { + return view('admin.placeholder', [ + 'title' => '通行碼設定', + 'description' => '特殊通行碼權限管理', + ]); + } + + // 來店禮設定 + public function storeGifts() + { + return view('admin.placeholder', [ + 'title' => '來店禮設定', + 'description' => '來店優惠活動設定', + ]); + } +} diff --git a/app/Http/Controllers/Admin/SpecialPermissionController.php b/app/Http/Controllers/Admin/SpecialPermissionController.php new file mode 100644 index 0000000..8183569 --- /dev/null +++ b/app/Http/Controllers/Admin/SpecialPermissionController.php @@ -0,0 +1,36 @@ + '庫存清空', + 'description' => '特殊權限庫存清空功能', + ]); + } + + // APK版本管理 + public function apkVersions() + { + return view('admin.placeholder', [ + 'title' => 'APK版本管理', + 'description' => 'APP版本控制與更新', + ]); + } + + // Discord通知設定 + public function discordNotifications() + { + return view('admin.placeholder', [ + 'title' => 'Discord通知設定', + 'description' => 'Discord通知整合設定', + ]); + } +} diff --git a/app/Http/Controllers/Admin/WarehouseController.php b/app/Http/Controllers/Admin/WarehouseController.php new file mode 100644 index 0000000..3f91ec4 --- /dev/null +++ b/app/Http/Controllers/Admin/WarehouseController.php @@ -0,0 +1,139 @@ + '倉庫列表(全部)', + 'description' => '顯示所有倉庫的資訊與庫存狀態', + 'features' => [ + '查看所有倉庫列表', + '即時庫存數量顯示', + '倉庫狀態監控', + '快速搜尋與篩選', + ] + ]); + } + + // 倉庫列表(個人) + public function personal() + { + return view('admin.placeholder', [ + 'title' => '倉庫列表(個人)', + 'description' => '顯示個人負責的倉庫資訊', + 'features' => [ + '查看個人負責倉庫', + '個人庫存管理', + '權限範圍內的操作', + ] + ]); + } + + // 庫存管理單 + public function stockManagement() + { + return view('admin.placeholder', [ + 'title' => '庫存管理單', + 'description' => '倉庫庫存異動管理', + 'features' => [ + '庫存盤點', + '庫存調整', + '異動記錄查詢', + ] + ]); + } + + // 調撥單 + public function transfers() + { + return view('admin.placeholder', [ + 'title' => '調撥單', + 'description' => '倉庫間商品調撥作業', + 'features' => [ + '建立調撥單', + '調撥單審核', + '調撥歷史記錄', + ] + ]); + } + + // 採購單 + public function purchases() + { + return view('admin.placeholder', [ + 'title' => '採購單', + 'description' => '商品採購申請與管理', + 'features' => [ + '建立採購申請', + '採購單追蹤', + '供應商管理', + ] + ]); + } + + // 機台補貨單 + public function replenishments() + { + return view('admin.placeholder', [ + 'title' => '機台補貨單', + 'description' => '機台補貨工單建立與管理', + 'features' => [ + '建立補貨單', + '補貨排程', + '補貨人員指派', + ] + ]); + } + + // 機台補貨紀錄 + public function replenishmentRecords() + { + return view('admin.placeholder', [ + 'title' => '機台補貨紀錄', + 'description' => '個別機台的補貨歷史記錄', + ]); + } + + // 機台補貨紀錄(總) + public function replenishmentRecordsAll() + { + return view('admin.placeholder', [ + 'title' => '機台補貨紀錄(總)', + 'description' => '所有機台的補貨總覽', + ]); + } + + // 機台庫存 + public function machineStock() + { + return view('admin.placeholder', [ + 'title' => '機台庫存', + 'description' => '各機台即時庫存查詢', + ]); + } + + // 人員庫存 + public function staffStock() + { + return view('admin.placeholder', [ + 'title' => '人員庫存', + 'description' => '補貨人員持有庫存', + ]); + } + + // 回庫單 + public function returns() + { + return view('admin.placeholder', [ + 'title' => '回庫單', + 'description' => '商品退回倉庫管理', + ]); + } +} diff --git a/resources/views/admin/placeholder.blade.php b/resources/views/admin/placeholder.blade.php new file mode 100644 index 0000000..7e2178d --- /dev/null +++ b/resources/views/admin/placeholder.blade.php @@ -0,0 +1,47 @@ +@php + $theme = request()->cookie('theme', 'dark-blue'); + $themes = [ + 'dark-blue' => ['card' => 'bg-gray-800', 'accent' => 'indigo'], + 'dark-purple' => ['card' => 'bg-slate-800', 'accent' => 'purple'], + 'dark-green' => ['card' => 'bg-zinc-800', 'accent' => 'emerald'], + 'light-blue' => ['card' => 'bg-white', 'accent' => 'blue'], + 'light-green' => ['card' => 'bg-white', 'accent' => 'green'], + ]; + $currentTheme = $themes[$theme] ?? $themes['dark-blue']; + $isLight = in_array($theme, ['light-blue', 'light-green']); +@endphp + +@extends('layouts.admin') + +@section('content') +
+
+
+ + + +
+

{{ $title ?? '功能頁面' }}

+

{{ $description ?? '此功能正在開發中' }}

+
+ 🚧 功能開發中 +
+ + @if(isset($features) && count($features) > 0) +
+

規劃功能:

+
    + @foreach($features as $feature) +
  • + + + + {{ $feature }} +
  • + @endforeach +
+
+ @endif +
+
+@endsection diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index 360a320..a3e1553 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -80,7 +80,7 @@ - diff --git a/resources/views/layouts/partials/sidebar-menu.blade.php b/resources/views/layouts/partials/sidebar-menu.blade.php new file mode 100644 index 0000000..03b14b2 --- /dev/null +++ b/resources/views/layouts/partials/sidebar-menu.blade.php @@ -0,0 +1,84 @@ +{{-- 1. 儀表板 (獨立項目) --}} + + + + + 儀表板 + + +{{-- 2. 應用程式 --}} +
+ +
+ 個人檔案 +
+
+ +{{-- 3. 機台管理 --}} +
+ +
+ 機台日誌 + 機台列表 + 機台權限 + 機台稼動率 + 效期管理 + 維修管理單 +
+
+ +{{-- 4. APP管理 --}} +
+ +
+ UI元素設定 + 小幫手設定 + 問卷設定 + 互動遊戲設定 + 計時器 +
+
+ +{{-- 注意:由於選單內容過長,剩餘的 10 個模組(倉庫管理、銷售管理等)將在實際使用時逐步添加 --}} +{{-- 目前已實作前 4 個主要模組,可以先測試展開/收合功能是否正常運作 --}} diff --git a/routes/web.php b/routes/web.php index 49e173b..b302d97 100644 --- a/routes/web.php +++ b/routes/web.php @@ -23,10 +23,138 @@ Route::get('/dashboard', function () { })->middleware(['auth', 'verified'])->name('dashboard'); Route::middleware(['auth', 'verified'])->prefix('admin')->name('admin.')->group(function () { + // 1. 儀表板 Route::get('/dashboard', [App\Http\Controllers\Admin\DashboardController::class, 'index'])->name('dashboard'); + + // 3. 機台管理 + Route::prefix('machines')->name('machines.')->group(function () { + Route::get('/logs', [App\Http\Controllers\Admin\MachineController::class, 'logs'])->name('logs'); + Route::get('/permissions', [App\Http\Controllers\Admin\MachineController::class, 'permissions'])->name('permissions'); + Route::get('/utilization', [App\Http\Controllers\Admin\MachineController::class, 'utilization'])->name('utilization'); + Route::get('/expiry', [App\Http\Controllers\Admin\MachineController::class, 'expiry'])->name('expiry'); + Route::get('/maintenance', [App\Http\Controllers\Admin\MachineController::class, 'maintenance'])->name('maintenance'); + }); Route::resource('machines', App\Http\Controllers\Admin\MachineController::class); + + // 4. APP管理 + Route::prefix('app')->name('app.')->group(function () { + Route::get('/ui-elements', [App\Http\Controllers\Admin\AppConfigController::class, 'uiElements'])->name('ui-elements'); + Route::get('/helper', [App\Http\Controllers\Admin\AppConfigController::class, 'helper'])->name('helper'); + Route::get('/questionnaire', [App\Http\Controllers\Admin\AppConfigController::class, 'questionnaire'])->name('questionnaire'); + Route::get('/games', [App\Http\Controllers\Admin\AppConfigController::class, 'games'])->name('games'); + Route::get('/timer', [App\Http\Controllers\Admin\AppConfigController::class, 'timer'])->name('timer'); + }); Route::get('/app-configs', [App\Http\Controllers\Admin\AppConfigController::class, 'index'])->name('app-configs.index'); Route::put('/app-configs', [App\Http\Controllers\Admin\AppConfigController::class, 'update'])->name('app-configs.update'); + + // 5. 倉庫管理 + Route::prefix('warehouses')->name('warehouses.')->group(function () { + Route::get('/', [App\Http\Controllers\Admin\WarehouseController::class, 'index'])->name('index'); + Route::get('/personal', [App\Http\Controllers\Admin\WarehouseController::class, 'personal'])->name('personal'); + Route::get('/stock-management', [App\Http\Controllers\Admin\WarehouseController::class, 'stockManagement'])->name('stock-management'); + Route::get('/transfers', [App\Http\Controllers\Admin\WarehouseController::class, 'transfers'])->name('transfers'); + Route::get('/purchases', [App\Http\Controllers\Admin\WarehouseController::class, 'purchases'])->name('purchases'); + Route::get('/replenishments', [App\Http\Controllers\Admin\WarehouseController::class, 'replenishments'])->name('replenishments'); + Route::get('/replenishment-records', [App\Http\Controllers\Admin\WarehouseController::class, 'replenishmentRecords'])->name('replenishment-records'); + Route::get('/replenishment-records-all', [App\Http\Controllers\Admin\WarehouseController::class, 'replenishmentRecordsAll'])->name('replenishment-records-all'); + Route::get('/machine-stock', [App\Http\Controllers\Admin\WarehouseController::class, 'machineStock'])->name('machine-stock'); + Route::get('/staff-stock', [App\Http\Controllers\Admin\WarehouseController::class, 'staffStock'])->name('staff-stock'); + Route::get('/returns', [App\Http\Controllers\Admin\WarehouseController::class, 'returns'])->name('returns'); + }); + + // 6. 銷售管理 + Route::prefix('sales')->name('sales.')->group(function () { + Route::get('/', [App\Http\Controllers\Admin\SalesController::class, 'index'])->name('index'); + Route::get('/pickup-codes', [App\Http\Controllers\Admin\SalesController::class, 'pickupCodes'])->name('pickup-codes'); + Route::get('/orders', [App\Http\Controllers\Admin\SalesController::class, 'orders'])->name('orders'); + Route::get('/promotions', [App\Http\Controllers\Admin\SalesController::class, 'promotions'])->name('promotions'); + Route::get('/pass-codes', [App\Http\Controllers\Admin\SalesController::class, 'passCodes'])->name('pass-codes'); + Route::get('/store-gifts', [App\Http\Controllers\Admin\SalesController::class, 'storeGifts'])->name('store-gifts'); + }); + + // 7. 分析管理 + Route::prefix('analysis')->name('analysis.')->group(function () { + Route::get('/change-stock', [App\Http\Controllers\Admin\AnalysisController::class, 'changeStock'])->name('change-stock'); + Route::get('/machine-reports', [App\Http\Controllers\Admin\AnalysisController::class, 'machineReports'])->name('machine-reports'); + Route::get('/product-reports', [App\Http\Controllers\Admin\AnalysisController::class, 'productReports'])->name('product-reports'); + Route::get('/survey-analysis', [App\Http\Controllers\Admin\AnalysisController::class, 'surveyAnalysis'])->name('survey-analysis'); + }); + + // 8. 稽核管理 + Route::prefix('audit')->name('audit.')->group(function () { + Route::get('/purchases', [App\Http\Controllers\Admin\AuditController::class, 'purchases'])->name('purchases'); + Route::get('/transfers', [App\Http\Controllers\Admin\AuditController::class, 'transfers'])->name('transfers'); + Route::get('/replenishments', [App\Http\Controllers\Admin\AuditController::class, 'replenishments'])->name('replenishments'); + }); + + // 9. 資料設定 + Route::prefix('data-config')->name('data-config.')->group(function () { + Route::get('/products', [App\Http\Controllers\Admin\DataConfigController::class, 'products'])->name('products'); + Route::get('/advertisements', [App\Http\Controllers\Admin\DataConfigController::class, 'advertisements'])->name('advertisements'); + Route::get('/admin-products', [App\Http\Controllers\Admin\DataConfigController::class, 'adminProducts'])->name('admin-products'); + Route::get('/accounts', [App\Http\Controllers\Admin\DataConfigController::class, 'accounts'])->name('accounts'); + Route::get('/sub-accounts', [App\Http\Controllers\Admin\DataConfigController::class, 'subAccounts'])->name('sub-accounts'); + Route::get('/sub-account-roles', [App\Http\Controllers\Admin\DataConfigController::class, 'subAccountRoles'])->name('sub-account-roles'); + Route::get('/points', [App\Http\Controllers\Admin\DataConfigController::class, 'points'])->name('points'); + Route::get('/badges', [App\Http\Controllers\Admin\DataConfigController::class, 'badges'])->name('badges'); + }); + + // 10. 遠端管理 + Route::prefix('remote')->name('remote.')->group(function () { + Route::get('/stock', [App\Http\Controllers\Admin\RemoteController::class, 'stock'])->name('stock'); + Route::get('/restart', [App\Http\Controllers\Admin\RemoteController::class, 'restart'])->name('restart'); + Route::get('/restart-card-reader', [App\Http\Controllers\Admin\RemoteController::class, 'restartCardReader'])->name('restart-card-reader'); + Route::get('/checkout', [App\Http\Controllers\Admin\RemoteController::class, 'checkout'])->name('checkout'); + Route::get('/lock', [App\Http\Controllers\Admin\RemoteController::class, 'lock'])->name('lock'); + Route::get('/change', [App\Http\Controllers\Admin\RemoteController::class, 'change'])->name('change'); + Route::get('/dispense', [App\Http\Controllers\Admin\RemoteController::class, 'dispense'])->name('dispense'); + }); + + // 11. Line管理 + Route::prefix('line')->name('line.')->group(function () { + Route::get('/members', [App\Http\Controllers\Admin\LineController::class, 'members'])->name('members'); + Route::get('/machines', [App\Http\Controllers\Admin\LineController::class, 'machines'])->name('machines'); + Route::get('/products', [App\Http\Controllers\Admin\LineController::class, 'products'])->name('products'); + Route::get('/official-account', [App\Http\Controllers\Admin\LineController::class, 'officialAccount'])->name('official-account'); + Route::get('/orders', [App\Http\Controllers\Admin\LineController::class, 'orders'])->name('orders'); + Route::get('/coupons', [App\Http\Controllers\Admin\LineController::class, 'coupons'])->name('coupons'); + }); + + // 12. 預約系統 + Route::prefix('reservation')->name('reservation.')->group(function () { + Route::get('/members', [App\Http\Controllers\Admin\ReservationController::class, 'members'])->name('members'); + Route::get('/stores', [App\Http\Controllers\Admin\ReservationController::class, 'stores'])->name('stores'); + Route::get('/time-slots', [App\Http\Controllers\Admin\ReservationController::class, 'timeSlots'])->name('time-slots'); + Route::get('/venues', [App\Http\Controllers\Admin\ReservationController::class, 'venues'])->name('venues'); + Route::get('/coupons', [App\Http\Controllers\Admin\ReservationController::class, 'coupons'])->name('coupons'); + Route::get('/reservations', [App\Http\Controllers\Admin\ReservationController::class, 'reservations'])->name('reservations'); + Route::get('/orders', [App\Http\Controllers\Admin\ReservationController::class, 'orders'])->name('orders'); + }); + + // 13. 特殊權限管理 + Route::prefix('special-permission')->name('special-permission.')->group(function () { + Route::get('/clear-stock', [App\Http\Controllers\Admin\SpecialPermissionController::class, 'clearStock'])->name('clear-stock'); + Route::get('/apk-versions', [App\Http\Controllers\Admin\SpecialPermissionController::class, 'apkVersions'])->name('apk-versions'); + Route::get('/discord-notifications', [App\Http\Controllers\Admin\SpecialPermissionController::class, 'discordNotifications'])->name('discord-notifications'); + }); + + // 14. 權限設定 + Route::prefix('permission')->name('permission.')->group(function () { + Route::get('/app-features', [App\Http\Controllers\Admin\PermissionController::class, 'appFeatures'])->name('app-features'); + Route::get('/data-config', [App\Http\Controllers\Admin\PermissionController::class, 'dataConfig'])->name('data-config'); + Route::get('/sales', [App\Http\Controllers\Admin\PermissionController::class, 'sales'])->name('sales'); + Route::get('/machines', [App\Http\Controllers\Admin\PermissionController::class, 'machines'])->name('machines'); + Route::get('/warehouses', [App\Http\Controllers\Admin\PermissionController::class, 'warehouses'])->name('warehouses'); + Route::get('/analysis', [App\Http\Controllers\Admin\PermissionController::class, 'analysis'])->name('analysis'); + Route::get('/audit', [App\Http\Controllers\Admin\PermissionController::class, 'audit'])->name('audit'); + Route::get('/remote', [App\Http\Controllers\Admin\PermissionController::class, 'remote'])->name('remote'); + Route::get('/line', [App\Http\Controllers\Admin\PermissionController::class, 'line'])->name('line'); + Route::get('/roles', [App\Http\Controllers\Admin\PermissionController::class, 'roles'])->name('roles'); + Route::get('/others', [App\Http\Controllers\Admin\PermissionController::class, 'others'])->name('others'); + Route::get('/ai-prediction', [App\Http\Controllers\Admin\PermissionController::class, 'aiPrediction'])->name('ai-prediction'); + }); + + // 主題設定 Route::post('/theme', [App\Http\Controllers\Admin\ThemeController::class, 'update'])->name('theme.update'); });