Files
yuezi-saas/backend/routes/api.php
T
li 16bcd9bcf0 feat: 第二阶段核心业务模块(CRM/房务/护理/月子餐)
后端:
- 4个迁移文件新增23张业务表
- 23个Eloquent Model(含关联/类型转换/门店隔离)
- 20个Controller(含CRUD+业务操作: 合同审核/入住退房/护理异常处理等)
- 110+条API路由(crm/room/care/meal四大前缀)

前端:
- 4个API模块(crm.js/room.js/care.js/meal.js)
- 13个业务页面(线索/客户/合同/渠道/投诉/房型/房间/预定/护理档案/护理计划/护理记录/菜品/排餐)
2026-03-13 20:18:29 +08:00

180 lines
7.8 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\AuthController;
use App\Http\Controllers\Admin\System\StoreController;
use App\Http\Controllers\Admin\System\DepartmentController;
use App\Http\Controllers\Admin\System\PositionController;
use App\Http\Controllers\Admin\System\UserController;
use App\Http\Controllers\Admin\System\RoleController;
use App\Http\Controllers\Admin\System\MenuController;
use App\Http\Controllers\Admin\System\PermissionController;
use App\Http\Controllers\Admin\System\DictionaryController;
use App\Http\Controllers\Admin\System\OperationLogController;
use App\Http\Controllers\Admin\Crm\ChannelController;
use App\Http\Controllers\Admin\Crm\LeadController;
use App\Http\Controllers\Admin\Crm\CustomerController;
use App\Http\Controllers\Admin\Crm\ContractController;
use App\Http\Controllers\Admin\Crm\QuestionnaireController;
use App\Http\Controllers\Admin\Crm\ComplaintController;
use App\Http\Controllers\Admin\Room\RoomTypeController;
use App\Http\Controllers\Admin\Room\RoomController;
use App\Http\Controllers\Admin\Room\ReservationController;
use App\Http\Controllers\Admin\Room\CustomerOutingController;
use App\Http\Controllers\Admin\Room\CallRecordController;
use App\Http\Controllers\Admin\Care\CareProfileController;
use App\Http\Controllers\Admin\Care\CarePlanController;
use App\Http\Controllers\Admin\Care\CareRecordController;
use App\Http\Controllers\Admin\Care\CareExceptionController;
use App\Http\Controllers\Admin\Care\HealthMetricController;
use App\Http\Controllers\Admin\Meal\DishController;
use App\Http\Controllers\Admin\Meal\MealPlanTemplateController;
use App\Http\Controllers\Admin\Meal\DailyMealPlanController;
use App\Http\Controllers\Admin\Meal\MealReviewController;
/*
|--------------------------------------------------------------------------
| 后台管理 API 路由
|--------------------------------------------------------------------------
| 前缀: /api/v1/ (在 bootstrap/app.php 中配置)
*/
// ===== 公开路由(无需认证) =====
Route::post('/auth/login', [AuthController::class, 'login']);
// ===== 需要认证的路由 =====
Route::middleware(['auth:sanctum', 'store', 'oplog'])->group(function () {
// --- 认证 ---
Route::post('/auth/logout', [AuthController::class, 'logout']);
Route::get('/auth/me', [AuthController::class, 'me']);
// --- 系统设置模块 ---
Route::prefix('system')->group(function () {
// 门店管理
Route::apiResource('stores', StoreController::class);
// 部门管理
Route::apiResource('departments', DepartmentController::class)->except(['show']);
// 职务管理
Route::apiResource('positions', PositionController::class)->except(['show']);
// 用户管理
Route::apiResource('users', UserController::class);
Route::put('users/{user}/status', [UserController::class, 'updateStatus']);
Route::put('users/{user}/password', [UserController::class, 'resetPassword']);
// 角色管理
Route::apiResource('roles', RoleController::class);
Route::put('roles/{role}/permissions', [RoleController::class, 'assignPermissions']);
// 菜单管理
Route::apiResource('menus', MenuController::class)->except(['show']);
// 权限管理
Route::apiResource('permissions', PermissionController::class)->except(['show']);
// 数据字典
Route::apiResource('dictionaries', DictionaryController::class)->except(['show', 'update']);
Route::get('dictionaries/{dictionary}/items', [DictionaryController::class, 'items']);
Route::post('dictionaries/{dictionary}/items', [DictionaryController::class, 'storeItem']);
Route::put('dictionary-items/{item}', [DictionaryController::class, 'updateItem']);
Route::delete('dictionary-items/{item}', [DictionaryController::class, 'destroyItem']);
// 操作日志
Route::get('operation-logs', [OperationLogController::class, 'index']);
});
// --- CRM 客户关系模块 ---
Route::prefix('crm')->group(function () {
// 渠道管理
Route::apiResource('channels', ChannelController::class);
// 线索管理
Route::apiResource('leads', LeadController::class);
Route::post('leads/{lead}/follow', [LeadController::class, 'follow']);
Route::put('leads/{lead}/assign', [LeadController::class, 'assign']);
// 客户管理
Route::apiResource('customers', CustomerController::class);
// 合同管理
Route::apiResource('contracts', ContractController::class);
Route::put('contracts/{contract}/audit', [ContractController::class, 'audit']);
// 问卷管理
Route::apiResource('questionnaires', QuestionnaireController::class);
Route::post('questionnaire-answers', [QuestionnaireController::class, 'submitAnswer']);
Route::get('questionnaire-answers', [QuestionnaireController::class, 'answers']);
// 投诉管理
Route::apiResource('complaints', ComplaintController::class);
Route::put('complaints/{complaint}/handle', [ComplaintController::class, 'handle']);
});
// --- 房务管理模块 ---
Route::prefix('room')->group(function () {
// 房型管理
Route::apiResource('room-types', RoomTypeController::class);
// 房间管理
Route::apiResource('rooms', RoomController::class);
Route::put('rooms/{room}/status', [RoomController::class, 'updateStatus']);
// 预定管理
Route::apiResource('reservations', ReservationController::class);
Route::put('reservations/{reservation}/check-in', [ReservationController::class, 'checkIn']);
Route::put('reservations/{reservation}/check-out', [ReservationController::class, 'checkOut']);
Route::put('reservations/{reservation}/cancel', [ReservationController::class, 'cancel']);
// 外出记录
Route::apiResource('customer-outings', CustomerOutingController::class)->only(['index', 'store', 'show']);
Route::put('customer-outings/{customerOuting}/back', [CustomerOutingController::class, 'recordBack']);
// 呼叫记录
Route::get('call-records', [CallRecordController::class, 'index']);
Route::post('call-records', [CallRecordController::class, 'store']);
Route::put('call-records/{callRecord}/handle', [CallRecordController::class, 'handle']);
});
// --- 护理管理模块 ---
Route::prefix('care')->group(function () {
// 护理档案
Route::apiResource('profiles', CareProfileController::class);
// 护理计划
Route::apiResource('plans', CarePlanController::class);
// 护理记录
Route::apiResource('records', CareRecordController::class);
// 护理异常
Route::apiResource('exceptions', CareExceptionController::class)->except(['destroy']);
Route::put('exceptions/{careException}/handle', [CareExceptionController::class, 'handle']);
// 健康指标
Route::get('health-metrics', [HealthMetricController::class, 'index']);
Route::post('health-metrics', [HealthMetricController::class, 'store']);
});
// --- 月子餐模块 ---
Route::prefix('meal')->group(function () {
// 菜品库
Route::apiResource('dishes', DishController::class);
// 排餐模板
Route::apiResource('templates', MealPlanTemplateController::class);
// 每日排餐
Route::apiResource('daily-plans', DailyMealPlanController::class);
Route::put('daily-plans/{dailyMealPlan}/deliver', [DailyMealPlanController::class, 'deliver']);
Route::put('daily-plans/{dailyMealPlan}/status', [DailyMealPlanController::class, 'updateStatus']);
// 膳食评价
Route::get('reviews', [MealReviewController::class, 'index']);
Route::post('reviews', [MealReviewController::class, 'store']);
});
});