|
|
|
@ -248,5 +248,59 @@ class CourseSign extends SoftDeletesModel
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 区域统计
|
|
|
|
|
|
|
|
* @param string $start_date 开始日期
|
|
|
|
|
|
|
|
* @param string $end_date 结束日期
|
|
|
|
|
|
|
|
* @param array|null $course_ids 课程ID数组,不传则统计所有课程
|
|
|
|
|
|
|
|
* @param bool $retList 是否返回列表,false返回详情,true返回列表
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static function area($start_date, $end_date, $status = null, $course_ids = null, $retList = false)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 获取所有学员id
|
|
|
|
|
|
|
|
$courseSignList = CourseSign::where(function ($query) use ($status, $course_ids) {
|
|
|
|
|
|
|
|
if (isset($status)) {
|
|
|
|
|
|
|
|
$query->where('status', $status);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isset($course_ids)) {
|
|
|
|
|
|
|
|
$query->whereIn('course_id', $course_ids);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})->whereHas('course', function ($query) use ($start_date, $end_date) {
|
|
|
|
|
|
|
|
// 开始结束日期的筛选。or查询
|
|
|
|
|
|
|
|
$query->whereBetween('start_date', [$start_date, $end_date])
|
|
|
|
|
|
|
|
->whereBetween('end_date', [$start_date, $end_date]);
|
|
|
|
|
|
|
|
})->whereHas('user')->whereNotIn('status', [4, 5]);
|
|
|
|
|
|
|
|
// 地区
|
|
|
|
|
|
|
|
$suzhouArea = Company::where('company_city', '苏州市')->pluck('company_area')->unique();
|
|
|
|
|
|
|
|
$list = [];
|
|
|
|
|
|
|
|
foreach ($suzhouArea as $area) {
|
|
|
|
|
|
|
|
$list[] = [
|
|
|
|
|
|
|
|
'area' => $area,
|
|
|
|
|
|
|
|
'total' => $courseSignList->whereHas('user', function ($query) use ($area) {
|
|
|
|
|
|
|
|
$query->whereHas('company', function ($query) use ($area) {
|
|
|
|
|
|
|
|
$query->where('company_area', $area);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
})->count(),
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
$list[] = [
|
|
|
|
|
|
|
|
'area' => '苏州市外',
|
|
|
|
|
|
|
|
'total' => $courseSignList->whereHas('user', function ($query) use ($suzhouArea) {
|
|
|
|
|
|
|
|
$query->whereHas('company', function ($query) use ($suzhouArea) {
|
|
|
|
|
|
|
|
$query->whereNotIn('company_area', $suzhouArea);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
})->count(),
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($retList) {
|
|
|
|
|
|
|
|
// 返回列表
|
|
|
|
|
|
|
|
return $list;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 返回统计数据
|
|
|
|
|
|
|
|
return $courseSignList->get();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|