shish 4 ay önce
ebeveyn
işleme
46645650a2
1 değiştirilmiş dosya ile 59 ekleme ve 35 silme
  1. 59 35
      console/controllers/GhsOrderController.php

+ 59 - 35
console/controllers/GhsOrderController.php

@@ -37,12 +37,42 @@ class GhsOrderController extends Controller
 
         $minPayTime = date('Y-m-d H:i:s', strtotime('-10 day'));
         $maxPayTime = date('Y-m-d H:i:s', strtotime('-7 day'));
-        $condition = [
+        $extraCondition = [
             'payStatus' => 1,
             'status' => ['in', [2, 3]],
             'payTime' => ['between', [$minPayTime, $maxPayTime]],
         ];
-        $this->batchConfirmReachByMainId($condition);
+
+        $ghsShops = ShopClass::getAllByCondition(['ptStyle' => 2, 'live' => 1], null, 'mainId');
+        if (!empty($ghsShops)) {
+            $mainIds = array_unique(array_filter(array_column($ghsShops, 'mainId')));
+            if (!empty($mainIds)) {
+                $params = ['staffId' => 0, 'staffName' => '系统', 'notice' => false]; // notice设置为 false,实现不发送发货通知
+                foreach ($mainIds as $mainId) {
+                    $condition = array_merge(['mainId' => $mainId], $extraCondition);
+                    $orders = OrderClass::getAllByCondition($condition, 'id asc', '*', null, true);
+                    if (empty($orders)) {
+                        continue;
+                    }
+                    foreach ($orders as $order) {
+                        $connection = Yii::$app->db;
+                        $transaction = $connection->beginTransaction();
+                        try {
+                            OrderClass::confirmReach($order, $params);
+                            $transaction->commit();
+                        } catch (\Exception $e) {
+                            $transaction->rollBack();
+                            $orderId = $order->id ?? 0;
+                            Yii::error(
+                                "批发订单自动完结失败 mainId={$mainId}, orderId={$orderId}, message={$e->getMessage()}",
+                                'ghsOrderAutoFinish'
+                            );
+                        }
+                    }
+                }
+            }
+        }
+
         Yii::info('批发订单自动完结脚本成功执行');
     }
 
@@ -50,47 +80,41 @@ class GhsOrderController extends Controller
     public function actionSetOldOrderToFinish()
     {
         $maxPayTime = date('Y-m-d H:i:s', strtotime('-9 day'));
-        $condition = [
+        $extraCondition = [
             'payStatus' => 1,
             'status' => ['in', [2, 3]],
             'payTime <' => $maxPayTime,
         ];
-        $this->batchConfirmReachByMainId($condition);
-        Yii::info('批发订单自动完结历史补偿脚本成功执行');
-    }
 
-    /**
-     * 按批发店 mainId 分批处理订单自动收货完结
-     * @param array $extraCondition
-     */
-    private function batchConfirmReachByMainId($extraCondition)
-    {
         $ghsShops = ShopClass::getAllByCondition(['ptStyle' => 2, 'live' => 1], null, 'mainId');
-        if (empty($ghsShops)) {
-            return;
-        }
-        $mainIds = array_unique(array_filter(array_column($ghsShops, 'mainId')));
-        if (empty($mainIds)) {
-            return;
-        }
-        $params = ['staffId' => 0, 'staffName' => '系统', 'notice' => false]; // notice设置为 false,实现不发送发货通知
-        foreach ($mainIds as $mainId) {
-            $condition = array_merge(['mainId' => $mainId], $extraCondition);
-            $orders = OrderClass::getAllByCondition($condition, 'id asc', '*', null, true);
-            if (empty($orders)) {
-                continue;
-            }
-            foreach ($orders as $order) {
-                try {
-                    OrderClass::confirmReach($order, $params);
-                } catch (\Exception $e) {
-                    $orderId = $order->id ?? 0;
-                    Yii::error(
-                        "批发订单自动完结失败 mainId={$mainId}, orderId={$orderId}, message={$e->getMessage()}",
-                        'ghsOrderAutoFinish'
-                    );
+        if (!empty($ghsShops)) {
+            $mainIds = array_unique(array_filter(array_column($ghsShops, 'mainId')));
+            if (!empty($mainIds)) {
+                $params = ['staffId' => 0, 'staffName' => '系统', 'notice' => false]; // notice设置为 false,实现不发送发货通知
+                foreach ($mainIds as $mainId) {
+                    $condition = array_merge(['mainId' => $mainId], $extraCondition);
+                    $orders = OrderClass::getAllByCondition($condition, 'id asc', '*', null, true);
+                    if (empty($orders)) {
+                        continue;
+                    }
+                    foreach ($orders as $order) {
+                        $connection = Yii::$app->db;
+                        $transaction = $connection->beginTransaction();
+                        try {
+                            OrderClass::confirmReach($order, $params);
+                            $transaction->commit();
+                        } catch (\Exception $e) {
+                            $transaction->rollBack();
+                            $orderId = $order->id ?? 0;
+                            Yii::error(
+                                "批发订单自动完结失败 mainId={$mainId}, orderId={$orderId}, message={$e->getMessage()}",
+                                'ghsOrderAutoFinish'
+                            );
+                        }
+                    }
                 }
             }
         }
+        Yii::info('批发订单自动完结历史补偿脚本成功执行');
     }
 }