From 82c0c886577c1f2a595a553ec04ea3c63b2b564e Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 21 Nov 2025 17:42:27 +0800 Subject: [PATCH 1/5] update --- .../Controllers/Admin/OtherController.php | 89 ++++++++++++++----- app/Models/CourseSign.php | 2 +- 2 files changed, 66 insertions(+), 25 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index e001064..b6685f1 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -287,7 +287,7 @@ class OtherController extends CommonController * tags={"其他"}, * summary="课程统计明细导出", * description="导出课程统计数据的明细", - * @OA\Parameter(name="export_type", in="query", @OA\Schema(type="string"), required=true, description="导出类型:course_signs_invested-被投企业明细, course_signs_total-报名人数明细, course_signs_pass-审核通过人数明细, course_signs_pass_unique-审核通过人数去重明细, courseTypesSum-课程分类明细, areas-区域明细, company_market_total-上市公司明细, ganbu_total-跟班学员明细, company_market_year_total-今年上市公司明细, company_market_after_enrollment_total-入学后上市公司明细"), + * @OA\Parameter(name="export_type", in="query", @OA\Schema(type="string"), required=true, description="导出类型:course_signs_invested-被投企业明细, course_signs_total-报名人数明细, course_signs_pass-审核通过人数明细, course_signs_pass_unique-审核通过人数去重明细, courseTypesSum-课程分类明细, areas-区域明细, company_market_total-上市公司明细, ganbu_total-跟班学员明细, company_market_year_total-今年上市公司明细, company_market_after_enrollment_total-入学后上市公司明细, course_total-开课场次明细, course_day_total-开课天数明细"), * @OA\Parameter(name="start_date", in="query", @OA\Schema(type="string"), required=false, description="开始日期"), * @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string"), required=false, description="结束日期"), * @OA\Parameter(name="course_type_id", in="query", @OA\Schema(type="string"), required=false, description="课程体系id,多个英文逗号"), @@ -511,38 +511,21 @@ class OtherController extends CommonController case 'ganbu_total': // 跟班学员明细 - 使用模型方法 $users = CourseSign::ganbu($start_date, $end_date, $course_ids, true); - foreach ($users as $user) { - $userCourseSigns = CourseSign::where('user_id', $user->id) - ->whereDate('created_at', '>=', $start_date) - ->whereDate('created_at', '<=', $end_date) - ->where(function ($query) use ($course_ids) { - if ($course_ids->isNotEmpty()) { - $query->whereIn('course_id', $course_ids); - } - })->whereNotIn('status', [4, 5]) - ->with('course') - ->get(); - $courseNames = $userCourseSigns->pluck('course.name')->filter()->unique()->implode('、'); - $data[] = [ - 'user_name' => $user->name ?? '', + 'name' => $user->username ?? '', + 'sex' => $user->sex ?? '', 'mobile' => $user->mobile ?? '', 'company_name' => $user->company_name ?? '', - 'company_area' => $user->company_area ?? '', - 'company_industry' => $user->company_industry ?? '', - 'course_names' => $courseNames, - 'course_count' => $userCourseSigns->count(), + 'company_position' => $user->company_position ?? '', ]; } $fields = [ - 'user_name' => '学员姓名', + 'user_name' => '姓名', + 'sex' => '性别', 'mobile' => '手机号', 'company_name' => '企业名称', - 'company_area' => '所在区域', - 'company_industry' => '所属行业', - 'course_names' => '报名课程', - 'course_count' => '报名课程数', + 'company_position' => '职位', ]; $filename = '跟班学员明细'; break; @@ -604,6 +587,64 @@ class OtherController extends CommonController $filename = '入学后上市公司明细'; break; + case 'course_total': + // 开课场次明细 - 与coursesHome算法一致 + $calendars = Calendar::whereIn('course_id', $course_ids) + ->whereBetween('date', [$start_date, $end_date]) + ->with('course') + ->get(); + + foreach ($calendars as $calendar) { + $data[] = [ + 'course_name' => $calendar->course->name ?? '', + 'title' => $calendar->title ?? '', + 'date' => $calendar->date ?? '', + 'start_time' => $calendar->start_time, + 'end_time' => $calendar->end_time, + 'address' => $calendar->address ?? '', + ]; + } + $fields = [ + 'course_name' => '课程名称', + 'title' => '标题', + 'date' => '日期', + 'start_time' => '开始时间', + 'end_time' => '结束时间', + 'address' => '地址', + ]; + $filename = '开课场次明细'; + break; + + case 'course_day_total': + // 开课天数明细 - 与coursesHome算法一致 + $calendars = Calendar::whereIn('course_id', $course_ids) + ->whereBetween('date', [$start_date, $end_date]) + ->with('course') + ->get(); + + foreach ($calendars as $calendar) { + $data[] = [ + 'course_name' => $calendar->course->name ?? '', + 'title' => $calendar->title ?? '', + 'date' => $calendar->date ?? '', + 'start_time' => $calendar->start_time ? date('Y-m-d H:i:s', strtotime($calendar->start_time)) : '', + 'end_time' => $calendar->end_time ? date('Y-m-d H:i:s', strtotime($calendar->end_time)) : '', + 'days' => $calendar->days ?? 0, + 'address' => $calendar->address ?? '', + ]; + } + $fields = [ + 'course_name' => '课程名称', + 'title' => '标题', + 'date' => '日期', + 'start_time' => '开始时间', + 'end_time' => '结束时间', + 'days' => '天数', + 'address' => '地址', + ]; + $filename = '开课天数明细'; + break; + default: return $this->fail([ResponseCode::ERROR_PARAMETER, '不支持的导出类型']); } diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index b17b7a6..b865d02 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -186,7 +186,7 @@ class CourseSign extends SoftDeletesModel })->get(); if ($retList) { - return User::whereIn('id', $courseSignsForGanbu->pluck('user_id'))->get(); + return User::with('company')->whereIn('id', $courseSignsForGanbu->pluck('user_id'))->get(); } else { return User::whereIn('id', $courseSignsForGanbu->pluck('user_id'))->count(); } From d6a0bdf183751ec70511315fd587f46c296b0635 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 21 Nov 2025 17:45:51 +0800 Subject: [PATCH 2/5] update --- .../Controllers/Admin/OtherController.php | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index b6685f1..e079fb2 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -465,19 +465,28 @@ class OtherController extends CommonController break; case 'areas': - // 区域明细 - 与coursesHome中的areas逻辑保持一致 - $areas = ParameterDetail::where('parameter_id', 5)->get(); - foreach ($areas as $area) { + // 区域明细 - 导出course_signs_pass列表数据,附加区域信息 + $courseSigns = CourseSign::courseSignsTotal($start_date, $end_date, 1, $course_ids, null, true); + // 加载关联关系 + $courseSigns->load(['user', 'course']); + + foreach ($courseSigns as $sign) { $data[] = [ - 'area_name' => $area->value, - 'course_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, $course_ids, $area->value), - 'course_signs_pass_unique' => CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1, $course_ids, $area->value), + 'area_name' => $sign->user->company_area ?? '', + 'user_name' => $sign->user->name ?? '', + 'mobile' => $sign->user->mobile ?? '', + 'company_name' => $sign->user->company_name ?? '', + 'course_name' => $sign->course->name ?? '', + 'created_at' => $sign->created_at ? $sign->created_at->format('Y-m-d H:i:s') : '', ]; } $fields = [ 'area_name' => '区域名称', - 'course_signs_pass' => '培养人数', - 'course_signs_pass_unique' => '去重培养人数', + 'user_name' => '学员姓名', + 'mobile' => '手机号', + 'company_name' => '企业名称', + 'course_name' => '课程名称', + 'created_at' => '报名时间', ]; $filename = '区域明细'; break; From b5ce410b9048ed98ddab3727ff7c2255bc042de1 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 21 Nov 2025 17:49:40 +0800 Subject: [PATCH 3/5] update --- app/Http/Controllers/Admin/OtherController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index e079fb2..d6ddab5 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -679,7 +679,8 @@ class OtherController extends CommonController $course_type_id = request('course_type_id', ''); if ($course_type_id) { // 部分 - $course_type_id = explode(',', $course_type_id); + // $course_type_id = explode(',', $course_type_id); + $course_type_id = []; } else { // 全部 $course_type_id = CourseType::pluck('id')->toArray(); From 1b5324b3b7bf524d994bd01dedac22f506369f6f Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 21 Nov 2025 17:50:13 +0800 Subject: [PATCH 4/5] update --- app/Http/Controllers/Admin/OtherController.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index d6ddab5..e079fb2 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -679,8 +679,7 @@ class OtherController extends CommonController $course_type_id = request('course_type_id', ''); if ($course_type_id) { // 部分 - // $course_type_id = explode(',', $course_type_id); - $course_type_id = []; + $course_type_id = explode(',', $course_type_id); } else { // 全部 $course_type_id = CourseType::pluck('id')->toArray(); From aa800f54b4d719ae1d1d237eba9ca690e0b7acd1 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 21 Nov 2025 17:52:24 +0800 Subject: [PATCH 5/5] update --- app/Http/Controllers/Admin/OtherController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index e079fb2..83dbbf8 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -530,7 +530,7 @@ class OtherController extends CommonController ]; } $fields = [ - 'user_name' => '姓名', + 'name' => '姓名', 'sex' => '性别', 'mobile' => '手机号', 'company_name' => '企业名称',