event->order->id); if ($order->cancel_status == 1 && $order->pay_type == 1) { OrderLog::saveLog($this->event->order->id,'调起支付后已经自动取消的订单进行退款'); $t = \Yii::$app->db->beginTransaction(); try { //生成记录 $orderRefund = new OrderRefund(); $orderRefund->user_id = $order->user_id; $orderRefund->order_id = $order->id; $orderRefund->refund_no = FuncHelper::generate_order_no('RF'); $orderRefund->refund_price = $order->total_pay_price; $orderRefund->saveOrFail(); $order->cancel_status = 1; $order->cancel_time = time(); $order->cancel_remark = '超时未支付取消订单'; //修改未默认状态 $order->accept_status = OrderAcceptEnum::NO; //修改退款状态 $order->refund_status = 1; $order->refund_time = time(); $order->saveOrFail(); //退款操作 $refundForm = new \common\forms\OrderRefundForm(); $refundForm->refundMoney($orderRefund); $t->commit(); } catch (\Exception $e) { $t->rollBack(); OrderLog::saveLog($this->event->order->id,'调起支付后已经自动取消的订单进行退款异常:'.$e->getMessage()); } return $this; }else{ //正常支付后操作 $this->actionAutoRefund()->sendInquiry(); } return $this; } //超时自动退款队列 public function actionAutoRefund() { $config = \Yii::$app->params; $orderAutoRefundMinute = isset($config['order']['refund_time']) ? $config['order']['refund_time'] : 24*60*60; if (is_numeric($orderAutoRefundMinute) && $orderAutoRefundMinute >= 0) { // 订单自动取消任务 \Yii::$app->queue->delay($orderAutoRefundMinute)->push(new OrderRefundJob([ 'orderId' => $this->event->order->id, ])); $autoRefundTime = $this->event->order->created_at + $orderAutoRefundMinute; $this->event->order->auto_refund_time = $autoRefundTime; $this->event->order->save(); } return $this; } //发送问诊消息 - 添加会话结束队列 public function sendInquiry() { \Yii::$app->queue->delay(0)->push(new OrderPayImJob([ 'orderId' => $this->event->order->id, ])); return $this; } }