From a1d496dd5141b567b2791bd993c537844f3f6d1d Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 11 Apr 2024 14:17:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8C=85=E8=AE=A2=E5=8D=95=E5=8F=96=E6=B6=88=E6=9C=AA=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E8=AE=A2=E5=8D=95=E9=98=9F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CancelUnpayOrdersDelayDirectConsumer.php | 3 + app/Services/DetectionService.php | 2 +- app/Services/OrderService.php | 4 +- app/Services/OrderServicePackageService.php | 80 +++++++++++++++++++ 4 files changed, 86 insertions(+), 3 deletions(-) diff --git a/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php b/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php index 6a068e8..2fbd2ba 100644 --- a/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php +++ b/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php @@ -81,6 +81,9 @@ class CancelUnpayOrdersDelayDirectConsumer extends ConsumerMessage } elseif ($data['order_type'] == 3) { // 检测订单 $result = $OrderService->cancelUnpayOrder($data['order_no'],3,"支付超时"); + } elseif ($data['order_type'] == 4) { + // 服务包订单 + $result = $OrderService->cancelUnpayOrder($data['order_no'],3,"支付超时"); } else { Log::getInstance("queue-CancelUnpayOrders")->error("order_type类型错误"); return Result::DROP;// 销毁 diff --git a/app/Services/DetectionService.php b/app/Services/DetectionService.php index 8774cc4..d102e29 100644 --- a/app/Services/DetectionService.php +++ b/app/Services/DetectionService.php @@ -816,7 +816,7 @@ class DetectionService extends BaseService /** * 取消未支付检测订单 - * @param string|int $order_id + * @param string|int $order_no * @param string|int $cancel_reason 取消订单原因(1:主动取消 2:客服取消 3:支付超时) * @param string|int $cancel_remarks 取消备注 * @return array diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php index 79dd595..99031bc 100644 --- a/app/Services/OrderService.php +++ b/app/Services/OrderService.php @@ -95,8 +95,8 @@ class OrderService extends BaseService $result = $OrderProductService->cancelUnpayProductOrder($order['order_no'], $cancel_reason, $cancel_remarks); } elseif ($order['order_type'] == 3) { // 检测订单 - $DetectionService = new DetectionService(); - $result = $DetectionService->cancelUnpayDetectionOrder($order['order_no'], $cancel_reason, $cancel_remarks); + $OrderServicePackageService = new OrderServicePackageService(); + $result = $OrderServicePackageService->cancelUnpayServiceOrder($order['order_no'], $cancel_reason, $cancel_remarks); }else{ $result['status'] = 0; $result['message'] = "订单类型错误"; diff --git a/app/Services/OrderServicePackageService.php b/app/Services/OrderServicePackageService.php index eddc101..f161352 100644 --- a/app/Services/OrderServicePackageService.php +++ b/app/Services/OrderServicePackageService.php @@ -526,4 +526,84 @@ class OrderServicePackageService extends BaseService return success($result); } + + /** + * 取消未支付检测订单 + * @param string|int $order_no + * @param string|int $cancel_reason 取消订单原因(1:主动取消 2:客服取消 3:支付超时) + * @param string|int $cancel_remarks 取消备注 + * @return array + */ + public function cancelUnpayServiceOrder(string|int $order_no, string|int $cancel_reason, string|int $cancel_remarks): array + { + $result = array(); + $result['status'] = 1; + $result['message'] = "成功"; + + // 获取检测订单数据 + $params = array(); + $params['order_service_no'] = $order_no; + $order_service_package = OrderServicePackage::getOne($params); + if (empty($order_service_package)) { + $result['status'] = 0; + $result['message'] = "未查询到对应订单数据"; + return $result; + } + + // 检测订单状态 + if ($order_service_package['order_service_status'] == 5) { + // 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消) + $result['status'] = 0; + $result['message'] = "订单已取消"; + return $result; + } + + if ($order_service_package['order_service_status'] != 1) { + // 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消) + $result['status'] = 0; + $result['message'] = "订单取消失败"; + return $result; + } + + // 检测订单退款状态 + if (!in_array($order_service_package['refund_status'], [0, 4, 5])) { + // 检测订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常) + $result['status'] = 0; + $result['message'] = "订单正在退款中"; + return $result; + } + + // 检测订单支付状态 + if ($order_service_package['pay_status'] == 2) { + // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + $result['status'] = 0; + $result['message'] = "订单已支付"; + return $result; + } + + // 检测订单删除状态 + if ($order_service_package['is_delete'] == 1) { + // 删除状态(0:否 1:是) + $result['status'] = 2; + $result['message'] = "订单已被删除"; + return $result; + } + + // 取消检测订单 + $data = array(); + $data['order_service_status'] = 5; // 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消) + if ($cancel_reason == 3) { + $data['pay_status'] = 5; // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + } + + $data['cancel_time'] = date("Y-m-d H:i:s", time()); + $data['cancel_remarks'] = $cancel_remarks; // 取消订单备注 + $data['updated_at'] = date("Y-m-d H:i:s", time()); + + $params = array(); + $params['order_service_id'] = $order_service_package['order_service_id']; + OrderServicePackage::edit($params, $data); + + return $result; + } } \ No newline at end of file