From 93676a6f67e512090db85e5973dbcc6d3e0799e4 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 28 Nov 2025 15:58:14 +0800 Subject: [PATCH] update --- app/Models/CourseSign.php | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index 9243479..c2afe05 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -482,15 +482,39 @@ class CourseSign extends SoftDeletesModel public static function rencai($start_date = null, $end_date = null, $course_ids = null, $retList = false) { $courseSignsQuery = self::getStudentList($start_date, $end_date, 1, $course_ids); - $courseSigns = $courseSignsQuery->whereHas('course', function ($query) { + + // 条件1:人才培训课程类型的用户 + $courseSigns1 = $courseSignsQuery->whereHas('course', function ($query) { $query->whereHas('typeDetail', function ($q) { $q->where('name', '人才培训'); }); })->get(); + + // 条件2:data 字段中 name="个人荣誉" 且 value != "其他" 的用户 + $courseSigns2 = $courseSignsQuery->get()->filter(function ($courseSign) { + if (empty($courseSign->data) || !is_array($courseSign->data)) { + return false; + } + foreach ($courseSign->data as $item) { + if (isset($item['name']) && $item['name'] === '个人荣誉') { + if (isset($item['value']) && $item['value'] !== '其他') { + return true; + } + } + } + return false; + }); + + // 合并两个条件的结果(或关系),并去重 user_id + $allUserIds = $courseSigns1->pluck('user_id') + ->merge($courseSigns2->pluck('user_id')) + ->unique() + ->filter(); + if ($retList) { - return User::whereIn('id', $courseSigns->pluck('user_id'))->get(); + return User::whereIn('id', $allUserIds)->get(); } else { - return User::whereIn('id', $courseSigns->pluck('user_id'))->count(); + return $allUserIds->count(); } }