|
|
|
@ -296,15 +296,15 @@ class CourseSign extends SoftDeletesModel
|
|
|
|
$years = [];
|
|
|
|
$years = [];
|
|
|
|
if ($start_date && $end_date) {
|
|
|
|
if ($start_date && $end_date) {
|
|
|
|
// 从开始和结束日期中提取年份范围
|
|
|
|
// 从开始和结束日期中提取年份范围
|
|
|
|
$startYear = (int)date('Y', strtotime($start_date));
|
|
|
|
$startYear = (int) date('Y', strtotime($start_date));
|
|
|
|
$endYear = (int)date('Y', strtotime($end_date));
|
|
|
|
$endYear = (int) date('Y', strtotime($end_date));
|
|
|
|
// 生成所有年份的数组
|
|
|
|
// 生成所有年份的数组
|
|
|
|
for ($year = $startYear; $year <= $endYear; $year++) {
|
|
|
|
for ($year = $startYear; $year <= $endYear; $year++) {
|
|
|
|
$years[] = $year;
|
|
|
|
$years[] = $year;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
// 如果没有提供日期,使用当前年份
|
|
|
|
// 如果没有提供日期,使用当前年份
|
|
|
|
$years[] = (int)date('Y');
|
|
|
|
$years[] = (int) date('Y');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 获取这些公司中标记为被投的公司
|
|
|
|
// 获取这些公司中标记为被投的公司
|
|
|
|
@ -320,7 +320,7 @@ class CourseSign extends SoftDeletesModel
|
|
|
|
foreach ($projectUsers as $item) {
|
|
|
|
foreach ($projectUsers as $item) {
|
|
|
|
$investDate = $item['investDate'] ?? null;
|
|
|
|
$investDate = $item['investDate'] ?? null;
|
|
|
|
if ($investDate) {
|
|
|
|
if ($investDate) {
|
|
|
|
$investYear = (int)date('Y', strtotime($investDate));
|
|
|
|
$investYear = (int) date('Y', strtotime($investDate));
|
|
|
|
if (in_array($investYear, $years)) {
|
|
|
|
if (in_array($investYear, $years)) {
|
|
|
|
$hasInvestInYears = true;
|
|
|
|
$hasInvestInYears = true;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
@ -468,30 +468,47 @@ class CourseSign extends SoftDeletesModel
|
|
|
|
public static function companyInvestedAfterEnrollment($start_date, $end_date, $course_ids = null, $retList = false)
|
|
|
|
public static function companyInvestedAfterEnrollment($start_date, $end_date, $course_ids = null, $retList = false)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$courseSignsQuery = self::getStudentList($start_date, $end_date, 1, $course_ids);
|
|
|
|
$courseSignsQuery = self::getStudentList($start_date, $end_date, 1, $course_ids);
|
|
|
|
$courseSignsForInvest = $courseSignsQuery->with('user.company')->get();
|
|
|
|
$courseSignsForInvest = $courseSignsQuery->with(['user.company', 'course'])->get();
|
|
|
|
$companiesAfterEnrollment = [];
|
|
|
|
$companiesAfterEnrollment = [];
|
|
|
|
foreach ($courseSignsForInvest as $sign) {
|
|
|
|
foreach ($courseSignsForInvest as $sign) {
|
|
|
|
if ($sign->user && $sign->user->company && $sign->user->company->is_yh_invested == 1) {
|
|
|
|
if ($sign->user && $sign->user->company && $sign->user->company->is_yh_invested == 1) {
|
|
|
|
$signDate = \Carbon\Carbon::parse($sign->created_at)->format('Y-m-d');
|
|
|
|
// 使用课程开课时间作为入学时间
|
|
|
|
// 从 project_users 中获取最早的被投时间
|
|
|
|
$enrollmentDate = null;
|
|
|
|
|
|
|
|
if ($sign->course && $sign->course->start_date) {
|
|
|
|
|
|
|
|
$enrollmentDate = \Carbon\Carbon::parse($sign->course->start_date)->format('Y-m-d');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 如果没有开课时间,跳过这条记录
|
|
|
|
|
|
|
|
if (!$enrollmentDate) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 从 project_users 中检查是否有任何一个被投时间 >= 课程开课时间
|
|
|
|
$projectUsers = $sign->user->company->project_users;
|
|
|
|
$projectUsers = $sign->user->company->project_users;
|
|
|
|
|
|
|
|
$hasInvestAfterEnrollment = false;
|
|
|
|
$investDate = null;
|
|
|
|
$investDate = null;
|
|
|
|
if (!empty($projectUsers) && is_array($projectUsers)) {
|
|
|
|
if (!empty($projectUsers) && is_array($projectUsers)) {
|
|
|
|
foreach ($projectUsers as $projectUser) {
|
|
|
|
foreach ($projectUsers as $projectUser) {
|
|
|
|
if (!empty($projectUser['investDate'])) {
|
|
|
|
if (!empty($projectUser['investDate'])) {
|
|
|
|
if ($investDate === null || $projectUser['investDate'] < $investDate) {
|
|
|
|
$currentInvestDate = $projectUser['investDate'];
|
|
|
|
$investDate = $projectUser['investDate'];
|
|
|
|
// 只要有一个被投时间 >= 课程开课时间,就满足条件
|
|
|
|
|
|
|
|
if ($currentInvestDate >= $enrollmentDate) {
|
|
|
|
|
|
|
|
$hasInvestAfterEnrollment = true;
|
|
|
|
|
|
|
|
// 记录满足条件的被投时间(如果有多个,记录最早的)
|
|
|
|
|
|
|
|
if ($investDate === null || $currentInvestDate < $investDate) {
|
|
|
|
|
|
|
|
$investDate = $currentInvestDate;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 被投时间 >= 报名时间,说明是入学后被投
|
|
|
|
// 只要有一个被投时间 >= 课程开课时间,说明是入学后被投
|
|
|
|
if ($investDate && $investDate >= $signDate) {
|
|
|
|
if ($hasInvestAfterEnrollment && $investDate) {
|
|
|
|
$companyId = $sign->user->company->id;
|
|
|
|
$companyId = $sign->user->company->id;
|
|
|
|
if (!isset($companiesAfterEnrollment[$companyId])) {
|
|
|
|
if (!isset($companiesAfterEnrollment[$companyId])) {
|
|
|
|
$companiesAfterEnrollment[$companyId] = [
|
|
|
|
$companiesAfterEnrollment[$companyId] = [
|
|
|
|
'company' => $sign->user->company,
|
|
|
|
'company' => $sign->user->company,
|
|
|
|
'first_sign_date' => $signDate,
|
|
|
|
'first_sign_date' => $enrollmentDate,
|
|
|
|
'invest_date' => $investDate,
|
|
|
|
'invest_date' => $investDate,
|
|
|
|
'users' => [],
|
|
|
|
'users' => [],
|
|
|
|
];
|
|
|
|
];
|
|
|
|
|