diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index c2fe834..50ad16a 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -299,15 +299,15 @@ class CourseSign extends SoftDeletesModel $years = []; if ($start_date && $end_date) { // 从开始和结束日期中提取年份范围 - $startYear = (int)date('Y', strtotime($start_date)); - $endYear = (int)date('Y', strtotime($end_date)); + $startYear = (int) date('Y', strtotime($start_date)); + $endYear = (int) date('Y', strtotime($end_date)); // 生成所有年份的数组 for ($year = $startYear; $year <= $endYear; $year++) { $years[] = $year; } } else { // 如果没有提供日期,使用当前年份 - $years[] = (int)date('Y'); + $years[] = (int) date('Y'); } // 获取这些公司中标记为被投的公司 @@ -323,7 +323,7 @@ class CourseSign extends SoftDeletesModel foreach ($projectUsers as $item) { $investDate = $item['investDate'] ?? null; if ($investDate) { - $investYear = (int)date('Y', strtotime($investDate)); + $investYear = (int) date('Y', strtotime($investDate)); if (in_array($investYear, $years)) { $hasInvestInYears = true; break; @@ -431,18 +431,30 @@ class CourseSign extends SoftDeletesModel public static function companyMarketAfterEnrollment($start_date, $end_date, $course_ids = null, $retList = false) { $courseSignsQuery = self::getStudentList($start_date, $end_date, null, $course_ids); - $courseSignsForStock = $courseSignsQuery->with('user.company')->get(); + $courseSignsForStock = $courseSignsQuery->with(['user.company', 'course'])->get(); $companiesAfterEnrollment = []; foreach ($courseSignsForStock as $sign) { 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; - if ($stockDate && $stockDate >= $signDate) { + // 上市时间 >= 课程开始时间(入学时间),说明是入学后上市 + if ($stockDate && $stockDate >= $enrollmentDate) { $companyId = $sign->user->company->id; if (!isset($companiesAfterEnrollment[$companyId])) { $companiesAfterEnrollment[$companyId] = [ 'company' => $sign->user->company, - 'first_sign_date' => $signDate, + 'first_enrollment_date' => $enrollmentDate, // 首次入学时间(课程开始时间) + 'stock_date' => $stockDate, 'users' => [], ]; } @@ -475,18 +487,18 @@ class CourseSign extends SoftDeletesModel $companiesAfterEnrollment = []; foreach ($courseSignsForInvest as $sign) { if ($sign->user && $sign->user->company && $sign->user->company->is_yh_invested == 1) { - // 使用课程开课时间作为入学时间 + // 入学时间:使用参与课程的课程开始时间(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; } - // 从 project_users 中检查是否有任何一个被投时间 >= 课程开课时间 + // 从 project_users 中检查是否有任何一个被投时间 >= 课程开始时间(入学时间) $projectUsers = $sign->user->company->project_users; $hasInvestAfterEnrollment = false; $investDate = null; @@ -494,7 +506,7 @@ class CourseSign extends SoftDeletesModel foreach ($projectUsers as $projectUser) { if (!empty($projectUser['investDate'])) { $currentInvestDate = $projectUser['investDate']; - // 只要有一个被投时间 >= 课程开课时间,就满足条件 + // 只要有一个被投时间 >= 课程开始时间(入学时间),就满足条件 if ($currentInvestDate >= $enrollmentDate) { $hasInvestAfterEnrollment = true; // 记录满足条件的被投时间(如果有多个,记录最早的) @@ -505,13 +517,13 @@ class CourseSign extends SoftDeletesModel } } } - // 只要有一个被投时间 >= 课程开课时间,说明是入学后被投 + // 只要有一个被投时间 >= 课程开始时间(入学时间),说明是入学后被投 if ($hasInvestAfterEnrollment && $investDate) { $companyId = $sign->user->company->id; if (!isset($companiesAfterEnrollment[$companyId])) { $companiesAfterEnrollment[$companyId] = [ 'company' => $sign->user->company, - 'first_sign_date' => $enrollmentDate, + 'first_enrollment_date' => $enrollmentDate, // 首次入学时间(课程开始时间) 'invest_date' => $investDate, 'users' => [], ];