123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- <?php
- use Illuminate\Support\Facades\Route;
- use App\Http\Controllers\EnumController;
- use App\Http\Controllers\ScribeController;
- use App\Http\Controllers\UploadController;
- use App\Http\Controllers\Client\UserController;
- use App\Http\Controllers\Client\CoachController;
- use App\Http\Controllers\Client\OrderController;
- use App\Http\Controllers\Client\WalletController;
- use App\Http\Controllers\Client\WechatController;
- use App\Http\Controllers\Client\AccountController;
- use App\Http\Controllers\Client\CommentController;
- use App\Http\Controllers\Client\ProjectController;
- use App\Http\Controllers\Client\UserAddressController;
- use App\Http\Controllers\Client\CoachLocationController;
- use App\Http\Controllers\Client\MarketDistTeamController;
- use App\Http\Controllers\Coach\OrderController as CoachOrderController;
- use App\Http\Controllers\Coach\WalletController as CoachWalletController;
- use App\Http\Controllers\Coach\ProjectController as CoachProjectController;
- // API文档相关
- Route::get('scribe/update-token/{mobile}', [ScribeController::class, 'updateAuthToken']);
- Route::get('/enums', [EnumController::class, 'getEnumData']);
- // 客户端路由组
- Route::prefix('client')->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::post('pay/config', [App\Http\Controllers\Client\PaymentController::class, 'getConfig'])
- ->middleware('auth:sanctum')
- ->name('wechat.pay.config');
- // 微信支付回调
- Route::any('pay/notify', [App\Http\Controllers\Client\PaymentController::class, 'notify']);
- // 微信退款回调
- Route::post('refund/notify', [App\Http\Controllers\Client\PaymentController::class, 'refundNotify']);
- });
- // 需要认证的路由组
- 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('/enabled-projects', [CoachController::class, 'enabledProjects']);
- // 获取技师订单评价列表
- Route::get('/comments', [CoachController::class, 'comments']);
- Route::get('/{id}', [CoachController::class, 'detail']); // 获取技师详情
- Route::get('/', [CoachController::class, 'list']); // 获取技师列表
- });
- // 用户地址相关
- Route::prefix('address')->group(function () {
- Route::get('default', [UserAddressController::class, 'getDefault']);
- Route::get('/{id}', [UserAddressController::class, 'detail']);
- Route::put('/{id}', [UserAddressController::class, 'update']);
- Route::delete('/{id}', [UserAddressController::class, 'destroy']);
- Route::put('/{id}/default', [UserAddressController::class, 'setDefault']);
- Route::get('/', [UserAddressController::class, 'list']);
- Route::post('/', [UserAddressController::class, 'store']);
- });
- // 订单相关
- 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::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::post('rate', [OrderController::class, 'rate'])->name('client.order.rate');
- // 用户删除订单
- Route::delete('{id}', [OrderController::class, 'delete'])->name('client.order.delete');
- Route::get('comment-tags', [OrderController::class, 'commentTags']);
- });
- // 团队管理路由
- 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('/{order_id}/leave', [CoachOrderController::class, 'leave']);
- Route::post('settings', [CoachOrderController::class, 'setOrder'])->name('coach.orders.settings'); // 订单设置
- // 获取订单设置
- Route::get('settings', [CoachOrderController::class, 'getOrderSettings'])->name('coach.orders.get-settings');
- // 技师删除订单
- Route::delete('/{order_id}', [CoachOrderController::class, 'delete'])->name('coach.orders.delete');
- });
- // 项目相关路由
- 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::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']);
|