diff --git a/app/Http/Controllers/Admin/CourseContentCheckController.php b/app/Http/Controllers/Admin/CourseContentCheckController.php index 3f2b0cf..a3a290d 100644 --- a/app/Http/Controllers/Admin/CourseContentCheckController.php +++ b/app/Http/Controllers/Admin/CourseContentCheckController.php @@ -51,6 +51,9 @@ class CourseContentCheckController extends BaseController * @OA\Parameter(name="sort_type", in="query", @OA\Schema(type="string"), required=false, description="排序类型"), * @OA\Parameter(name="course_id", in="query", @OA\Schema(type="string"), required=false, description="course_id"), * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="string"), required=false, description="course_content_id"), + * @OA\Parameter(name="has_check", in="query", @OA\Schema(type="string"), required=false, description="是否签到0否1是"), + * @OA\Parameter(name="name", in="query", @OA\Schema(type="string"), required=false, description="name"), + * @OA\Parameter(name="mobile", in="query", @OA\Schema(type="string"), required=false, description="mobile"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", @@ -61,14 +64,34 @@ class CourseContentCheckController extends BaseController public function index() { $all = request()->all(); - $list = CourseSign::with(['course.typeDetail', 'user', 'courseContentCheck' => function ($query) use ($all) { + // 签到用户 + $courseContentCheck = CourseContentCheck::where(function ($query) use ($all) { + if (isset($all['course_id'])) { + $query->where('course_id', $all['course_id']); + } if (isset($all['course_content_id'])) { $query->where('course_content_id', $all['course_content_id']); } - }])->where(function ($query) use ($all) { + })->get(); + + $list = CourseSign::with(['course.typeDetail', 'user'])->whereHas('user', function ($query) use ($all) { + if (isset($all['name'])) { + $query->where('name', 'like', '%' . $all['name'] . '%'); + } + if (isset($all['mobile'])) { + $query->where('mobile', 'like', '%' . $all['mobile'] . '%'); + } + })->where(function ($query) use ($all, $courseContentCheck) { if (isset($all['course_id'])) { $query->where('course_id', $all['course_id']); } + if (isset($all['has_check'])) { + if ($all['has_check'] == 1) { + $query->whereIn('user_id', $courseContentCheck->pluck('user_id')); + } else { + $query->whereNotIn('user_id', $courseContentCheck->pluck('user_id')); + } + } if (isset($all['filter']) && !empty($all['filter'])) { foreach ($all['filter'] as $condition) { $key = $condition['key'] ?? null; @@ -107,10 +130,40 @@ class CourseContentCheckController extends BaseController ->orderBy('created_at', 'desc'); if (isset($all['is_export']) && !empty($all['is_export'])) { $list = $list->limit(5000)->get()->toArray(); + foreach ($list as &$item) { + $courseContentCheck = CourseContentCheck::where('user_id', $item['user_id']) + ->where(function ($query) use ($all) { + if (isset($all['course_content_id'])) { + $query->where('course_content_id', $all['course_content_id']); + } + if (isset($all['course_id'])) { + $query->where('course_id', $all['course_id']); + } + })->first(); + // 是否存在courseContentCheck + $item['course_content_check_created_at'] = ''; + if ($courseContentCheck) { + $item['course_content_check_text'] = '已签到'; + $item['course_content_check_created_at'] = $courseContentCheck->created_at; + } else { + $item['course_content_check_text'] = '未签到'; + } + } return Excel::download(new CommonExport($list, $all['export_fields'] ?? ''), $all['file_name'] ?? '' . date('YmdHis') . '.xlsx'); } else { // 输出 $list = $list->paginate($all['page_size'] ?? 20); + foreach ($list as $item) { + $item->course_content_check = CourseContentCheck::where('user_id', $item->user_id) + ->where(function ($query) use ($all) { + if (isset($all['course_content_id'])) { + $query->where('course_content_id', $all['course_content_id']); + } + if (isset($all['course_id'])) { + $query->where('course_id', $all['course_id']); + } + })->first(); + } } return $this->success($list); } diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index cd8b363..31929ae 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -42,13 +42,15 @@ class CourseSign extends SoftDeletesModel public function getFilesAttribute($value) { - if (empty($this->file_ids)) return []; + if (empty($this->file_ids)) + return []; return Upload::whereIn('id', $this->file_ids)->get(); } public function getFeeFilesAttribute($value) { - if (empty($this->fee_file_ids)) return []; + if (empty($this->fee_file_ids)) + return []; return Upload::whereIn('id', $this->fee_file_ids)->get(); } @@ -57,11 +59,6 @@ class CourseSign extends SoftDeletesModel return $this->hasOne(Course::class, 'id', 'course_id'); } - public function courseContentCheck() - { - return $this->hasOne(CourseContentCheck::class, 'course_id', 'course_id'); - } - public function user() { return $this->hasOne(User::class, 'id', 'user_id');