From 6408f2e6314e56fe910e4c511541ac7395765e99 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Mon, 25 Aug 2025 11:16:50 +0800 Subject: [PATCH] update --- ...urseContentEvaluationTestDataGenerator.php | 65 ++++++++----------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/app/Services/TestData/CourseContentEvaluationTestDataGenerator.php b/app/Services/TestData/CourseContentEvaluationTestDataGenerator.php index d911d0f..ddcfe07 100644 --- a/app/Services/TestData/CourseContentEvaluationTestDataGenerator.php +++ b/app/Services/TestData/CourseContentEvaluationTestDataGenerator.php @@ -60,34 +60,46 @@ class CourseContentEvaluationTestDataGenerator } // 3) 生成评价问卷主数据 - $selectedCourseContents = $allCourseContents->random(min($evaluationCount, $allCourseContents->count())); + // 按课程分组,每个课程生成一个问卷,包含该课程的所有内容 + $coursesWithContents = $courses->map(function ($course) use ($allCourseContents) { + $courseContents = $allCourseContents->where('course_id', $course->id); + return [ + 'course' => $course, + 'contents' => $courseContents + ]; + })->filter(function ($item) { + return $item['contents']->count() > 0; + }); - foreach ($selectedCourseContents as $courseContent) { - $course = $courses->where('id', $courseContent->course_id)->first(); + $selectedCourses = $coursesWithContents->random(min($evaluationCount, $coursesWithContents->count())); - if (!$course) { - // 如果找不到课程,跳过这个课程内容 - continue; - } + foreach ($selectedCourses as $courseData) { + $course = $courseData['course']; + $courseContents = $courseData['contents']; - $evaluation = $this->createEvaluation($courseContent, $course, $faker); + // 为每个课程创建一个评价问卷 + $evaluation = $this->createEvaluation($courseContents->first(), $course, $faker); - // 4) 为每个问卷生成问题字段 - $asks = $this->createEvaluationAsks($evaluation, $courseContent, $course, 0, $faker); + // 4) 为每个问卷生成问题字段(包含该课程的所有内容) + $allAsks = []; + foreach ($courseContents as $courseContent) { + $asks = $this->createEvaluationAsks($evaluation, $courseContent, $course, 0, $faker); + $allAsks = array_merge($allAsks, $asks); + } // 5) 生成用户提交的表单数据 $formCount = $faker->numberBetween(10, min(40, $allUsers->count())); $submittedUsers = $allUsers->random($formCount); foreach ($submittedUsers as $user) { - $this->createEvaluationForm($evaluation, $user, $asks, $faker); + $this->createEvaluationForm($evaluation, $user, $allAsks, $faker); } $log(sprintf( '评价问卷#%d "%s" 已生成:%d个问题字段,%d份用户提交', $evaluation->id, $evaluation->title, - count($asks), + count($allAsks), $formCount )); } @@ -136,28 +148,7 @@ class CourseContentEvaluationTestDataGenerator $sort = 1; - // 添加课程内容标题作为分组 - $ask = new CourseContentEvaluationAsk(); - $ask->admin_id = $faker->numberBetween(1, 10); - $ask->department_id = $faker->numberBetween(1, 5); - $ask->course_id = $course->id; - $ask->course_content_id = $courseContent->id; - $ask->course_content_evaluation_id = $evaluation->id; - $ask->name = $courseContent->theme; - $ask->field = 'course_content_title'; - $ask->edit_input = 'text'; - $ask->rule = ''; - $ask->sort = $sort++; - $ask->help = '课程内容标题'; - $ask->select_item = null; - $ask->need_fill = false; - $ask->belong_user = false; - $ask->allow_input = false; - $ask->save(); - - $asks[] = $ask; - - // 为每个评价维度创建问题 + // 为每个评价维度创建问题,每个维度都包含课程内容标题 foreach ($evaluationDimensions as $dimension) { $ask = new CourseContentEvaluationAsk(); $ask->admin_id = $faker->numberBetween(1, 10); @@ -165,12 +156,12 @@ class CourseContentEvaluationTestDataGenerator $ask->course_id = $course->id; $ask->course_content_id = $courseContent->id; $ask->course_content_evaluation_id = $evaluation->id; - $ask->name = $dimension; - $ask->field = strtolower(str_replace(' ', '_', $dimension)); + $ask->name = $courseContent->theme . '——' . $dimension; + $ask->field = strtolower(str_replace(' ', '_', $dimension)) . '_' . $courseContent->id; $ask->edit_input = 'radio'; $ask->rule = 'required'; $ask->sort = $sort++; - $ask->help = "请评价该课程的{$dimension}"; + $ask->help = "请评价《{$courseContent->theme}》的{$dimension}"; $ask->select_item = ['很不满意', '不满意', '一般', '满意', '很满意']; $ask->need_fill = true; $ask->belong_user = false;