diff --git a/app/Http/Controllers/Admin/CourseController.php b/app/Http/Controllers/Admin/CourseController.php index 8d8a6c1..304aa0f 100755 --- a/app/Http/Controllers/Admin/CourseController.php +++ b/app/Http/Controllers/Admin/CourseController.php @@ -434,13 +434,27 @@ class CourseController extends BaseController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - // generate=1 时才调用微信生成;默认仅返回已有文件,避免弹窗打开即 500 - $generate = !empty($all['generate']); - $url = (new Course())->getCourseQrcode($all['id'], $generate); - if ($generate && empty($url)) { - return $this->fail([ResponseCode::ERROR_BUSINESS, '二维码生成失败,请检查微信配置或缓存后重试']); + try { + // generate=1 时才调用微信生成;默认仅返回已有文件,避免弹窗打开即 500 + $generate = !empty($all['generate']); + $url = (new Course())->getCourseQrcode($all['id'], $generate); + if ($generate && empty($url)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '二维码生成失败,请检查微信配置或缓存后重试']); + } + return $this->success($url ?: ''); + } catch (\Throwable $e) { + \Log::error('courses/qrcode failed', [ + 'id' => $all['id'] ?? null, + 'generate' => $all['generate'] ?? null, + 'message' => $e->getMessage(), + 'file' => $e->getFile(), + 'line' => $e->getLine(), + ]); + return $this->fail([ + ResponseCode::ERROR_BUSINESS, + '二维码生成失败: ' . $e->getMessage(), + ]); } - return $this->success($url ?: ''); } /** diff --git a/wechat_qrcode_diag.php b/wechat_qrcode_diag.php index 90e93ca..381738a 100644 --- a/wechat_qrcode_diag.php +++ b/wechat_qrcode_diag.php @@ -1,23 +1,33 @@ getNumberOfParameters()); + $put('has_resolveMiniProgramQrcode=' . (method_exists(App\Models\Course::class, 'resolveMiniProgramQrcode') ? 'yes' : 'no')); + $appends = (new ReflectionClass(App\Models\Course::class))->getDefaultProperties()['appends'] ?? []; + $put('qrcode_in_appends=' . (in_array('qrcode', $appends, true) ? 'yes' : 'no')); + $ctrl = file_get_contents(__DIR__ . '/app/Http/Controllers/Admin/CourseController.php'); + $put('controller_has_generate_flag=' . (strpos($ctrl, "generate") !== false && strpos($ctrl, 'getCourseQrcode') !== false ? 'yes' : 'no')); + $put('controller_has_try_catch_qrcode=' . (strpos($ctrl, 'courses/qrcode failed') !== false ? 'yes' : 'no')); +} catch (Throwable $e) { + $put('deploy_check_FAIL: ' . $e->getMessage()); +} + $put(''); $put('--- course model generate ---'); try {