All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 1m6s
1. 修復帳號管理與角色權限頁面搜尋功能,支援 Enter 鍵快捷提交。 2. 完成 B013 (機台故障上報) API 實作,改用非同步隊列 (ProcessMachineError) 處理日誌上報。 3. 精簡 B013 API 參數,移除冗餘的 message 欄位,統一由雲端對照表翻譯。 4. 更新技術規格文件 (SKILL.md) 與系統 API 文件配置 (api-docs.php)。 5. 修正平台管理員帳號在搜尋過濾時的資料隔離邏輯。
86 lines
4.1 KiB
PHP
86 lines
4.1 KiB
PHP
<?php
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\Api\V1\MemberController;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| API Routes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| 這裡註冊所有的 API 路由,預設套用 api middleware group。
|
|
| 加入 v1 前綴與 throttle 進行速率限制防護。
|
|
|
|
|
*/
|
|
|
|
Route::prefix('v1')->middleware(['throttle:api'])->group(function () {
|
|
|
|
// 基本的使用者資料查詢
|
|
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
|
return $request->user();
|
|
});
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 會員 API Routes
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
// 公開路由(無需認證)
|
|
Route::prefix('members')->group(function () {
|
|
Route::post('/register', [MemberController::class, 'register']);
|
|
Route::post('/login', [MemberController::class, 'login']);
|
|
Route::post('/social-login', [MemberController::class, 'socialLogin']);
|
|
});
|
|
|
|
// 需認證路由
|
|
Route::prefix('members')->middleware('auth:sanctum')->group(function () {
|
|
Route::get('/profile', [MemberController::class, 'profile']);
|
|
Route::put('/profile', [MemberController::class, 'updateProfile']);
|
|
Route::post('/logout', [MemberController::class, 'logout']);
|
|
});
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 機台 API Routes (IoT)
|
|
|--------------------------------------------------------------------------
|
|
| 專門用於機台通訊,頻率較高,建議搭配異步處理。
|
|
*/
|
|
|
|
// 機台管理員 B000 登入驗證 (由於此階段機台未帶 Token 無法通過 iot.auth)
|
|
Route::prefix('app')->group(function () {
|
|
Route::post('admin/login/B000', [\App\Http\Controllers\Api\V1\App\MachineAuthController::class, 'loginB000'])->middleware('throttle:30,1');
|
|
});
|
|
|
|
Route::prefix('app')->middleware(['iot.auth', 'throttle:100,1'])->group(function () {
|
|
// 心跳與狀態 (B010, B017, B710, B220)
|
|
Route::post('machine/status/B010', [App\Http\Controllers\Api\V1\App\MachineController::class, 'heartbeat']);
|
|
Route::post('machine/reload_msg/B017', [App\Http\Controllers\Api\V1\App\MachineController::class, 'getSlots']);
|
|
Route::post('machine/timer/B710', [App\Http\Controllers\Api\V1\App\MachineController::class, 'syncTimer']);
|
|
Route::post('machine/coins/B220', [App\Http\Controllers\Api\V1\App\MachineController::class, 'syncCoinInventory']);
|
|
Route::post('machine/member/verify/B650', [App\Http\Controllers\Api\V1\App\MachineController::class, 'verifyMember']);
|
|
|
|
// 廣告與貨道清單 (B005, B009, B012)
|
|
Route::get('machine/ad/B005', [App\Http\Controllers\Api\V1\App\MachineController::class, 'getAdvertisements']);
|
|
Route::put('products/supplementary/B009', [App\Http\Controllers\Api\V1\App\MachineController::class, 'reportSlotList']);
|
|
|
|
// 統一商品主檔 API (B012 整合版)
|
|
Route::match(['get', 'patch'], 'machine/products/B012', [App\Http\Controllers\Api\V1\App\MachineController::class, 'getProducts']);
|
|
|
|
// 機台故障與異常上報 (B013)
|
|
Route::post('machine/error/B013', [App\Http\Controllers\Api\V1\App\MachineController::class, 'reportError']);
|
|
|
|
// 交易、發票與出貨 (B600, B601, B602)
|
|
Route::post('machine/restock/B018', [App\Http\Controllers\Api\V1\App\MachineController::class, 'recordRestock']);
|
|
Route::post('B600', [App\Http\Controllers\Api\V1\App\TransactionController::class, 'store']);
|
|
Route::post('B601', [App\Http\Controllers\Api\V1\App\TransactionController::class, 'recordInvoice']);
|
|
Route::post('B602', [App\Http\Controllers\Api\V1\App\TransactionController::class, 'recordDispense']);
|
|
});
|
|
|
|
Route::prefix('machines')->group(function () {
|
|
Route::post('/{id}/logs', [\App\Http\Controllers\Api\V1\MachineController::class, 'storeLog']);
|
|
});
|
|
|
|
});
|