master
lion 1 day ago
parent e77f12143a
commit b995948928

@ -434,8 +434,13 @@ class CourseController extends BaseController
if ($validator->fails()) {
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
$url = (new Course())->getCourseQrcode($all['id']);
return $this->success($url);
// 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 ?: '');
}
/**

@ -176,7 +176,8 @@ class CourseSignController extends BaseController
$key = $condition['key'] ?? null;
$op = $condition['op'] ?? null;
$value = $condition['value'] ?? null;
if (!isset($key) || !isset($op) || !isset($value)) {
// 空字符串/null 不参与筛选(前端未选状态时会传 status=''
if (!isset($key) || !isset($op) || !isset($value) || $value === '' || $value === []) {
continue;
}
// 等于

@ -15,7 +15,7 @@ class Course extends SoftDeletesModel
'date_status',
'publicize',
'sign_date_status',
'qrcode',
// qrcode 不自动 append列表/关联序列化时会调微信,易导致接口 500
'teacher_detail',
'status_text',
'is_fee_text',
@ -237,8 +237,10 @@ class Course extends SoftDeletesModel
/**
* 获取课程详情小程序码
* @param mixed $courseId
* @param bool $generate 是否在文件不存在时尝试生成
*/
public function getCourseQrcode($courseId)
public function getCourseQrcode($courseId, $generate = true)
{
$course = Course::find($courseId);
if (empty($course)) {
@ -247,14 +249,15 @@ class Course extends SoftDeletesModel
return $this->resolveMiniProgramQrcode(
'course_qrcode/' . $course->id . '.png',
'packages/course/detail?id=' . $courseId,
['course_id' => $courseId]
['course_id' => $courseId],
$generate
);
}
/**
* 获取课程报名小程序码
*/
public function getCourseCheckQrcode($courseId)
public function getCourseCheckQrcode($courseId, $generate = true)
{
$course = Course::find($courseId);
if (empty($course)) {
@ -263,14 +266,15 @@ class Course extends SoftDeletesModel
return $this->resolveMiniProgramQrcode(
'course_check_qrcode/' . $course->id . '.png',
'packages/sign/course?course_id=' . $courseId,
['course_id' => $courseId]
['course_id' => $courseId],
$generate
);
}
/**
* 获取问卷小程序码
*/
public function getEvaluationQrcode($id)
public function getEvaluationQrcode($id, $generate = true)
{
$courseContentEvaluation = CourseContentEvaluation::find($id);
if (empty($courseContentEvaluation)) {
@ -279,14 +283,15 @@ class Course extends SoftDeletesModel
return $this->resolveMiniProgramQrcode(
'course_evaluation_qrcode/' . $courseContentEvaluation->id . '.png',
'packages/surveyFill/index?id=' . $id,
['evaluation_id' => $id]
['evaluation_id' => $id],
$generate
);
}
/**
* 读取或生成小程序码;微信/缓存失败时返回空字符串,避免列表接口 500
*/
protected function resolveMiniProgramQrcode(string $relativePath, string $page, array $context = []): string
protected function resolveMiniProgramQrcode(string $relativePath, string $page, array $context = [], bool $generate = true): string
{
$path = config('filesystems.disks.public.root') . '/' . $relativePath;
$url = config('filesystems.disks.public.url') . '/' . $relativePath;
@ -295,6 +300,10 @@ class Course extends SoftDeletesModel
return $url;
}
if (!$generate) {
return '';
}
$appId = (string) config('app.applet_appid');
$secret = (string) config('app.applet_secret');
if ($appId === '' || $secret === '') {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save