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个业务页面(线索/客户/合同/渠道/投诉/房型/房间/预定/护理档案/护理计划/护理记录/菜品/排餐)
This commit is contained in:
@@ -11,6 +11,26 @@ 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;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -66,4 +86,94 @@ Route::middleware(['auth:sanctum', 'store', 'oplog'])->group(function () {
|
||||
// 操作日志
|
||||
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']);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user