diff --git a/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php b/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php index 5daa9e1..b945f92 100644 --- a/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php +++ b/app/Amqp/Consumer/CancelUnpayOrdersDelayDirectConsumer.php @@ -13,6 +13,7 @@ use App\Model\OrderProductItem; use App\Model\Product; use App\Model\ProductPlatformAmount; use App\Model\UserCoupon; +use App\Services\DetectionService; use App\Services\InquiryService; use App\Services\OrderProductService; use App\Utils\Log; @@ -48,7 +49,7 @@ class CancelUnpayOrdersDelayDirectConsumer extends ConsumerMessage public function consumeMessage($data, AMQPMessage $message): string { - Log::getInstance()->error("开始执行 取消未支付订单 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance("queue-CancelUnpayOrders")->error("开始执行 取消未支付订单 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); Db::beginTransaction(); @@ -63,27 +64,31 @@ class CancelUnpayOrdersDelayDirectConsumer extends ConsumerMessage $OrderProductService = new OrderProductService(); $result = $OrderProductService->cancelUnpayProductOrder($data['order_no'], 3, "支付超时"); + } elseif ($data['order_type'] == 3) { + // 检测订单取消 + $DetectionService = new DetectionService(); + $result = $DetectionService->cancelUnpayDetectionOrder($data['order_no'], 3, "支付超时"); } else { - Log::getInstance()->error("取消未支付订单失败:order_type类型错误"); + Log::getInstance("queue-CancelUnpayOrders")->error("取消未支付订单失败:order_type类型错误"); return Result::DROP;// 销毁 } if ($result['status'] == 0) { Db::rollBack(); - Log::getInstance()->error("取消未支付订单失败:" . $result['message']); + Log::getInstance("queue-CancelUnpayOrders")->error("取消未支付订单失败:" . $result['message']); return Result::DROP;// 销毁 } elseif ($result['status'] == 2) { Db::rollBack(); - Log::getInstance()->info("取消未支付订单成功:" . $result['message']); + Log::getInstance("queue-CancelUnpayOrders")->info("取消未支付订单成功:" . $result['message']); return Result::ACK;// 销毁 } Db::commit(); - Log::getInstance()->info("取消未支付订单 队列执行成功"); + Log::getInstance("queue-CancelUnpayOrders")->info("取消未支付订单 队列执行成功"); return Result::ACK; } catch (\Exception $e) { Db::rollBack(); - Log::getInstance()->error("取消未支付订单执行失败:" . $e->getMessage()); + Log::getInstance("queue-CancelUnpayOrders")->error("取消未支付订单执行失败:" . $e->getMessage()); return Result::ACK; // 重回队列 } } diff --git a/app/Services/DetectionService.php b/app/Services/DetectionService.php index 2974159..d27fd4e 100644 --- a/app/Services/DetectionService.php +++ b/app/Services/DetectionService.php @@ -393,9 +393,6 @@ class DetectionService extends BaseService $detection_pay_channel = 2; } - // 处理订单金额 - - Db::beginTransaction(); $generator = $this->container->get(IdGeneratorInterface::class); @@ -443,18 +440,18 @@ class DetectionService extends BaseService } // 增加至未支付取消订单延迟队列 -// $data = array(); -// $data['order_no'] = $order_detection['detection_no']; -// $data['order_type'] = 3; -// -// $message = new CancelUnpayOrdersDelayDirectProducer($data); -// $message->setDelayMs(1000 * 60 * 30); -// $producer = $this->container->get(Producer::class); -// $res = $producer->produce($message); -// if (!$res) { -// Db::rollBack(); -// return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败"); -// } + $data = array(); + $data['order_no'] = $order_detection['detection_no']; + $data['order_type'] = 3; + + $message = new CancelUnpayOrdersDelayDirectProducer($data); + $message->setDelayMs(1000 * 60 * 30); + $producer = $this->container->get(Producer::class); + $res = $producer->produce($message); + if (!$res) { + Db::rollBack(); + return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败"); + } Db::commit(); }catch (\Exception $e){ @@ -468,8 +465,15 @@ class DetectionService extends BaseService return success($result); } - // 取消未支付检测订单 - public function cancelUnpayDetectionOrder(string|int $order_no, string|int $cancel_reason, string|int $cancel_remarks){ + /** + * 取消未支付检测订单 + * @param string|int $order_no 订单编号 + * @param string|int $cancel_reason 取消订单原因(1:主动取消 2:客服取消 3:支付超时) + * @param string|int $cancel_remarks 取消备注 + * @return array + */ + public function cancelUnpayDetectionOrder(string|int $order_no, string|int $cancel_reason, string|int $cancel_remarks): array + { $result = array(); $result['status'] = 1; $result['message'] = "成功";