|
|
|
|
@ -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]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|