group(function () { // 无需认证的路由 Route::prefix('account')->group(function () { // 发验证码 Route::post('send-code', [AccountController::class, 'sendVerifyCode']); // 手机号登录 Route::post('login', [AccountController::class, 'login'])->name('login'); // 微信登录 Route::post('wx-login', [AccountController::class, 'wxLogin']); }); // 微信相关路由(无需认证) Route::prefix('wechat')->group(function () { Route::get('auth-url', [WechatController::class, 'getAuthUrl']); Route::post('callback', [WechatController::class, 'handleCallback']); Route::get('js-config', [WechatController::class, 'getJsConfig']); }); // 需要认证的路由组 Route::middleware('auth:sanctum')->group(function () { // 账号相关 Route::prefix('account')->group(function () { // 退出登录 Route::post('logout', [AccountController::class, 'logout']); // 注销账号 Route::delete('/', [AccountController::class, 'destroy']); // 绑定手机号 Route::post('bind-mobile', [AccountController::class, 'bindMobile']) ->middleware(['throttle:6,1']); // 添加频率限制; }); // 用户相关 Route::prefix('user')->group(function () { // 获取用户信息 Route::get('/', [UserController::class, 'show']); // 用户注册 Route::post('/', [UserController::class, 'register']); // 更新用户信息 Route::put('/', [UserController::class, 'update']); // 提现 Route::post('withdraw', [UserController::class, 'withdraw']); // 户反馈 // Route::post('/feedback', [UserController::class, 'feedback']); // 申请成为技师 Route::post('/apply-coach', [UserController::class, 'applyCoach']); // 生成邀请码 Route::get('/invite-code', [UserController::class, 'generateInviteCode']); // 获取技师申请记录 Route::get('coach/application', [UserController::class, 'getCoachApplication']); }); // 项目相关 Route::prefix('project')->group(function () { Route::get('/', [ProjectController::class, 'index']); // 获取项目列表 Route::get('/detail', [ProjectController::class, 'detail']); // 获取项目详情 Route::get('/coach-list', [ProjectController::class, 'coachProjectList']); // 获取技师开通的项目列表 }); // 技师相关 Route::prefix('coach')->group(function () { Route::prefix('location')->group(function () { Route::get('/', [CoachLocationController::class, 'index']); // 获取所有技师定位 Route::post('/', [CoachLocationController::class, 'store']); // 创建新的技师定位 Route::delete('/{id}', [CoachLocationController::class, 'destroy']); // 删除技师定位 }); // 获取可预约时间段 Route::get('schedule', [CoachController::class, 'getSchedule']); Route::get('/', [CoachController::class, 'list']); // 获取技师列表 Route::get('/{id}', [CoachController::class, 'detail']); // 获取技师详情 }); // 用户地址相关 Route::prefix('address')->group(function () { Route::get('default', [UserAddressController::class, 'getDefault']); Route::get('/', [UserAddressController::class, 'list']); Route::post('/', [UserAddressController::class, 'store']); Route::put('/{id}', [UserAddressController::class, 'update']); Route::delete('/{id}', [UserAddressController::class, 'destroy']); Route::put('/{id}/default', [UserAddressController::class, 'setDefault']); }); // 订单相关 Route::prefix('orders')->group(function () { Route::post('initialize', [OrderController::class, 'initialize']); Route::post('create', [OrderController::class, 'create']); Route::post('cancel', [OrderController::class, 'cancel']); Route::post('finish', [OrderController::class, 'finish']); Route::post('confirm-leave', [OrderController::class, 'confirmLeave']); Route::get('list', [OrderController::class, 'list']); Route::get('detail/{id}', [OrderController::class, 'detail']); Route::post('add-time', [OrderController::class, 'addTime']); Route::post('calculate-order-amount', [OrderController::class, 'calculateOrderAmount']); // Route::post('refund/{id}', [OrderController::class, 'refund']); // Route::post('get-agent-config', [OrderController::class, 'getAgentConfig']); // Route::post('get-coach-config', [OrderController::class, 'getCoachConfig']); // Route::post('calculate-delivery-fee', [OrderController::class, 'calculateDeliveryFee']); Route::get('grab-list', [OrderController::class, 'getOrderGrabList']); // 指派技师 Route::post('assign-coach', [App\Http\Controllers\Client\OrderController::class, 'assignCoach']) ->name('assign-coach'); // 生成订单核销码 Route::get('{id}/code', [OrderController::class, 'generateCode']); }); // 团队管理路由 Route::prefix('team')->group(function () { Route::get('list', [MarketDistTeamController::class, 'index'])->name('team.list'); }); // 评价管理 Route::post('comments', [CommentController::class, 'store'])->name('client.comments.store'); Route::get('comments', [CommentController::class, 'index'])->name('client.comments.index'); // 技师分组 Route::get('coach-groups', [App\Http\Controllers\Client\CoachGroupController::class, 'index']); // 钱包相关 Route::prefix('wallet')->group(function () { Route::get('records', [WalletController::class, 'records']); // 取钱包信息 Route::get('wallet', [WalletController::class, 'wallet']); // 提现 Route::post('withdraw', [WalletController::class, 'withdraw']); }); }); }); // 技师端路由组 Route::middleware(['auth:sanctum', 'coach'])->prefix('coach')->group(function () { // 认证相关路由 Route::prefix('auth')->group(function () { Route::post('basic-info', [\App\Http\Controllers\Coach\AuthController::class, 'submitBasicInfo']); Route::post('real-auth', [\App\Http\Controllers\Coach\AuthController::class, 'submitRealAuth']); Route::post('qual-auth', [\App\Http\Controllers\Coach\AuthController::class, 'submitQualAuth']); Route::get('status', [\App\Http\Controllers\Coach\AuthController::class, 'getAuthStatus']); }); // 账户相关路由组 Route::prefix('account')->group(function () { Route::post('base-info', [App\Http\Controllers\Coach\AccountController::class, 'submitBaseInfo']) ->middleware(['throttle:6,1']) ->name('coach.account.base-info'); Route::post('qualification', [App\Http\Controllers\Coach\AccountController::class, 'submitQualification']); Route::post('real-name', [App\Http\Controllers\Coach\AccountController::class, 'submitRealName']) ->middleware('throttle:3,1'); // 实名认证限制更严格 // 获取技师认证详情 Route::get('info', [App\Http\Controllers\Coach\AccountController::class, 'info']); // 设置位置信息 Route::post('location', [App\Http\Controllers\Coach\AccountController::class, 'setLocation']) ->name('coach.account.location'); // 获取技师位置信息 Route::get('location', [\App\Http\Controllers\Coach\AccountController::class, 'getLocation']); // 排班管理 Route::post('schedule', [\App\Http\Controllers\Coach\AccountController::class, 'setSchedule']); // 更新技师工作状态 Route::post('work-status', [App\Http\Controllers\Coach\AccountController::class, 'updateWorkStatus']); // 获取技师工作状态 Route::get('work-status', [App\Http\Controllers\Coach\AccountController::class, 'getWorkStatus']); // 获取技师排班信息 Route::get('schedule', [App\Http\Controllers\Coach\AccountController::class, 'getSchedule']); // 获取技师详情 Route::get('detail', [App\Http\Controllers\Coach\AccountController::class, 'detail'])->name('coach.detail'); // 更新基础信息 Route::post('update-basic-info', [App\Http\Controllers\Coach\AccountController::class, 'updateBasicInfo']) ->middleware(['throttle:6,1']) // 添加频率限制,每分钟最多6次 ->name('coach.account.update-basic-info'); // 发送验证码 Route::post('send-code', [App\Http\Controllers\Coach\AccountController::class, 'sendVerifyCode']) ->middleware(['throttle:3,1']) // 限制每分钟最多发送3次 ->name('coach.account.send-code'); // 获取已开通项目 Route::get('enabled-projects', [App\Http\Controllers\Coach\AccountController::class, 'enabledProjects']) ->name('coach.account.enabled-projects'); }); // 订单相关路由 Route::prefix('orders')->group(function () { // 获取技师订单列表 Route::get('/', [CoachOrderController::class, 'getOrderList']); // 获取可抢单列表 Route::get('/grab', [CoachOrderController::class, 'getGrabList']); // 抢单 Route::post('/grab/{order_id}', [CoachOrderController::class, 'grabOrder']); // 接受订单 Route::post('/accept/{order_id}', [CoachOrderController::class, 'acceptOrder']); // 拒绝订单 Route::post('/reject/{order_id}', [CoachOrderController::class, 'rejectOrder']) ->middleware(['throttle:6,1']); // 限制拒单频率 // 技师出发 Route::post('/depart/{order_id}', [CoachOrderController::class, 'depart']); // 技师到达 Route::post('/arrive/{order_id}', [CoachOrderController::class, 'arrive']); // 技师开始服务 Route::post('/start-service', [CoachOrderController::class, 'startService']); // 技师撤离 Route::post('coach/orders/{order_id}/leave', [CoachOrderController::class, 'leave']) ->name('coach.orders.leave') ->where('order_id', '[0-9]+'); Route::post('settings', [CoachOrderController::class, 'setOrder'])->name('coach.orders.settings'); // 订单设置 }); // 项目相关路由 Route::prefix('projects')->group(function () { Route::get('/available', [CoachProjectController::class, 'getAvailableProjects']); Route::post('/open', [CoachProjectController::class, 'openProject']); Route::post('/set', [CoachProjectController::class, 'setProject']); // 获取项目设置 Route::get('/set', [CoachProjectController::class, 'getProjectSettings']); }); // 钱包相关路由 Route::prefix('wallet')->group(function () { Route::get('/', [CoachWalletController::class, 'getWallet']); Route::get('/records', [CoachWalletController::class, 'getWalletRecords']); Route::post('/withdraw', [CoachWalletController::class, 'withdraw']) ->middleware(['throttle:10,1']); // 限制提现频率 }); // 获取技师工作状态 Route::get('/work-status', [CoachController::class, 'getWorkStatus']); // 投流订单 Route::post('flow/create-order', [\App\Http\Controllers\Coach\CoachFlowController::class, 'createOrder']); }); // 大观支付回调 Route::post('dgpay/notify', [App\Http\Controllers\Api\DgPayController::class, 'notify'])->name('dgpay.notify'); Route::get('dgpay/return', [App\Http\Controllers\Api\DgPayController::class, 'return'])->name('dgpay.return'); Route::post('/upload', [UploadController::class, 'upload']); Route::get('/download', [UploadController::class, 'download']); Route::get('/view', [UploadController::class, 'view']);