From 1f08f9cc7acf0b9593ab2caf63b6fd39365d7dcf Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Tue, 26 Aug 2025 09:41:58 +0800 Subject: [PATCH 1/5] update --- .../Controllers/Admin/CourseController.php | 30 +++++++++++++++++++ app/Models/Course.php | 28 +++++++++++++++++ routes/api.php | 1 + 3 files changed, 59 insertions(+) diff --git a/app/Http/Controllers/Admin/CourseController.php b/app/Http/Controllers/Admin/CourseController.php index 15bbd2a..ed904b8 100755 --- a/app/Http/Controllers/Admin/CourseController.php +++ b/app/Http/Controllers/Admin/CourseController.php @@ -364,6 +364,36 @@ class CourseController extends BaseController return $this->success($url); } + /** + * @OA\Get( + * path="/api/admin/courses/evaluation-qrcode", + * 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 evaluationQrcode() + { + $all = \request()->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())]); + } + $url = (new Course())->getEvaluationQrcode($all['id']); + return $this->success($url); + } + /** * @OA\Get( * path="/api/admin/courses/send-sms", diff --git a/app/Models/Course.php b/app/Models/Course.php index a83e1e5..0e77986 100755 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -213,5 +213,33 @@ class Course extends SoftDeletesModel return $url; } + /** + * 获取问卷小程序码 + */ + public function getEvaluationQrcode($courseId) + { + $course = Course::find($courseId); + $path = config('filesystems.disks.public.root') . '/course_evaluation_qrcode/' . $course->id . '.png'; + $url = config('filesystems.disks.public.url') . '/course_evaluation_qrcode/' . $course->id . '.png'; + $fileSys = new Filesystem(); + if ($fileSys->exists($path)) { + return $url; + } + $config = [ + 'app_id' => \config('app.applet_appid'), + 'secret' => \config('app.applet_secret') + ]; + $app = Factory::miniProgram($config); + $tmp = $app->app_code->get('packages/surveyFill/index?id=' . $courseId, [ + // todo:: 版本切换 + // 'env_version' => "release" // 正式版 + 'env_version' => "trial" // 体验版 + ]); + $dir = dirname($path); + $fileSys->ensureDirectoryExists($dir, 0755, true); + $fileSys->put($path, $tmp); + return $url; + } + } diff --git a/routes/api.php b/routes/api.php index 7859078..ad3a3d7 100755 --- a/routes/api.php +++ b/routes/api.php @@ -50,6 +50,7 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () { Route::post('courses/import', [\App\Http\Controllers\Admin\CourseController::class, "import"]); Route::get('courses/qrcode', [\App\Http\Controllers\Admin\CourseController::class, "qrcode"]); Route::get('courses/check-qrcode', [\App\Http\Controllers\Admin\CourseController::class, "checkQrcode"]); + Route::get('courses/evaluation-qrcode', [\App\Http\Controllers\Admin\CourseController::class, "evaluationQrcode"]); Route::get('courses/send-sms', [\App\Http\Controllers\Admin\CourseController::class, "sendSms"]); // 排课 From 4d58d79fe47567357725d0eda73475804e3f8d3c Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Tue, 26 Aug 2025 09:56:30 +0800 Subject: [PATCH 2/5] update --- app/Http/Controllers/Mobile/CourseController.php | 2 +- app/Models/CourseContentEvaluationAsk.php | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Mobile/CourseController.php b/app/Http/Controllers/Mobile/CourseController.php index 94baff9..1f89c67 100755 --- a/app/Http/Controllers/Mobile/CourseController.php +++ b/app/Http/Controllers/Mobile/CourseController.php @@ -144,7 +144,7 @@ class CourseController extends CommonController return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } $detail = CourseContentEvaluation::with(['courseContentEvaluationAsks' => function ($q) { - $q->orderBy('sort', 'asc'); + $q->with('courseContent')->orderBy('sort', 'asc'); }])->find($all['course_content_evaluation_id']); return $this->success($detail); } diff --git a/app/Models/CourseContentEvaluationAsk.php b/app/Models/CourseContentEvaluationAsk.php index e8ef820..4f78f32 100644 --- a/app/Models/CourseContentEvaluationAsk.php +++ b/app/Models/CourseContentEvaluationAsk.php @@ -6,4 +6,9 @@ class CourseContentEvaluationAsk extends SoftDeletesModel { protected $casts = ['select_item' => 'json']; + public function courseContent() + { + return $this->hasOne(CourseContentEvaluation::class, 'id', 'course_content_id'); + } + } From be72c236afa51d035ef8b90cfddbc3d6e8aeaa27 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Tue, 26 Aug 2025 10:02:36 +0800 Subject: [PATCH 3/5] update --- app/Models/Course.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Models/Course.php b/app/Models/Course.php index 0e77986..63d0e69 100755 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -216,11 +216,11 @@ class Course extends SoftDeletesModel /** * 获取问卷小程序码 */ - public function getEvaluationQrcode($courseId) + public function getEvaluationQrcode($id) { - $course = Course::find($courseId); - $path = config('filesystems.disks.public.root') . '/course_evaluation_qrcode/' . $course->id . '.png'; - $url = config('filesystems.disks.public.url') . '/course_evaluation_qrcode/' . $course->id . '.png'; + $courseContentEvaluation = CourseContentEvaluation::find($id); + $path = config('filesystems.disks.public.root') . '/course_evaluation_qrcode/' . $courseContentEvaluation->id . '.png'; + $url = config('filesystems.disks.public.url') . '/course_evaluation_qrcode/' . $courseContentEvaluation->id . '.png'; $fileSys = new Filesystem(); if ($fileSys->exists($path)) { return $url; @@ -230,7 +230,7 @@ class Course extends SoftDeletesModel 'secret' => \config('app.applet_secret') ]; $app = Factory::miniProgram($config); - $tmp = $app->app_code->get('packages/surveyFill/index?id=' . $courseId, [ + $tmp = $app->app_code->get('packages/surveyFill/index?id=' . $id, [ // todo:: 版本切换 // 'env_version' => "release" // 正式版 'env_version' => "trial" // 体验版 From 2a657bf04bb46ea3114c9917b17547c13cbd3bf7 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Tue, 26 Aug 2025 10:09:37 +0800 Subject: [PATCH 4/5] update --- app/Models/CourseContentEvaluationAsk.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/CourseContentEvaluationAsk.php b/app/Models/CourseContentEvaluationAsk.php index 4f78f32..d56e85d 100644 --- a/app/Models/CourseContentEvaluationAsk.php +++ b/app/Models/CourseContentEvaluationAsk.php @@ -8,7 +8,7 @@ class CourseContentEvaluationAsk extends SoftDeletesModel public function courseContent() { - return $this->hasOne(CourseContentEvaluation::class, 'id', 'course_content_id'); + return $this->hasOne(CourseContent::class, 'id', 'course_content_id'); } } From 77808842e19b870b14dd8e1ec9dc04a8f1dfb5f8 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Tue, 26 Aug 2025 10:11:58 +0800 Subject: [PATCH 5/5] update --- app/Http/Controllers/Mobile/CourseController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Mobile/CourseController.php b/app/Http/Controllers/Mobile/CourseController.php index 1f89c67..2ce7756 100755 --- a/app/Http/Controllers/Mobile/CourseController.php +++ b/app/Http/Controllers/Mobile/CourseController.php @@ -144,7 +144,7 @@ class CourseController extends CommonController return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } $detail = CourseContentEvaluation::with(['courseContentEvaluationAsks' => function ($q) { - $q->with('courseContent')->orderBy('sort', 'asc'); + $q->with('courseContent.teacher')->orderBy('sort', 'asc'); }])->find($all['course_content_evaluation_id']); return $this->success($detail); }