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