课程体系统计

master
lion 6 days ago
parent 78e536f262
commit 257642a5d8

@ -513,6 +513,28 @@ class UserController extends BaseController
});
}
})->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc');
$schoolmateCourseTypeStats = [];
$multiCourseTypeSchoolmateTotal = 0;
if (isset($all['is_schoolmate']) && (int) $all['is_schoolmate'] === 1 && empty($all['is_export'])) {
// 当前筛选命中的全部校友;课程体系按报名关联去重,不受列表分页影响。
$schoolmates = (clone $list)->reorder()->select('users.id')->toBase();
$registrations = CourseSign::query()
->join('courses', 'courses.id', '=', 'course_signs.course_id')
->join('course_types', 'course_types.id', '=', 'courses.type')
->whereNull('courses.deleted_at')
->whereNull('course_types.deleted_at')
->whereIn('course_signs.user_id', $schoolmates);
$schoolmateCourseTypeStats = (clone $registrations)
->select('course_types.id', 'course_types.name')
->selectRaw('COUNT(DISTINCT course_signs.user_id) as total')
->groupBy('course_types.id', 'course_types.name')
->orderBy('course_types.id')->get()->toArray();
$multipleTypes = (clone $registrations)->select('course_signs.user_id')
->groupBy('course_signs.user_id')
->havingRaw('COUNT(DISTINCT course_types.id) >= 2');
$multiCourseTypeSchoolmateTotal = \Illuminate\Support\Facades\DB::query()
->fromSub($multipleTypes->toBase(), 'multiple_types')->count();
}
if (isset($all['is_export']) && !empty($all['is_export'])) {
$list = $list->limit(5000)->get()->toArray();
return Excel::download(new CommonExport($list, $all['export_fields'] ?? ''), $all['file_name'] ?? '' . date('YmdHis') . '.xlsx');
@ -527,7 +549,7 @@ class UserController extends BaseController
$training_total = CourseSign::courseSignsTotalByUnique(CourseType::START_DATE, date('Y-m-d'), 1);
$list = $list->paginate($all['page_size'] ?? 20);
}
return $this->success(['list' => $list, 'year_total' => $year_total, 'total' => $total, 'year_training_total' => $year_training_total, 'training_total' => $training_total]);
return $this->success(['list' => $list, 'year_total' => $year_total, 'total' => $total, 'year_training_total' => $year_training_total, 'training_total' => $training_total, 'schoolmate_course_type_stats' => $schoolmateCourseTypeStats, 'multi_course_type_schoolmate_total' => $multiCourseTypeSchoolmateTotal]);
}
/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save