- StockService: 添加unlockStock()方法 - OrderController: 驳回时自动解锁库存 - routes/api.php: 添加warehouse/bindings、operation-logs、delivery统一路由
120 lines
5.6 KiB
PHP
120 lines
5.6 KiB
PHP
<?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']); // 批量重打
|
||
});
|
||
|