Compare commits

..

7 Commits

@ -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' => [],
]; ];

Loading…
Cancel
Save