From b00639690b7fb901bbd8220f1b8c4b3c511655c9 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Mon, 30 Jun 2025 10:40:57 +0800 Subject: [PATCH] update --- ...CourseContentEvaluationFieldController.php | 133 ++++++++++++++++++ .../Controllers/Mobile/CourseController.php | 31 ++++ .../Mobile/SupplyDemandController.php | 2 +- app/Models/CourseContent.php | 5 + app/Models/CourseContentEvaluationField.php | 8 ++ ..._course_content_evaluation_forms_table.php | 34 +++++ routes/api.php | 11 +- 7 files changed, 221 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/Admin/CourseContentEvaluationFieldController.php create mode 100644 app/Models/CourseContentEvaluationField.php create mode 100644 database/migrations/2025_06_30_105932_create_course_content_evaluation_forms_table.php diff --git a/app/Http/Controllers/Admin/CourseContentEvaluationFieldController.php b/app/Http/Controllers/Admin/CourseContentEvaluationFieldController.php new file mode 100644 index 0000000..a6469f2 --- /dev/null +++ b/app/Http/Controllers/Admin/CourseContentEvaluationFieldController.php @@ -0,0 +1,133 @@ +all(); + $messages = [ + 'id.required' => 'Id必填', + ]; + $validator = Validator::make($all, [ + 'id' => 'required' + ], $messages); + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + $detail = $this->model->find($all['id']); + return $this->success($detail); + } + + /** + * @OA\Post( + * path="/api/admin/course-content-evaluation-field/save", + * tags={"评价字段管理"}, + * summary="保存", + * description="", + * @OA\Parameter(name="id", in="query", @OA\Schema(type="integer", format="int64"), required=true, description="课程内容评价字段ID(存在则更新,不存在则新增)"), + * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="integer", format="int32"), required=true, description="课程排课ID"), + * @OA\Parameter(name="title", in="query", @OA\Schema(type="string"), required=true, description="标题"), + * @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=true, description="字段类型。单选radio,多选checkbox,问答text,评分number,日期date,日期时间datetime"), + * @OA\Parameter(name="key", in="query", @OA\Schema(type="string"), required=true, description="英文标识"), + * @OA\Parameter(name="remark", in="query", @OA\Schema(type="string"), required=false, description="备注"), + * @OA\Parameter(name="sort", in="query", @OA\Schema(type="integer", format="int32"), required=false, description="排序"), + * @OA\Parameter(name="options", in="query", @OA\Schema(type="string"), required=false, description="选项,以英文逗号分隔"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="认证token"), + * @OA\Response( + * response="200", + * description="操作成功" + * ) + * ) + */ + public function save() + { + return parent::save(); + } + + /** + * @OA\Get( + * path="/api/admin/course-content-evaluation-field/destroy", + * tags={"评价字段管理"}, + * summary="删除", + * description="", + * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Response( + * response="200", + * description="暂无" + * ) + * ) + */ + public function destroy() + { + return parent::destroy(); + } + +} diff --git a/app/Http/Controllers/Mobile/CourseController.php b/app/Http/Controllers/Mobile/CourseController.php index 7113a54..c44c2ac 100755 --- a/app/Http/Controllers/Mobile/CourseController.php +++ b/app/Http/Controllers/Mobile/CourseController.php @@ -255,6 +255,37 @@ class CourseController extends CommonController return $this->success(compact('list')); } + /** + * @OA\Get( + * path="/api/mobile/course/my-course-content-detail", + * tags={"小程序-课程"}, + * summary="课表的课堂详情", + * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="string"), required=false, description="课表的课堂id"), + * @OA\Response( + * response=200, + * description="操作成功" + * ) + * ) + */ + public function myCourseContentDetail() + { + $all = \request()->all(); + $messages = [ + 'course_content_id.required' => '课表课堂id必填', + ]; + $validator = Validator::make($all, [ + 'course_content_id' => 'required' + ], $messages); + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + $detail = CourseContent::with(['course', 'teacher', 'courseKeeps', 'courseContentEvaluationFields' => function ($query) { + $query->orderBy('sort'); + }])->find($all['course_content_id']); + return $this->success($detail); + } + + /** * @OA\Get( * path="/api/mobile/course/get-sign", diff --git a/app/Http/Controllers/Mobile/SupplyDemandController.php b/app/Http/Controllers/Mobile/SupplyDemandController.php index 2bc94db..81964e2 100755 --- a/app/Http/Controllers/Mobile/SupplyDemandController.php +++ b/app/Http/Controllers/Mobile/SupplyDemandController.php @@ -192,7 +192,7 @@ class SupplyDemandController extends CommonController } /** - * @OA\Get( + * @OA\Post( * path="/api/mobile/supply-demand/send-message", * tags={"小程序-供需"}, * summary="发送消息", diff --git a/app/Models/CourseContent.php b/app/Models/CourseContent.php index 7ec70de..190763e 100755 --- a/app/Models/CourseContent.php +++ b/app/Models/CourseContent.php @@ -46,5 +46,10 @@ class CourseContent extends SoftDeletesModel return $this->hasMany(CourseSign::class, 'course_id', 'course_id'); } + public function courseContentEvaluationFields() + { + return $this->hasMany(CourseContentEvaluationField::class, 'course_content_id', 'id'); + } + } diff --git a/app/Models/CourseContentEvaluationField.php b/app/Models/CourseContentEvaluationField.php new file mode 100644 index 0000000..3a9c2dc --- /dev/null +++ b/app/Models/CourseContentEvaluationField.php @@ -0,0 +1,8 @@ +id(); + $table->integer('course_content_id')->nullable()->comment('课程内容id'); + $table->integer('user_id')->nullable()->comment('用户id'); + $table->json('data')->nullable()->comment('数据'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('course_contents'); + } +}; diff --git a/routes/api.php b/routes/api.php index 29264d1..8f464fa 100755 --- a/routes/api.php +++ b/routes/api.php @@ -181,6 +181,13 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () { Route::post('book/excel-show', [\App\Http\Controllers\Admin\BookController::class, "excelShow"]); Route::post('book/import', [\App\Http\Controllers\Admin\BookController::class, "import"]); + // 课程评价 + Route::get('course-content-evaluation-field/index', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "index"]); + Route::get('course-content-evaluation-field/show', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "show"]); + Route::post('course-content-evaluation-field/save', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "save"]); + Route::get('course-content-evaluation-field/destroy', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "destroy"]); + + }); }); @@ -224,6 +231,7 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile"], function () { Route::post('course/sign', [\App\Http\Controllers\Mobile\CourseController::class, "sign"]); Route::get('course/my-course', [\App\Http\Controllers\Mobile\CourseController::class, "myCourse"]); Route::get('course/my-course-content', [\App\Http\Controllers\Mobile\CourseController::class, "myCourseContent"]); + Route::get('course/my-course-content-detail', [\App\Http\Controllers\Mobile\CourseController::class, "myCourseContentDetail"]); Route::get('course/get-sign', [\App\Http\Controllers\Mobile\CourseController::class, "getSign"]); Route::post('course/update-sign', [\App\Http\Controllers\Mobile\CourseController::class, "updateSign"]); // 获取缴费二维码 @@ -251,11 +259,10 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile"], function () { Route::get('supply-demand/destroy', [\App\Http\Controllers\Mobile\SupplyDemandController::class, "destroy"]); // 供需信息留言 - Route::get('supply-demand/send-message', [\App\Http\Controllers\Mobile\SupplyDemandController::class, "sendMessage"]); + Route::post('supply-demand/send-message', [\App\Http\Controllers\Mobile\SupplyDemandController::class, "sendMessage"]); Route::get('supply-demand/message-list', [\App\Http\Controllers\Mobile\SupplyDemandController::class, "messageList"]); Route::get('supply-demand/dialogues', [\App\Http\Controllers\Mobile\SupplyDemandController::class, "dialogues"]); - // 供需信息收藏 Route::get('supply-demand/keep-index', [\App\Http\Controllers\Mobile\SupplyDemandController::class, "keepIndex"]); Route::get('supply-demand/keep-supply-demand', [\App\Http\Controllers\Mobile\SupplyDemandController::class, "keepSupplyDemand"]);