master
cody 3 months ago
parent c44ac9901c
commit a21f87955e

@ -299,15 +299,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');
} }
// 获取这些公司中标记为被投的公司 // 获取这些公司中标记为被投的公司
@ -323,7 +323,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;
@ -431,18 +431,30 @@ class CourseSign extends SoftDeletesModel
public static function companyMarketAfterEnrollment($start_date, $end_date, $course_ids = null, $retList = false) public static function companyMarketAfterEnrollment($start_date, $end_date, $course_ids = null, $retList = false)
{ {
$courseSignsQuery = self::getStudentList($start_date, $end_date, null, $course_ids); $courseSignsQuery = self::getStudentList($start_date, $end_date, null, $course_ids);
$courseSignsForStock = $courseSignsQuery->with('user.company')->get(); $courseSignsForStock = $courseSignsQuery->with(['user.company', 'course'])->get();
$companiesAfterEnrollment = []; $companiesAfterEnrollment = [];
foreach ($courseSignsForStock as $sign) { foreach ($courseSignsForStock as $sign) {
if ($sign->user && $sign->user->company && $sign->user->company->company_market == 1) { if ($sign->user && $sign->user->company && $sign->user->company->company_market == 1) {
$signDate = \Carbon\Carbon::parse($sign->created_at)->format('Y-m-d'); // 入学时间使用参与课程的课程开始时间course->start_date不使用报名时间created_at
$enrollmentDate = null;
if ($sign->course && $sign->course->start_date) {
$enrollmentDate = \Carbon\Carbon::parse($sign->course->start_date)->format('Y-m-d');
}
// 如果没有课程开始时间,跳过这条记录
if (!$enrollmentDate) {
continue;
}
$stockDate = $sign->user->company->stock_date; $stockDate = $sign->user->company->stock_date;
if ($stockDate && $stockDate >= $signDate) { // 上市时间 >= 课程开始时间(入学时间),说明是入学后上市
if ($stockDate && $stockDate >= $enrollmentDate) {
$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_enrollment_date' => $enrollmentDate, // 首次入学时间(课程开始时间)
'stock_date' => $stockDate,
'users' => [], 'users' => [],
]; ];
} }
@ -475,18 +487,18 @@ class CourseSign extends SoftDeletesModel
$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) {
// 使用课程开课时间作为入学时间 // 入学时间使用参与课程的课程开始时间course->start_date不使用报名时间created_at
$enrollmentDate = null; $enrollmentDate = null;
if ($sign->course && $sign->course->start_date) { if ($sign->course && $sign->course->start_date) {
$enrollmentDate = \Carbon\Carbon::parse($sign->course->start_date)->format('Y-m-d'); $enrollmentDate = \Carbon\Carbon::parse($sign->course->start_date)->format('Y-m-d');
} }
// 如果没有课时间,跳过这条记录 // 如果没有课程开始时间,跳过这条记录
if (!$enrollmentDate) { if (!$enrollmentDate) {
continue; continue;
} }
// 从 project_users 中检查是否有任何一个被投时间 >= 课程开课时间 // 从 project_users 中检查是否有任何一个被投时间 >= 课程开始时间(入学时间)
$projectUsers = $sign->user->company->project_users; $projectUsers = $sign->user->company->project_users;
$hasInvestAfterEnrollment = false; $hasInvestAfterEnrollment = false;
$investDate = null; $investDate = null;
@ -494,7 +506,7 @@ class CourseSign extends SoftDeletesModel
foreach ($projectUsers as $projectUser) { foreach ($projectUsers as $projectUser) {
if (!empty($projectUser['investDate'])) { if (!empty($projectUser['investDate'])) {
$currentInvestDate = $projectUser['investDate']; $currentInvestDate = $projectUser['investDate'];
// 只要有一个被投时间 >= 课程开课时间,就满足条件 // 只要有一个被投时间 >= 课程开始时间(入学时间),就满足条件
if ($currentInvestDate >= $enrollmentDate) { if ($currentInvestDate >= $enrollmentDate) {
$hasInvestAfterEnrollment = true; $hasInvestAfterEnrollment = true;
// 记录满足条件的被投时间(如果有多个,记录最早的) // 记录满足条件的被投时间(如果有多个,记录最早的)
@ -505,13 +517,13 @@ class CourseSign extends SoftDeletesModel
} }
} }
} }
// 只要有一个被投时间 >= 课程开课时间,说明是入学后被投 // 只要有一个被投时间 >= 课程开始时间(入学时间),说明是入学后被投
if ($hasInvestAfterEnrollment && $investDate) { 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' => $enrollmentDate, 'first_enrollment_date' => $enrollmentDate, // 首次入学时间(课程开始时间)
'invest_date' => $investDate, 'invest_date' => $investDate,
'users' => [], 'users' => [],
]; ];

Loading…
Cancel
Save