api.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. use App\Http\Controllers\Client\AccountController;
  3. use App\Http\Controllers\Client\CoachController;
  4. use App\Http\Controllers\Client\CoachLocationController;
  5. use App\Http\Controllers\Client\MarketDistTeamController;
  6. use App\Http\Controllers\Client\OrderController;
  7. use App\Http\Controllers\Client\ProjectController;
  8. use App\Http\Controllers\Client\UserAddressController;
  9. use App\Http\Controllers\Client\UserController;
  10. use App\Http\Controllers\Client\WalletController;
  11. use App\Http\Controllers\Coach\OrderController as CoachOrderController;
  12. use App\Http\Controllers\EnumController;
  13. use App\Http\Controllers\ScribeController;
  14. use Illuminate\Support\Facades\Route;
  15. // API文档相关
  16. Route::get('scribe/update-token/{mobile}', [ScribeController::class, 'updateAuthToken']);
  17. Route::get('/enums', [EnumController::class, 'getEnumData']);
  18. // 客户端路由组
  19. Route::prefix('client')->group(function () {
  20. // 无需认证的公开路由
  21. Route::prefix('account')->group(function () {
  22. // 发送验证码
  23. Route::post('send-code', [AccountController::class, 'sendVerifyCode']);
  24. // 手机号登录
  25. Route::post('login', [AccountController::class, 'login']);
  26. // 微信登录
  27. Route::post('wx-login', [AccountController::class, 'wxLogin']);
  28. });
  29. // 需要认证的路由组
  30. Route::middleware('auth:sanctum')->group(function () {
  31. // 账号相关
  32. Route::prefix('account')->group(function () {
  33. // 退出登录
  34. Route::post('logout', [AccountController::class, 'logout']);
  35. // 注销账号
  36. Route::delete('/', [AccountController::class, 'destroy']);
  37. });
  38. // 用户相关
  39. Route::prefix('user')->group(function () {
  40. // 获取用户信息
  41. Route::get('/', [UserController::class, 'show']);
  42. // 用户注册
  43. Route::post('/', [UserController::class, 'register']);
  44. // 更新用户信息
  45. Route::put('/', [UserController::class, 'update']);
  46. // 提现
  47. Route::post('withdraw', [UserController::class, 'withdraw']);
  48. // 用户反馈
  49. // Route::post('/feedback', [UserController::class, 'feedback']);
  50. // 申请成为技师
  51. Route::post('/apply-coach', [UserController::class, 'applyCoach']);
  52. // 生成邀请码
  53. Route::get('/invite-code', [UserController::class, 'generateInviteCode']);
  54. });
  55. // 项目相关
  56. Route::prefix('project')->group(function () {
  57. Route::get('/', [ProjectController::class, 'index']); // 获取项目列表
  58. Route::get('/detail', [ProjectController::class, 'detail']); // 获取项目详情
  59. Route::get('/coach-list', [ProjectController::class, 'coachProjectList']); // 获取技师开通的项目列表
  60. });
  61. // 技师相关
  62. Route::prefix('coach')->group(function () {
  63. Route::prefix('location')->group(function () {
  64. Route::get('/', [CoachLocationController::class, 'index']); // 获取所有技师定位
  65. Route::post('/', [CoachLocationController::class, 'store']); // 创建新的技师定位
  66. Route::delete('/{id}', [CoachLocationController::class, 'destroy']); // 删除技师定位
  67. });
  68. Route::get('/', [CoachController::class, 'list']); // 获取技师列表
  69. Route::get('/{id}', [CoachController::class, 'detail']); // 获取技师详情
  70. });
  71. // 用户地址相关
  72. Route::prefix('address')->group(function () {
  73. Route::get('default', [UserAddressController::class, 'getDefault']);
  74. Route::post('/', [UserAddressController::class, 'store']);
  75. Route::put('/{id}', [UserAddressController::class, 'update']);
  76. Route::delete('/{id}', [UserAddressController::class, 'destroy']);
  77. Route::put('/{id}/default', [UserAddressController::class, 'setDefault']);
  78. });
  79. // 订单相关
  80. Route::prefix('orders')->group(function () {
  81. Route::post('initialize', [OrderController::class, 'initialize']);
  82. Route::post('create', [OrderController::class, 'create']);
  83. Route::post('cancel', [OrderController::class, 'cancel']);
  84. Route::post('finish', [OrderController::class, 'finish']);
  85. Route::post('confirm-leave', [OrderController::class, 'confirmLeave']);
  86. Route::get('list', [OrderController::class, 'list']);
  87. Route::get('detail/{id}', [OrderController::class, 'detail']);
  88. Route::post('add-time', [OrderController::class, 'addTime']);
  89. Route::post('calculate-order-amount', [OrderController::class, 'calculateOrderAmount']);
  90. // Route::post('refund/{id}', [OrderController::class, 'refund']);
  91. // Route::post('get-agent-config', [OrderController::class, 'getAgentConfig']);
  92. // Route::post('get-coach-config', [OrderController::class, 'getCoachConfig']);
  93. // Route::post('calculate-delivery-fee', [OrderController::class, 'calculateDeliveryFee']);
  94. Route::get('grab-list', [OrderController::class, 'getOrderGrabList']);
  95. // 指派技师
  96. Route::post('assign-coach', [App\Http\Controllers\Client\OrderController::class, 'assignCoach'])
  97. ->name('assign-coach');
  98. });
  99. // 钱包相关
  100. Route::prefix('wallet')->group(function () {
  101. Route::get('records', [WalletController::class, 'records']);
  102. // 获取钱包信息
  103. Route::get('wallet', [WalletController::class, 'wallet']);
  104. });
  105. // 团队管理路由
  106. Route::prefix('team')->group(function () {
  107. Route::get('list', [MarketDistTeamController::class, 'index'])->name('team.list');
  108. });
  109. });
  110. });
  111. // 技师端路由组
  112. Route::middleware(['auth:sanctum', 'verified'])->prefix('coach')->group(function () {
  113. // 账户相关路由组
  114. Route::prefix('account')->group(function () {
  115. Route::post('base-info', [App\Http\Controllers\Coach\AccountController::class, 'submitBaseInfo'])
  116. ->middleware(['throttle:6,1'])
  117. ->name('coach.account.base-info');
  118. Route::post('qualification', [App\Http\Controllers\Coach\AccountController::class, 'submitQualification']);
  119. Route::post('real-name', [App\Http\Controllers\Coach\AccountController::class, 'submitRealName'])
  120. ->middleware('throttle:3,1'); // 实名认证限制更严格
  121. Route::get('info', [App\Http\Controllers\Coach\AccountController::class, 'info']);
  122. // 设置位置信息
  123. Route::post('location', [App\Http\Controllers\Coach\AccountController::class, 'setLocation'])
  124. ->name('coach.account.location');
  125. });
  126. // 订单相关路由
  127. Route::prefix('orders')->group(function () {
  128. Route::get('/', [CoachOrderController::class, 'getOrderList']);
  129. Route::get('/grab', [CoachOrderController::class, 'getGrabList']);
  130. Route::post('/grab/{order_id}', [CoachOrderController::class, 'grabOrder']);
  131. });
  132. // 获取技师位置信息
  133. Route::get('location', [\App\Http\Controllers\Coach\AccountController::class, 'getLocation']);
  134. });