orderId,'订单自动取消队列start'); $t = \Yii::$app->db->beginTransaction(); try { $this->setRequest(); $ProductOrder = ProductOrder::findOne([ 'id' => $this->orderId, 'is_pay' => 0, // 'pay_type' => 0, ]); if (!$ProductOrder || $ProductOrder->cancel_status == 1) { throw new \Exception('未支付订单不存在或已取消'); } $ProductOrder->status = ProductOrderEnum::CANCEL; $ProductOrder->cancel_status = 1; $ProductOrder->cancel_time = time(); $ProductOrder->cancel_remark = '超时自动取消订单'; if ($ProductOrder->save()) { ProductOrderLog::saveLog($this->orderId,'队列触发订单取消canceled事件'); $event = new OrderEvent([ 'order' => $ProductOrder, ]); \Yii::$app->trigger(ProductOrder::EVENT_CANCELED, $event); $t->commit(); } else { throw new \Exception((new BaseModel())->getErrorMsg($ProductOrder)); } ProductOrderLog::saveLog($this->orderId,'订单自动取消队列end'); } catch (\Exception $exception) { $t->rollBack(); ProductOrderLog::saveLog($this->orderId,'订单自动取消队列异常:'.$exception->getMessage()); return; } } }