erp-backend/routes/api.php
Yatu e80e57cdcf feat: B-001 驳回库存释放 + B-002 缺失路由 + B-003 delivery路径统一
- StockService: 添加unlockStock()方法
- OrderController: 驳回时自动解锁库存
- routes/api.php: 添加warehouse/bindings、operation-logs、delivery统一路由
2026-04-01 19:05:21 +08:00

120 lines
5.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\GoodsController;
use App\Http\Controllers\ShopAuthController;
use App\Http\Controllers\SupplierController;
use App\Http\Controllers\BrandController;
use App\Http\Controllers\WarehouseController;
use App\Http\Controllers\PlatformController;
use App\Http\Controllers\PurchaseOrderController;
use App\Http\Controllers\ReceivingOrderController;
use App\Http\Controllers\OrderController;
use App\Http\Controllers\DeliveryController;
use App\Http\Controllers\ErpSkuController;
use App\Http\Controllers\StockController;
use App\Http\Controllers\PlatformProductController;
use App\Http\Controllers\PrintPluginController;
use App\Http\Controllers\ThirdPartyConfigController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\PermissionController;
use App\Http\Controllers\AfterSaleController;
// 测试路由
Route::get('/test-controller', [OrderController::class, 'test']);
Route::get('/test-api', function() {
return response()->json(['message' => 'API works']);
});
// 认证路由(不需要认证)
Route::prefix('auth')->group(function () {
Route::post('/login', [AuthController::class, 'login']);
Route::post('/register', [AuthController::class, 'register']);
Route::post('/logout', [AuthController::class, 'logout'])->middleware('auth:sanctum');
Route::post('/refresh', [AuthController::class, 'refresh'])->middleware('auth:sanctum');
// 短信登录
Route::post('/sms/send', [AuthController::class, 'sendSmsCode']);
Route::post('/sms/login', [AuthController::class, 'smsLogin']);
// 微信登录
Route::get('/wechat/qr', [AuthController::class, 'wechatQr']);
Route::post('/wechat/check', [AuthController::class, 'wechatCheck']);
Route::post('/wechat/mock-scan', [AuthController::class, 'wechatMockScan']);
Route::get('/wechat/callback', [AuthController::class, 'wechatCallback']);
// 图形验证码
Route::get('/captcha', [AuthController::class, 'captcha']);
// 忘记密码
Route::post('/reset/send-code', [AuthController::class, 'sendResetCode']);
Route::post('/reset/password', [AuthController::class, 'resetPassword']);
// 异地登录配对码
Route::post('/send-pair-code', [AuthController::class, 'sendPairCode']);
Route::post('/verify-pair-code', [AuthController::class, 'verifyPairCode']);
Route::post('/logout-all-devices', [AuthController::class, 'logoutAllDevices'])->middleware('auth:sanctum');
});
// 用户路由(需要认证)
Route::middleware('auth:sanctum')->prefix('user')->group(function () {
Route::get('/', [AuthController::class, 'me']);
Route::put('/profile', [AuthController::class, 'updateProfile']);
Route::put('/password', [AuthController::class, 'changePassword']);
Route::post('/bind-wechat', [AuthController::class, 'bindWechat']);
Route::post('/unbind-wechat', [AuthController::class, 'unbindWechat']);
Route::get('/login-logs', [AuthController::class, 'loginLogs']);
Route::post('/send-email-change-code', [AuthController::class, 'sendEmailChangeCode']);
Route::post('/verify-email-change', [AuthController::class, 'verifyEmailChange']);
Route::get('/devices', [AuthController::class, 'getTrustedDevices']);
Route::delete('/devices/{id}', [AuthController::class, 'revokeDevice']);
Route::post('/devices/{id}/approve', [AuthController::class, 'approveDevice']);
});
// 售后管理
Route::middleware('auth:sanctum')->prefix('after-sales')->group(function () {
Route::get('/', [AfterSaleController::class, 'index']);
Route::get('/stats', [AfterSaleController::class, 'stats']);
Route::get('/available-orders', [AfterSaleController::class, 'availableOrders']);
Route::get('/all-available-orders', [AfterSaleController::class, 'allAvailableOrders']);
Route::get('/{id}', [AfterSaleController::class, 'show']);
Route::post('/', [AfterSaleController::class, 'store']);
Route::put('/{id}/status', [AfterSaleController::class, 'updateStatus']);
Route::delete('/{id}', [AfterSaleController::class, 'destroy']);
});
// 商品管理Goods
Route::prefix('goods')->group(function () {
Route::get('/', [GoodsController::class, 'index']);
Route::post('/', [GoodsController::class, 'store']);
Route::get('/all', [GoodsController::class, 'all']);
Route::get('/{id}', [GoodsController::class, 'show']);
Route::put('/{id}', [GoodsController::class, 'update']);
Route::delete('/{id}', [GoodsController::class, 'destroy']);
});
// 仓库模板绑定
Route::middleware('auth:sanctum')->prefix('warehouse')->group(function () {
Route::get('/bindings', [WarehouseTemplateBindingController::class, 'index']);
Route::post('/bindings', [WarehouseTemplateBindingController::class, 'store']);
Route::put('/bindings/{id}', [WarehouseTemplateBindingController::class, 'update']);
Route::delete('/bindings/{id}', [WarehouseTemplateBindingController::class, 'destroy']);
});
// 操作日志
Route::middleware('auth:sanctum')->prefix('operation-logs')->group(function () {
Route::get('/', [OperationLogController::class, 'index']);
Route::get('/export', [OperationLogController::class, 'export']);
});
// 发货管理 - 统一路径
Route::middleware('auth:sanctum')->prefix('delivery')->group(function () {
Route::get('/pending', [DeliveryController::class, 'pending']);
Route::get('/pending-delivery', [DeliveryController::class, 'pending']); // 兼容旧路径
Route::get('/reprint/{id}', [DeliveryController::class, 'reprint']);
Route::post('/reprint', [DeliveryController::class, 'reprintBatch']); // 批量重打
});