diff --git a/app/Console/Commands/UpdateUserFromCourseSign.php b/app/Console/Commands/UpdateUserFromCourseSign.php index 8be62f8..3d088c1 100644 --- a/app/Console/Commands/UpdateUserFromCourseSign.php +++ b/app/Console/Commands/UpdateUserFromCourseSign.php @@ -297,8 +297,9 @@ class UpdateUserFromCourseSign extends Command { $user_id = $user->id; - // 获取该用户的所有报名记录 - $courseSigns = CourseSign::where('user_id', $user_id) + // 获取该用户的所有报名记录(携带课程及课程类型) + $courseSigns = CourseSign::with('course.typeDetail') + ->where('user_id', $user_id) ->whereNotNull('data') ->get(); @@ -309,11 +310,25 @@ class UpdateUserFromCourseSign extends Command $this->info("找到 {$courseSigns->count()} 条报名记录"); + // 如果用户报名了多个课程,并且其中包含课程类型是「高研班」或者「攀峰班」的课程 + // 则优先使用这些课程的报名信息更新用户 + $targetCourseSigns = $courseSigns; + if ($courseSigns->count() > 1) { + $specialCourseSigns = $courseSigns->filter(function ($sign) { + $typeName = $sign->course->typeDetail->name ?? ''; + return in_array($typeName, ['高研班', '攀峰班']); + }); + if ($specialCourseSigns->isNotEmpty()) { + $this->info('检测到高研班/攀峰班课程报名记录,将优先使用这些课程的报名信息更新用户'); + $targetCourseSigns = $specialCourseSigns; + } + } + // 收集所有需要更新的用户字段 $userData = []; $hasCompanyName = false; - foreach ($courseSigns as $courseSign) { + foreach ($targetCourseSigns as $courseSign) { if (empty($courseSign->data) || !is_array($courseSign->data)) { continue; }