mini_api.php 4.5 KB

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