master
cody 4 months ago
parent 4e11516ce2
commit 6408f2e631

@ -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;

Loading…
Cancel
Save