后端: - 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个业务页面(线索/客户/合同/渠道/投诉/房型/房间/预定/护理档案/护理计划/护理记录/菜品/排餐)
180 lines
7.8 KiB
PHP
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']);
|
|
});
|
|
});
|