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(); } }