event->order->id,'订单支付事件start'); self::execute(); CommonLog::saveLog($this->event->order->id,'订单支付事件end'); } protected function execute() { $this->user = $this->event->order->user; /** * 订单是否取消状态(针对调起支付后,自动取消的订单) * 退款且不执行后续操作 * $order 重新查一次最新的订单数据 */ $order = Order::findOne($this->event->order->id); if ($order->cancel_status == 1 && ($order->pay_type == 1 || $order->pay_type == 4)) { CommonLog::saveLog($this->event->order->id,'调起支付后已经自动取消的订单进行退款'); $t = \Yii::$app->db->beginTransaction(); try { // 生成售后订单 $orderRefund = new OrderRefund(); $orderRefund->mall_id = \Yii::$app->mall->id; $orderRefund->user_id = $this->user->id; $orderRefund->order_id = $order->id; $orderRefund->order_detail_id = 0; $orderRefund->order_no = Order::getOrderNo('RE'); $orderRefund->type = 1; $orderRefund->refund_price = $order->total_pay_price; $orderRefund->status = 2; $orderRefund->is_refund = 1; $res = $orderRefund->save(); if (!$res) { throw new \Exception((new BaseModel())->getErrorMsg($orderRefund)); } (new CommonOrder())->extraCancel($order); (new OrderRefundForm())->refundMoney($orderRefund,$orderRefund->refund_price); $t->commit(); } catch (\Exception $e) { $t->rollBack(); CommonLog::saveLog($this->event->order->id,'调起支付后已经自动取消的订单进行退款异常:'.$e->getMessage()); } return $this; }else{ static::notice(); // static::pay(); } return $this; } protected function notice() { // $this->sendSms()->sendMail()->receiptPrint('pay') // ->sendTemplate()->sendMpTemplate()->sendTemplateMsgToMch()->sendBuyPrompt()->setGoods()->sendSmsToUser()->addShareOrder(); $this->setGoods()->setAutoCancel()->sendCfTemplate()->setSubAmount(); return $this; } /** * 支付后分账记录状态调整 */ public function setSubAmount() { OrderSubAmount::updateAll(['status'=>1],[ 'order_id' => $this->event->order->id, 'mall_id' => $this->event->order->mall_id, 'status' => 0 ]); } /** * 超时未填写处方单取消订单退款 */ public function setAutoCancel() { $order = Order::findOne($this->event->order->id); if($order->prescription_status == 1){ \Yii::$app->queue4->delay(48*60*60)->push(new CfOrderCancelJob([ 'orderId' => $this->event->order->id, ])); } return $this; } /** * 处方单提醒消息 */ public function sendCfTemplate() { $order = Order::findOne($this->event->order->id); if($order->prescription_status == 1){ \Yii::$app->queue4->delay(5*60)->push(new CfTemplateJob([ 'orderId' => $this->event->order->id, "data" => [ 'character_string1' => [ 'value' => $this->event->order->order_no, ], 'phrase2' => [ 'value' => '已付款', ], 'date3' => [ 'value' => date("Y/m/d",$this->event->order->created_at), ], 'thing4' => [ 'value' => '您的订单含有处方药,请尽快填写用药信息', ], ], "page" => "/pages/PreliminaryInformation/PreliminaryInformation?orderInfo=".urlencode('{"order_id":'.$this->event->order->id.'}') ])); \Yii::$app->queue4->delay(55*60)->push(new CfTemplateJob([ 'orderId' => $this->event->order->id, "data" => [ 'character_string1' => [ 'value' => $this->event->order->order_no, ], 'phrase2' => [ 'value' => '已付款', ], 'date3' => [ 'value' => date("Y/m/d",$this->event->order->created_at), ], 'thing4' => [ 'value' => '您的订单含有处方药,请尽快填写用药信息', ], ], "page" => "/pages/PreliminaryInformation/PreliminaryInformation?orderInfo=".urlencode('{"order_id":'.$this->event->order->id.'}') ])); \Yii::$app->queue4->delay(24*60*60)->push(new CfTemplateJob([ 'orderId' => $this->event->order->id, "data" => [ 'character_string1' => [ 'value' => $this->event->order->order_no, ], 'phrase2' => [ 'value' => '已付款', ], 'date3' => [ 'value' => date("Y/m/d",$this->event->order->created_at), ], 'thing4' => [ 'value' => '请尽快填写用药信息,超期将退款并关闭订单', ], ], "page" => "/pages/PreliminaryInformation/PreliminaryInformation?orderInfo=".urlencode('{"order_id":'.$this->event->order->id.'}') ])); } return $this; } // protected function pay() // { // \Yii::error('--mall pay--'); // // 首次付款绑定下级--生成分销订单--下单用户成为分销商--设置卡密数据 // $this->saveResult()->becomeJuniorByFirstPay()->addShareOrder()->becomeShare()->setTypeData(); // return $this; // } }