mini_api.php 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. use Webman\Route;
  3. use app\miniapi\controller\AgentController;
  4. use app\miniapi\controller\PhotoController;
  5. use app\miniapi\controller\DriverController;
  6. use app\miniapi\controller\CheckoutController;
  7. use app\miniapi\controller\EnterpriseController;
  8. use app\miniapi\controller\CatalogController;
  9. use app\miniapi\controller\AuthController;
  10. use app\miniapi\controller\SystemController;
  11. use app\miniapi\middleware\Authenticate;
  12. Route::group('/api/mini/v1', function () {
  13. Route::add(['GET', 'HEAD'], '/health', [SystemController::class, 'health']);
  14. Route::get('/config', [SystemController::class, 'config']);
  15. Route::post('/auth/wechat', [AuthController::class, 'login']);
  16. Route::post('/auth/send-sms', [AuthController::class, 'sendSms']);
  17. Route::post('/auth/phone-login', [AuthController::class, 'phoneLogin']);
  18. Route::post('/auth/test-phone', [AuthController::class, 'testPhone']);
  19. Route::get('/packages', [CatalogController::class, 'packages']);
  20. Route::get('/packages/{id:\d+}', [CatalogController::class, 'package']);
  21. // Add future authenticated endpoints in this group; public endpoints must be declared explicitly.
  22. Route::group(function () {
  23. Route::add(['GET', 'HEAD'], '/session', [SystemController::class, 'session']);
  24. Route::post('/auth/logout', [AuthController::class, 'logout']);
  25. Route::get('/me', [EnterpriseController::class, 'me']);
  26. Route::get('/addresses', [EnterpriseController::class, 'addresses']);
  27. Route::get('/enterprises/{enterprise:\d+}/{section:home|rights|ledger|orders|devices|rewards}', [EnterpriseController::class, 'enterprise']);
  28. Route::get('/enterprises/{enterprise:\d+}/devices/{id:\d+}', [EnterpriseController::class, 'device']);
  29. Route::get('/enterprises/{enterprise:\d+}/deliveries/{id:\d+}', [EnterpriseController::class, 'tracking']);
  30. Route::get('/enterprises/{enterprise:\d+}/address', [EnterpriseController::class, 'addressDetail']);
  31. Route::post('/enterprises/{enterprise:\d+}/address', [EnterpriseController::class, 'address']);
  32. Route::get('/enterprises/{enterprise:\d+}/addresses/{address:\d+}', [EnterpriseController::class, 'addressSiteDetail']);
  33. Route::post('/enterprises/{enterprise:\d+}/addresses', [EnterpriseController::class, 'createAddress']);
  34. Route::post('/enterprises/{enterprise:\d+}/addresses/{address:\d+}', [EnterpriseController::class, 'updateAddress']);
  35. Route::post('/enterprises/{enterprise:\d+}/deliveries', [EnterpriseController::class, 'book']);
  36. Route::post('/enterprises/{enterprise:\d+}/promotion/code', [\app\miniapi\controller\PromotionController::class, 'code']);
  37. Route::post('/enterprises/{enterprise:\d+}/promotion/bind', [\app\miniapi\controller\PromotionController::class, 'bind']);
  38. Route::post('/enterprises/{enterprise:\d+}/deliveries/{id:\d+}/cancel', [EnterpriseController::class, 'cancelDelivery']);
  39. Route::post('/enterprises/{enterprise:\d+}/checkout/quote', [CheckoutController::class, 'quote']);
  40. Route::post('/enterprises/{enterprise:\d+}/checkouts', [CheckoutController::class, 'checkout']);
  41. Route::get('/enterprises/{enterprise:\d+}/checkouts/{id:\d+}', [CheckoutController::class, 'checkoutDetail']);
  42. Route::post('/enterprises/{enterprise:\d+}/checkouts/{id:\d+}/cancel', [CheckoutController::class, 'cancelCheckout']);
  43. Route::post('/enterprises/{enterprise:\d+}/checkouts/{id:\d+}/pay', [CheckoutController::class, 'pay']);
  44. Route::get('/drivers/{driver:\d+}/{section:dashboard|tasks|routes}', [DriverController::class, 'driver']);
  45. Route::get('/drivers/{driver:\d+}/tasks/{id:\d+}', [DriverController::class, 'task']);
  46. Route::post('/drivers/{driver:\d+}/tasks/{id:\d+}/{action:start|checkin|draft|complete|exception}', [DriverController::class, 'taskCommand']);
  47. Route::post('/drivers/{driver:\d+}/tasks/{id:\d+}/photos', [DriverController::class, 'photoUpload']);
  48. Route::get('/drivers/{driver:\d+}/tasks/{id:\d+}/device-check', [DriverController::class, 'deviceCheck']);
  49. Route::get('/photos/{id:\d+}', [PhotoController::class, 'photo']);
  50. Route::get('/agents/{agent:\d+}/{section:dashboard|customers|orders|commissions}', [AgentController::class, 'agent']);
  51. Route::post('/agents/{agent:\d+}/withdrawals', [AgentController::class, 'withdraw']);
  52. })->middleware([Authenticate::class]);
  53. foreach (['/health', '/session'] as $path) {
  54. Route::add([
  55. 'POST',
  56. 'PUT',
  57. 'PATCH',
  58. 'DELETE',
  59. ], $path, [SystemController::class, 'methodNotAllowed']);
  60. }
  61. });
  62. Route::any('/api/mini', [SystemController::class, 'notFound']);
  63. Route::any('/api/mini/{path:.*}', [SystemController::class, 'notFound']);