master
cody 4 months ago
parent 4e11516ce2
commit 6408f2e631

@ -60,34 +60,46 @@ class CourseContentEvaluationTestDataGenerator
} }
// 3) 生成评价问卷主数据 // 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) { $selectedCourses = $coursesWithContents->random(min($evaluationCount, $coursesWithContents->count()));
$course = $courses->where('id', $courseContent->course_id)->first();
if (!$course) { foreach ($selectedCourses as $courseData) {
// 如果找不到课程,跳过这个课程内容 $course = $courseData['course'];
continue; $courseContents = $courseData['contents'];
}
$evaluation = $this->createEvaluation($courseContent, $course, $faker); // 为每个课程创建一个评价问卷
$evaluation = $this->createEvaluation($courseContents->first(), $course, $faker);
// 4) 为每个问卷生成问题字段 // 4) 为每个问卷生成问题字段(包含该课程的所有内容)
$asks = $this->createEvaluationAsks($evaluation, $courseContent, $course, 0, $faker); $allAsks = [];
foreach ($courseContents as $courseContent) {
$asks = $this->createEvaluationAsks($evaluation, $courseContent, $course, 0, $faker);
$allAsks = array_merge($allAsks, $asks);
}
// 5) 生成用户提交的表单数据 // 5) 生成用户提交的表单数据
$formCount = $faker->numberBetween(10, min(40, $allUsers->count())); $formCount = $faker->numberBetween(10, min(40, $allUsers->count()));
$submittedUsers = $allUsers->random($formCount); $submittedUsers = $allUsers->random($formCount);
foreach ($submittedUsers as $user) { foreach ($submittedUsers as $user) {
$this->createEvaluationForm($evaluation, $user, $asks, $faker); $this->createEvaluationForm($evaluation, $user, $allAsks, $faker);
} }
$log(sprintf( $log(sprintf(
'评价问卷#%d "%s" 已生成:%d个问题字段%d份用户提交', '评价问卷#%d "%s" 已生成:%d个问题字段%d份用户提交',
$evaluation->id, $evaluation->id,
$evaluation->title, $evaluation->title,
count($asks), count($allAsks),
$formCount $formCount
)); ));
} }
@ -136,28 +148,7 @@ class CourseContentEvaluationTestDataGenerator
$sort = 1; $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) { foreach ($evaluationDimensions as $dimension) {
$ask = new CourseContentEvaluationAsk(); $ask = new CourseContentEvaluationAsk();
$ask->admin_id = $faker->numberBetween(1, 10); $ask->admin_id = $faker->numberBetween(1, 10);
@ -165,12 +156,12 @@ class CourseContentEvaluationTestDataGenerator
$ask->course_id = $course->id; $ask->course_id = $course->id;
$ask->course_content_id = $courseContent->id; $ask->course_content_id = $courseContent->id;
$ask->course_content_evaluation_id = $evaluation->id; $ask->course_content_evaluation_id = $evaluation->id;
$ask->name = $dimension; $ask->name = $courseContent->theme . '——' . $dimension;
$ask->field = strtolower(str_replace(' ', '_', $dimension)); $ask->field = strtolower(str_replace(' ', '_', $dimension)) . '_' . $courseContent->id;
$ask->edit_input = 'radio'; $ask->edit_input = 'radio';
$ask->rule = 'required'; $ask->rule = 'required';
$ask->sort = $sort++; $ask->sort = $sort++;
$ask->help = "请评价该课程的{$dimension}"; $ask->help = "请评价《{$courseContent->theme}》的{$dimension}";
$ask->select_item = ['很不满意', '不满意', '一般', '满意', '很满意']; $ask->select_item = ['很不满意', '不满意', '一般', '满意', '很满意'];
$ask->need_fill = true; $ask->need_fill = true;
$ask->belong_user = false; $ask->belong_user = false;

Loading…
Cancel
Save