From 33da6e79e21f51bb4392f9b50ea6fe2ee7044bc8 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Sat, 17 Jan 2026 17:04:25 +0800 Subject: [PATCH] update --- .../Controllers/Admin/CompanyController.php | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Admin/CompanyController.php b/app/Http/Controllers/Admin/CompanyController.php index 3738eb6..8ee3b8b 100644 --- a/app/Http/Controllers/Admin/CompanyController.php +++ b/app/Http/Controllers/Admin/CompanyController.php @@ -111,10 +111,12 @@ class CompanyController extends BaseController * @OA\Parameter(name="end_year", in="query", @OA\Schema(type="string"), required=false, description="结束年份"), * @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=true, description="课程体系id"), - * @OA\Parameter(name="course_name", in="query", @OA\Schema(type="string"), required=true, description="课程名称"), - * @OA\Parameter(name="user_name", in="query", @OA\Schema(type="string"), required=true, description="学员名称"), - * @OA\Parameter(name="is_schoolmate", in="query", @OA\Schema(type="string"), required=true, description="是否校友0否1是"), + * @OA\Parameter(name="course_type_id", in="query", @OA\Schema(type="string"), required=false, description="课程体系id"), + * @OA\Parameter(name="course_name", in="query", @OA\Schema(type="string"), required=false, description="课程名称"), + * @OA\Parameter(name="user_name", in="query", @OA\Schema(type="string"), required=false, description="学员名称"), + * @OA\Parameter(name="is_schoolmate", in="query", @OA\Schema(type="string"), required=false, description="是否校友0否1是"), + * @OA\Parameter(name="course_start_date", in="query", @OA\Schema(type="string"), required=false, description="课程开始日期(筛选课程起止时间在范围内的企业)"), + * @OA\Parameter(name="course_end_date", in="query", @OA\Schema(type="string"), required=false, description="课程结束日期(筛选课程起止时间在范围内的企业)"), * @OA\Response( * response="200", * description="暂无" @@ -134,20 +136,41 @@ class CompanyController extends BaseController })->with('courseSigns.course'); } ])->whereHas('users', function ($query) use ($all) { - if (isset($all['course_type_id'])) { + if (isset($all['course_type_id']) && !empty($all['course_type_id'])) { $query->whereHas('courses', function ($q) use ($all) { $q->where('type', $all['course_type_id']); }); } - if (isset($all['course_name'])) { + if (isset($all['course_name']) && !empty($all['course_name'])) { $query->whereHas('courses', function ($q) use ($all) { $q->where('name', 'like', '%' . $all['course_name'] . '%'); }); } - if (isset($all['user_name'])) { + // 课程起止时间筛选 + if ((isset($all['course_start_date']) && !empty($all['course_start_date'])) || + (isset($all['course_end_date']) && !empty($all['course_end_date']))) { + $query->whereHas('courses', function ($q) use ($all) { + $course_start_date = $all['course_start_date'] ?? null; + $course_end_date = $all['course_end_date'] ?? null; + if ($course_start_date && $course_end_date) { + // 课程开始时间或结束时间在指定时间范围内 + $q->where(function ($subQuery) use ($course_start_date, $course_end_date) { + $subQuery->whereBetween('start_date', [$course_start_date, $course_end_date]) + ->orWhereBetween('end_date', [$course_start_date, $course_end_date]); + }); + } elseif ($course_start_date) { + // 只指定开始日期,筛选课程结束时间 >= 开始日期 + $q->where('end_date', '>=', $course_start_date); + } elseif ($course_end_date) { + // 只指定结束日期,筛选课程开始时间 <= 结束日期 + $q->where('start_date', '<=', $course_end_date); + } + }); + } + if (isset($all['user_name']) && !empty($all['user_name'])) { $query->where('username', 'like', '%' . $all['user_name'] . '%'); } - if (isset($all['is_schoolmate'])) { + if (isset($all['is_schoolmate']) && $all['is_schoolmate'] !== '') { $query->where('is_schoolmate', $all['is_schoolmate']); } })->where(function ($query) use ($all, $start_year, $end_year) {