lion 2 months ago
commit 7941e4f43c

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

@ -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');

Loading…
Cancel
Save