diff --git a/app/Http/Controllers/Admin/EmployeeParticipationController.php b/app/Http/Controllers/Admin/EmployeeParticipationController.php index 5630223..308324e 100644 --- a/app/Http/Controllers/Admin/EmployeeParticipationController.php +++ b/app/Http/Controllers/Admin/EmployeeParticipationController.php @@ -157,6 +157,7 @@ class EmployeeParticipationController extends BaseController * @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string", format="date"), required=false, description="结束日期"), * @OA\Parameter(name="total", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="数量"), * @OA\Parameter(name="course_type_id", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="课程类型ID"), + * @OA\Parameter(name="course_id", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="课程ID"), * @OA\Parameter(name="course_name", in="query", @OA\Schema(type="string", nullable=true), description="课程名称"), * @OA\Parameter(name="company_name", in="query", @OA\Schema(type="string", nullable=true), description="公司名字"), * @OA\Parameter(name="name", in="query", @OA\Schema(type="string", nullable=true), description="姓名"), @@ -251,6 +252,7 @@ class EmployeeParticipationController extends BaseController '结束日期' => 'end_date', '数量' => 'total', '课程类型ID' => 'course_type_id', + '课程ID' => 'course_id', '课程名称' => 'course_name', '公司名字' => 'company_name', '姓名' => 'name', diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index 7836291..9041e70 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -416,7 +416,16 @@ class CourseSign extends SoftDeletesModel if ($retList) { return User::with('company')->whereIn('id', $courseSigns->pluck('user_id'))->get(); } else { - return User::whereIn('id', $courseSigns->pluck('user_id'))->count(); + $baseCount = User::whereIn('id', $courseSigns->pluck('user_id'))->count(); + // 额外数据:从 TraineeStudent 模型中统计 + $traineeStudentTotal = TraineeStudent::where(function ($query) use ($start_date, $end_date) { + // 开始结束日期的筛选。or查询 + if ($start_date && $end_date) { + $query->whereBetween('start_date', [$start_date, $end_date]) + ->orWhereBetween('end_date', [$start_date, $end_date]); + } + })->sum('total'); + return $baseCount + $traineeStudentTotal; } } @@ -601,30 +610,37 @@ class CourseSign extends SoftDeletesModel $courseSignsQuery = self::getStudentList($start_date, $end_date, null, $course_ids); $courseSignByType = $courseSignsQuery->get(); - // 检测关键词 - $companyNameKeyword = [ - '元禾控股', - '元禾原点', - '元禾厚望', - '元禾重元', - '元禾璞华', - '元禾谷风', - '元禾绿柳', - '元禾辰坤', - '元禾沙湖', - '禾裕集团', - '苏州科服', - '信诚管理咨询', - '集成电路公司', - '常州团队', - '国器元禾' - ]; - $list = User::whereIn('id', $courseSignByType->pluck('user_id')) - ->where(function ($query) use ($companyNameKeyword) { - foreach ($companyNameKeyword as $item) { - $query->orWhere('company_name', 'like', '%' . $item . '%'); + // 从 config 表中获取公司名称关键词 + $companyNameKeyword = []; + $configValue = Config::getValueByKey('yuanhe_company'); + if ($configValue) { + $configData = json_decode($configValue, true); + if (is_array($configData)) { + foreach ($configData as $item) { + // 提取 company_name 和 short_company_name,过滤空值 + if (!empty($item['company_name'])) { + $companyNameKeyword[] = $item['company_name']; + } + if (!empty($item['short_company_name'])) { + $companyNameKeyword[] = $item['short_company_name']; + } } - })->get(); + // 去重关键词并重新索引 + $companyNameKeyword = array_values(array_unique($companyNameKeyword)); + } + } + + // 如果 config 中没有数据,使用空数组(避免 SQL 错误) + if (empty($companyNameKeyword)) { + $list = collect([]); + } else { + $list = User::whereIn('id', $courseSignByType->pluck('user_id')) + ->where(function ($query) use ($companyNameKeyword) { + foreach ($companyNameKeyword as $item) { + $query->orWhere('company_name', 'like', '%' . $item . '%'); + } + })->get(); + } if ($retList) { // 返回列表 diff --git a/database/migrations/2026_01_17_133320_add_course_id_to_employee_participations_table.php b/database/migrations/2026_01_17_133320_add_course_id_to_employee_participations_table.php new file mode 100644 index 0000000..fa978df --- /dev/null +++ b/database/migrations/2026_01_17_133320_add_course_id_to_employee_participations_table.php @@ -0,0 +1,31 @@ +integer('course_id')->nullable()->comment('课程ID')->after('course_type_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('employee_participations', function (Blueprint $table) { + $table->dropColumn('course_id'); + }); + } +};