From 5f711732290e702a7d0c228ea045e2a43c11dfbd Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 15 Jan 2026 14:19:01 +0800 Subject: [PATCH] update --- .../Controllers/Admin/OtherController.php | 103 ++++++++++-------- 1 file changed, 59 insertions(+), 44 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 2b62ec5..77b577c 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -449,63 +449,78 @@ class OtherController extends CommonController switch ($export_type) { case 'course_signs_invested': // 被投企业明细 - 使用与coursesHome相同的算法 - $companies = CourseSign::yhInvestedTotal(CourseType::START_DATE, $end_date, $course_ids, true); + // 确保 $course_ids 是数组格式 + $courseIdsArray = $course_ids ? (is_array($course_ids) ? $course_ids : $course_ids->toArray()) : null; + $companies = CourseSign::yhInvestedTotal(CourseType::START_DATE, $end_date, $courseIdsArray, true); foreach ($companies as $company) { // 获取该公司的学员信息 // 使用与yhInvestedTotal相同的筛选逻辑:status=1,筛选course_ids和日期范围 - $userIds = $company->users()->pluck('id'); - $userCourseSigns = CourseSign::getStudentList(CourseType::START_DATE, $end_date, 1, $course_ids) - ->whereIn('user_id', $userIds) - ->with(['user', 'course.typeDetail']) - ->get(); + // 直接通过公司ID查询学员 + $userIds = User::where('company_id', $company->id)->pluck('id')->toArray(); + + if (empty($userIds)) { + // 如果没有学员,设置空值 + $userNamesStr = ''; + $courseNamesStr = ''; + $courseTypesStr = ''; + $totalCourseCount = 0; + } else { + $userCourseSigns = CourseSign::getStudentList(CourseType::START_DATE, $end_date, 1, $courseIdsArray) + ->whereIn('user_id', $userIds) + ->with(['user', 'course.typeDetail']) + ->get(); - // 按学员分组 - $usersData = []; - foreach ($userCourseSigns as $sign) { - $userId = $sign->user_id; - if (!isset($usersData[$userId])) { - $usersData[$userId] = [ - 'user' => $sign->user, - 'courseSigns' => [], - ]; + // 按学员分组 + $usersData = []; + foreach ($userCourseSigns as $sign) { + if (!$sign->user) { + continue; + } + $userId = $sign->user_id; + if (!isset($usersData[$userId])) { + $usersData[$userId] = [ + 'user' => $sign->user, + 'courseSigns' => [], + ]; + } + $usersData[$userId]['courseSigns'][] = $sign; } - $usersData[$userId]['courseSigns'][] = $sign; - } - // 收集所有学员的姓名、课程名称、课程体系 - $userNames = []; - $allCourseNames = []; - $allCourseTypes = []; - $totalCourseCount = 0; + // 收集所有学员的姓名、课程名称、课程体系 + $userNames = []; + $allCourseNames = []; + $allCourseTypes = []; + $totalCourseCount = 0; - foreach ($usersData as $userData) { - $user = $userData['user']; - $courseSigns = collect($userData['courseSigns']); + foreach ($usersData as $userData) { + $user = $userData['user']; + $courseSigns = collect($userData['courseSigns']); - if ($courseSigns->isNotEmpty()) { - $userNames[] = $user->name ?? ''; + if ($courseSigns->isNotEmpty()) { + $userNames[] = $user->name ?? ''; - // 收集课程名称 - $courseNames = $courseSigns->pluck('course.name')->filter()->unique()->values()->toArray(); - $allCourseNames = array_merge($allCourseNames, $courseNames); + // 收集课程名称 + $courseNames = $courseSigns->pluck('course.name')->filter()->unique()->values()->toArray(); + $allCourseNames = array_merge($allCourseNames, $courseNames); - // 收集课程体系 - $courseTypes = $courseSigns->pluck('course.typeDetail.name') - ->filter() - ->unique() - ->values() - ->toArray(); - $allCourseTypes = array_merge($allCourseTypes, $courseTypes); + // 收集课程体系 + $courseTypes = $courseSigns->pluck('course.typeDetail.name') + ->filter() + ->unique() + ->values() + ->toArray(); + $allCourseTypes = array_merge($allCourseTypes, $courseTypes); - // 累计报名课程数 - $totalCourseCount += $courseSigns->count(); + // 累计报名课程数 + $totalCourseCount += $courseSigns->count(); + } } - } - // 去重并合并 - $userNamesStr = implode('、', array_filter(array_unique($userNames))); - $courseNamesStr = implode('、', array_filter(array_unique($allCourseNames))); - $courseTypesStr = implode('、', array_filter(array_unique($allCourseTypes))); + // 去重并合并 + $userNamesStr = implode('、', array_filter(array_unique($userNames))); + $courseNamesStr = implode('、', array_filter(array_unique($allCourseNames))); + $courseTypesStr = implode('、', array_filter(array_unique($allCourseTypes))); + } $data[] = [ 'company_name' => $company->company_name,