最新服务器上的版本,以后用这个
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
/**
 * Created by PhpStorm.
 * User: 风哀伤
 * Date: 2019/2/14
 * Time: 16:10
 * @copyright: ©2019 浙江禾匠信息科技
 * @link: http://www.zjhejiang.com
 */
 
namespace app\jobs;
 
use app\events\OrderEvent;
use app\models\Mall;
use app\models\Order;
use app\models\OrderRefund;
use yii\base\Component;
use yii\helpers\ArrayHelper;
use yii\queue\JobInterface;
 
class OrderSalesJob extends BaseJob implements JobInterface
{
    public $orderId;
 
    public function execute($queue)
    {
        \Yii::error('order sales job->>' . $this->orderId);
        $this->setRequest();
        $order = Order::findOne([
            'id' => $this->orderId,
            'is_delete' => 0,
            'is_send' => 1,
            'is_confirm' => 1,
            'is_sale' => 0,
        ]);
        if (!$order) {
            $newOrder = Order::findOne($this->orderId);
            $array = $newOrder ? ArrayHelper::toArray($newOrder) : [];
            \Yii::warning('创建自动过售后,订单不存在');
            \Yii::warning($array);
            return false;
        }
        $mall = Mall::findOne(['id' => $order->mall_id]);
        \Yii::$app->setMall($mall);
 
        $orderRefundList = OrderRefund::find()->where(['order_id' => $order->id, 'is_delete' => 0])->all();
        if ($orderRefundList) {
            /* @var OrderRefund[] $orderRefundList */
            foreach ($orderRefundList as $orderRefund) {
                if ($orderRefund->status != 3 && in_array($orderRefund->type, [1, 3]) && $orderRefund->is_refund == 0) {
                    return false;
                } else if ($orderRefund->status != 3 && $orderRefund->type == 2 && $orderRefund->is_confirm == 0) {
                    return false;
                }
            }
        }
 
        $order->is_sale = 1;
        if ($order->save()) {
            $event = new OrderEvent([
                'order' => $order,
            ]);
            \Yii::$app->trigger(Order::EVENT_SALES, $event);
        }
    }
}