From 7f736319c3e6d3d06c713518de2f19ede5c1797d Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Mon, 25 Aug 2025 17:35:49 +0800 Subject: [PATCH] update --- .../CourseContentEvaluationsController.php | 102 +++++++++--------- app/Models/CourseContentEvaluation.php | 16 +-- 2 files changed, 56 insertions(+), 62 deletions(-) diff --git a/app/Http/Controllers/Admin/CourseContentEvaluationsController.php b/app/Http/Controllers/Admin/CourseContentEvaluationsController.php index 52b0a67..ed997bf 100644 --- a/app/Http/Controllers/Admin/CourseContentEvaluationsController.php +++ b/app/Http/Controllers/Admin/CourseContentEvaluationsController.php @@ -53,60 +53,60 @@ class CourseContentEvaluationsController extends BaseController public function index() { $all = request()->all(); - $list = $this->model->with('course') - ->withCount('courseContentEvaluationAsks', 'courseContentEvaluationForms') + $list = $this->model->with('course','courseContent') + ->withCount('courseContentEvaluationAsks','courseContentEvaluationForms') ->where(function ($query) use ($all) { - if (isset($all['filter']) && !empty($all['filter'])) { - foreach ($all['filter'] as $condition) { - $key = $condition['key'] ?? null; - $op = $condition['op'] ?? null; - $value = $condition['value'] ?? null; - if (!isset($key) || !isset($op) || !isset($value)) { + if (isset($all['filter']) && !empty($all['filter'])) { + foreach ($all['filter'] as $condition) { + $key = $condition['key'] ?? null; + $op = $condition['op'] ?? null; + $value = $condition['value'] ?? null; + if (!isset($key) || !isset($op) || !isset($value)) { + continue; + } + // 等于 + if ($op == 'eq') { + $query->where($key, $value); + } + // 不等于 + if ($op == 'neq') { + $query->where($key, '!=', $value); + } + // 大于 + if ($op == 'gt') { + $query->where($key, '>', $value); + } + // 大于等于 + if ($op == 'egt') { + $query->where($key, '>=', $value); + } + // 小于 + if ($op == 'lt') { + $query->where($key, '<', $value); + } + // 小于等于 + if ($op == 'elt') { + $query->where($key, '<=', $value); + } + // 模糊搜索 + if ($op == 'like') { + $query->where($key, 'like', '%' . $value . '%'); + } + // 否定模糊搜索 + if ($op == 'notlike') { + $query->where($key, 'not like', '%' . $value . '%'); + } + // 范围搜索 + if ($op == 'range') { + list($from, $to) = explode(',', $value); + if (empty($from) || empty($to)) { continue; } - // 等于 - if ($op == 'eq') { - $query->where($key, $value); - } - // 不等于 - if ($op == 'neq') { - $query->where($key, '!=', $value); - } - // 大于 - if ($op == 'gt') { - $query->where($key, '>', $value); - } - // 大于等于 - if ($op == 'egt') { - $query->where($key, '>=', $value); - } - // 小于 - if ($op == 'lt') { - $query->where($key, '<', $value); - } - // 小于等于 - if ($op == 'elt') { - $query->where($key, '<=', $value); - } - // 模糊搜索 - if ($op == 'like') { - $query->where($key, 'like', '%' . $value . '%'); - } - // 否定模糊搜索 - if ($op == 'notlike') { - $query->where($key, 'not like', '%' . $value . '%'); - } - // 范围搜索 - if ($op == 'range') { - list($from, $to) = explode(',', $value); - if (empty($from) || empty($to)) { - continue; - } - $query->whereBetween($key, [$from, $to]); - } + $query->whereBetween($key, [$from, $to]); } } - })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc'); + } + })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc'); if (isset($all['is_export']) && !empty($all['is_export'])) { $list = $list->get()->toArray(); $export_fields = $all['export_fields'] ?? []; @@ -148,7 +148,7 @@ class CourseContentEvaluationsController extends BaseController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $detail = $this->model->with('course')->find($all['id']); + $detail = $this->model->with('course','courseContent')->find($all['id']); return $this->success($detail); } @@ -160,7 +160,7 @@ class CourseContentEvaluationsController extends BaseController * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="integer", format="int64"), required=true, description="课程内容评价字段ID(存在则更新,不存在则新增)"), * @OA\Parameter(name="course_id", in="query", @OA\Schema(type="integer"), required=false, description="课程ID"), - * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="integer"), required=false, description="课程内容ID,多个英文逗号分割"), + * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="integer"), required=false, description="课程内容ID"), * @OA\Parameter(name="title", in="query", @OA\Schema(type="string", maxLength=255), required=false, description="问卷标题"), * @OA\Parameter(name="desc", in="query", @OA\Schema(type="string", maxLength=255), required=false, description="问卷描述"), * @OA\Parameter(name="type_id", in="query", @OA\Schema(type="string", maxLength=255), required=false, description="问卷类型ID"), diff --git a/app/Models/CourseContentEvaluation.php b/app/Models/CourseContentEvaluation.php index bce693c..1a210ea 100644 --- a/app/Models/CourseContentEvaluation.php +++ b/app/Models/CourseContentEvaluation.php @@ -4,20 +4,15 @@ namespace App\Models; class CourseContentEvaluation extends SoftDeletesModel { - protected $appends = ['course_content']; - public function getCourseContentAttribute() + public function course() { - if (empty($this->course_content_id)) { - return []; - } - $course_content_id = explode(',', $this->course_content_id); - return CourseContent::with('courseContentEvaluationAsks')->whereIn('id', $course_content_id)->get(); + return $this->belongsTo(Course::class, 'course_id', 'id'); } - public function course() + public function courseContent() { - return $this->belongsTo(Course::class, 'course_id', 'id'); + return $this->belongsTo(CourseContent::class, 'course_content_id', 'id'); } public function courseContentEvaluationAsks() @@ -25,8 +20,7 @@ class CourseContentEvaluation extends SoftDeletesModel return $this->hasMany(CourseContentEvaluationAsk::class, 'course_content_evaluation_id', 'id'); } - public function courseContentEvaluationForms() - { + public function courseContentEvaluationForms(){ return $this->hasMany(CourseContentEvaluationForm::class, 'course_content_evaluation_id', 'id'); }