diff --git a/app/Console/Commands/OrderCompleteCommand.php b/app/Console/Commands/OrderCompleteCommand.php new file mode 100644 index 00000000..eb58d117 --- /dev/null +++ b/app/Console/Commands/OrderCompleteCommand.php @@ -0,0 +1,38 @@ +completable()->chunkById(200, function ($orders) use ($orderService) { + foreach ($orders as $order) { + $orderService->confirm($order); + } + }); + } +} diff --git a/app/Models/Order.php b/app/Models/Order.php index 32aa7dcd..f04cac61 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -94,6 +94,16 @@ class Order extends Model ->where('created_at', '<=', now()->subSeconds(app_settings('app.order_payment_expires_at'))); } + /** + * 仅查询可自动完成的订单 + */ + public function scopeCompletable() + { + return $this->where('status', static::STATUS_PAID) + ->where('shipping_state', static::SHIPPING_STATE_PROCESSED) + ->where('auto_complete_at', '<=', now()); + } + /** * 下单人 * diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php index 5a6e8e74..4ad0c334 100644 --- a/app/Services/OrderService.php +++ b/app/Services/OrderService.php @@ -800,8 +800,11 @@ class OrderService $orderPackageService = new OrderPackageService(); - // 获取订单的未作废未签收包裹 - $packages = $order->packages()->unchecked()->where('is_failed', false)->get(); + $order->loadMissing('packages'); + + $packages = $order->packages()->filter(function ($item) { + return ! $item->is_failed && ! $item->isChecked(); + }); foreach ($packages as $package) { $orderPackageService->checkPackage($package, true);