From 64ed0b4f402aab639315240cb491815421cdb5cb Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 4 Jul 2025 15:36:30 +0800 Subject: [PATCH] update --- .../Admin/CourseContentController.php | 30 +++++++++++++++++++ app/Models/CourseContent.php | 30 +++++++++++++++++++ routes/api.php | 1 + 3 files changed, 61 insertions(+) diff --git a/app/Http/Controllers/Admin/CourseContentController.php b/app/Http/Controllers/Admin/CourseContentController.php index e7acdf4..0076e52 100755 --- a/app/Http/Controllers/Admin/CourseContentController.php +++ b/app/Http/Controllers/Admin/CourseContentController.php @@ -308,4 +308,34 @@ class CourseContentController extends BaseController } } + /** + * @OA\Get( + * path="/api/admin/course-contents/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 qrcode() + { + $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 CourseContent())->getCourseContentCheckQrcode($all['id']); + return $this->success($url); + } + } diff --git a/app/Models/CourseContent.php b/app/Models/CourseContent.php index 622d194..100fe11 100755 --- a/app/Models/CourseContent.php +++ b/app/Models/CourseContent.php @@ -4,6 +4,9 @@ namespace App\Models; +use EasyWeChat\Factory; +use Illuminate\Filesystem\Filesystem; + class CourseContent extends SoftDeletesModel { protected $casts = ['publicize_ids' => 'json', 'file_ids' => 'json']; @@ -57,5 +60,32 @@ class CourseContent extends SoftDeletesModel return $this->hasOne(CourseContentEvaluation::class, 'course_content_id', 'id'); } + /** + * 获取课程详情小程序码 + */ + public function getCourseContentCheckQrcode($courseContentId) + { + $courseContent = self::find($courseContentId); + $path = config('filesystems.disks.public.root') . '/course_content_qrcode/' . $courseContent->id . '.png'; + $url = config('filesystems.disks.public.url') . '/course_content_qrcode/' . $courseContent->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?course_content_id' . $courseContentId, [ + '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 99726be..695a8d6 100755 --- a/routes/api.php +++ b/routes/api.php @@ -55,6 +55,7 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () { Route::get('course-contents/destroy', [\App\Http\Controllers\Admin\CourseContentController::class, "destroy"]); Route::post('course-contents/excel-show', [\App\Http\Controllers\Admin\CourseContentController::class, "excelShow"]); Route::post('course-contents/import', [\App\Http\Controllers\Admin\CourseContentController::class, "import"]); + Route::get('course-contents/qrcode', [\App\Http\Controllers\Admin\CourseContentController::class, "qrcode"]); // 课程类别 Route::get('course-types/index', [\App\Http\Controllers\Admin\CourseTypeController::class, "index"]);