From 9483cd128d09eceb9ef789877afa2701c9445a3c Mon Sep 17 00:00:00 2001 From: zeyan <258785420@qq.com> Date: Fri, 31 Oct 2025 21:22:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 2 +- niucloud/app/ExceptionHandle.php | 8 +++ .../controller/apiController/OrderTable.php | 3 +- .../api/apiService/CoachStudentService.php | 71 +++++++------------ niucloud/composer.json | 2 +- niucloud/config/log.php | 6 +- uniapp/api/apiRoute.js | 4 +- uniapp/components/order-list-card/index.vue | 12 +--- 8 files changed, 43 insertions(+), 65 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 72666fa7..17dc82cf 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.8' services: # PHP 服务 php: - image: niucloud-php:8.2 + image: niucloud-php:8.0 container_name: niucloud_php volumes: - ./niucloud:/var/www/html diff --git a/niucloud/app/ExceptionHandle.php b/niucloud/app/ExceptionHandle.php index da5eb490..cdc9c27f 100755 --- a/niucloud/app/ExceptionHandle.php +++ b/niucloud/app/ExceptionHandle.php @@ -80,6 +80,14 @@ class ExceptionHandle extends Handle */ public function render($request, Throwable $e): Response { + // 过滤 PHP 8.2 废弃警告 (Guzzle 兼容性问题) + if ($e instanceof \ErrorException && + strpos($e->getMessage(), 'Creation of dynamic property') !== false) { + // 记录日志但不返回错误响应 + Log::warning('Deprecated: ' . $e->getMessage()); + return success('ok'); + } + // 添加自定义异常处理机制 $massageData = env('app_debug', false) ? [ 'file' => $e->getFile(), diff --git a/niucloud/app/api/controller/apiController/OrderTable.php b/niucloud/app/api/controller/apiController/OrderTable.php index bc287395..f084000d 100755 --- a/niucloud/app/api/controller/apiController/OrderTable.php +++ b/niucloud/app/api/controller/apiController/OrderTable.php @@ -81,7 +81,7 @@ class OrderTable extends BaseApiService $params = $request->params([ ["payment_type", ""], // 付款类型必填验证 ["course_id", ""], // 课程ID必填验证 - ["class_id", ""], // 班级ID必填验证 + ["class_id", 0], // 班级ID必填验证 ["staff_id", ""], // 员工ID(可选) ["resource_id", ""], // 客户资源表ID必填验证 ["order_type", ""], // 订单类型必填验证 @@ -96,7 +96,6 @@ class OrderTable extends BaseApiService $missing_params = []; if(empty($params['payment_type'])) $missing_params[] = 'payment_type(支付方式)'; if(empty($params['course_id'])) $missing_params[] = 'course_id(课程ID)'; - if(empty($params['class_id'])) $missing_params[] = 'class_id(班级ID)'; if(empty($params['resource_id'])) $missing_params[] = 'resource_id(客户资源ID)'; if(empty($params['order_type'])) $missing_params[] = 'order_type(订单类型)'; if(empty($params['student_id'])) $missing_params[] = 'student_id(学生ID)'; diff --git a/niucloud/app/service/api/apiService/CoachStudentService.php b/niucloud/app/service/api/apiService/CoachStudentService.php index 921ae97f..4c05bf3a 100755 --- a/niucloud/app/service/api/apiService/CoachStudentService.php +++ b/niucloud/app/service/api/apiService/CoachStudentService.php @@ -262,59 +262,36 @@ class CoachStudentService extends BaseApiService ->order('sc.created_at', 'desc') ->find(); - // 获取学员对应的资源共享ID + // 获取学员对应的资源分配ID (resource_sharing_id) $resourceSharingId = 0; - if (!empty($courseInfo) && !empty($courseInfo['resource_id'])) { - // 通过resource_id查找对应的资源共享记录,获取最新的一条 - $resourceSharing = Db::table('school_resource_sharing') - ->where('resource_id', $courseInfo['resource_id']) + + // 获取学员的user_id + $student = Db::table('school_student') + ->where('id', $studentId) + ->field('user_id') + ->find(); + + if (!empty($student['user_id'])) { + // 通过学员的user_id查找客户资源记录 + $customerResource = Db::table('school_customer_resources') + ->where('member_id', $student['user_id']) + ->where('deleted_at', 0) ->field('id') - ->order('shared_at', 'desc') + ->order('created_at', 'desc') ->find(); - - if (!empty($resourceSharing)) { - $resourceSharingId = $resourceSharing['id']; - } - } - // 如果没有找到资源共享ID,尝试通过学员的user_id查找 - if (empty($resourceSharingId)) { - $student = Db::table('school_student') - ->where('id', $studentId) - ->field('user_id') - ->find(); - - if (!empty($student['user_id'])) { - // 方法1:先尝试直接用user_id作为resource_id查找 - $resourceSharing = Db::table('school_resource_sharing') - ->where('resource_id', $student['user_id']) + if (!empty($customerResource)) { + // 通过客户资源ID查找资源分配记录 + // resource_sharing_id 是 school_resource_assignment 表的 id + $resourceAssignment = Db::table('school_resource_assignment') + ->where('resource_id', $customerResource['id']) + ->where('assignee_type', 'user') ->field('id') - ->order('shared_at', 'desc') + ->order('assigned_at', 'desc') ->find(); - - if (!empty($resourceSharing)) { - $resourceSharingId = $resourceSharing['id']; - } else { - // 方法2:通过客户资源表查找 - $customerResource = Db::table('school_customer_resources') - ->where('member_id', $student['user_id']) - ->where('deleted_at', 0) - ->field('id') - ->order('created_at', 'desc') - ->find(); - - if (!empty($customerResource)) { - // 通过客户资源ID查找资源共享记录 - $resourceSharing = Db::table('school_resource_sharing') - ->where('resource_id', $customerResource['id']) - ->field('id') - ->order('shared_at', 'desc') - ->find(); - - if (!empty($resourceSharing)) { - $resourceSharingId = $resourceSharing['id']; - } - } + + if (!empty($resourceAssignment)) { + $resourceSharingId = $resourceAssignment['id']; } } } diff --git a/niucloud/composer.json b/niucloud/composer.json index e1cb1195..d330b4b3 100755 --- a/niucloud/composer.json +++ b/niucloud/composer.json @@ -44,7 +44,7 @@ "ext-bcmath": "*", "ext-mbstring": "*", "php-di/php-di": "v7.0.1", - "guzzlehttp/guzzle": "7.5", + "guzzlehttp/guzzle": "^7.8", "yansongda/pay": "v3.6.3", "symfony/psr-http-message-bridge": "v2.2.0", "fastknife/ajcaptcha": "v1.2.1", diff --git a/niucloud/config/log.php b/niucloud/config/log.php index ea24ff9d..be9507e5 100755 --- a/niucloud/config/log.php +++ b/niucloud/config/log.php @@ -6,7 +6,7 @@ return [ // 默认日志记录通道 'default' => env('log.channel', 'file'), - // 日志记录级别 + // 日志记录级别(空数组表示记录所有级别) 'level' => [], // 日志类型记录的通道 ['error'=>'email',...] 'type_channel' => [], @@ -36,8 +36,8 @@ return [ 'close' => false, // 日志输出格式化 'format' => '[%s][%s] %s', - // 是否实时写入 - 'realtime_write' => false, + // 是否实时写入(改为true可以立即看到日志) + 'realtime_write' => true, ], // 其它日志通道配置 ], diff --git a/uniapp/api/apiRoute.js b/uniapp/api/apiRoute.js index 96540b51..d6d29b92 100755 --- a/uniapp/api/apiRoute.js +++ b/uniapp/api/apiRoute.js @@ -525,9 +525,9 @@ export default { return await http.post('/updateOrderPaymentVoucher', data) }, - // 微信在线支付 - 创建支付订单 + // 小程序支付 - 创建支付订单(使用校区配置) async createWechatPayment(data = {}) { - return await http.post('/pay', data) + return await http.post('/pay/weappPay', data) }, // 获取微信openid(使用code换取) diff --git a/uniapp/components/order-list-card/index.vue b/uniapp/components/order-list-card/index.vue index 4f93de4d..94c60063 100755 --- a/uniapp/components/order-list-card/index.vue +++ b/uniapp/components/order-list-card/index.vue @@ -579,16 +579,10 @@ export default { console.log('发起微信支付 - 订单ID:', order._raw?.id || order.id) console.log('发起微信支付 - OpenID:', openid.substring(0, 10) + '***') - // 调用后端创建微信支付订单 + // 调用后端创建微信支付订单(使用校区支付配置) const res = await apiRoute.createWechatPayment({ - type: 'wechatpay', - trade_type: 'school_order_table', - trade_id: order._raw?.id || order.id, - openid: openid, - return_url: '', - quit_url: '', - buyer_id: '', - voucher: '' + order_id: order._raw?.id || order.id, + openid: openid }) uni.hideLoading()