Răsfoiți Sursa

feat(cron): 订单超时确认收货状态同步到订单主表

runphp 2 luni în urmă
părinte
comite
ebcc4be1bd
1 a modificat fișierele cu 36 adăugiri și 0 ștergeri
  1. 36 0
      src/Cron/WechatOrderCron.php

+ 36 - 0
src/Cron/WechatOrderCron.php

@@ -3,6 +3,8 @@ declare(strict_types=1);
 
 namespace SixShop\Lakala\Cron;
 
+use app\model\Order;
+use app\model\OrderLog;
 use SixShop\Core\Attribute\Cron;
 use SixShop\Lakala\Service\PaymentRecordService;
 use SixShop\Payment\Model\ExtensionPaymentModel;
@@ -63,5 +65,39 @@ class WechatOrderCron
             ->select()->each(function ($payment) {
                 $this->paymentRecordService->closeOrder($payment->id);
             });
+        // 订单超时确认收货状态同步到订单主表
+        ExtensionPaymentModel::alias('p')
+            ->leftJoin('lakala_wechat_payment l', 'p.id = l.payment_id')
+            ->leftJoin('order o', 'p.order_id = o.id')
+            ->where([
+                'p.pay_type' => 'lakala',
+                'p.biz_type' => 1,
+                'l.order_state' => 4,
+                'o.order_status' => 30
+            ])
+            ->field(['p.order_id'])
+            ->select()->each(function ($payment) {
+                $order = Order::where('id', $payment->order_id)->lock(true)->findOrEmpty();
+                if ($order->order_status == 30) {
+                    Db::transaction(function () use ($order) {
+                        Order::update([
+                            'order_status' => 40, // 已完成
+                            'confirm_time' => date('Y-m-d H:i:s'),
+                            'finish_time' => date('Y-m-d H:i:s'),
+                        ], ['id' => $order->id]);
+                        OrderLog::create([
+                            'order_id' => $order->id,
+                            'order_status' => 40,
+                            'pay_status' => $order->pay_status,
+                            'shipping_status' => $order->shipping_status,
+                            'action' => 'confirm',
+                            'operator_id' => 0,
+                            'operator_type' => 3,
+                            'operator_name' => '系统',
+                            'remark' => '订单自动确认收货',
+                        ]);
+                    });
+                }
+            });
     }
 }