From 3a352a27027c31bdfd081af5c0d8c7e670430b1d Mon Sep 17 00:00:00 2001 From: liapples Date: Sun, 26 Sep 2021 16:21:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=B6=85=E6=97=B6=E5=8A=A0?= =?UTF-8?q?=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/OrderTimeout.php | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/app/Console/Commands/OrderTimeout.php b/app/Console/Commands/OrderTimeout.php index 45b2b2f..765f7c6 100644 --- a/app/Console/Commands/OrderTimeout.php +++ b/app/Console/Commands/OrderTimeout.php @@ -3,8 +3,11 @@ namespace App\Console\Commands; use App\Common\OrderStatus; +use App\Models\AgentProduct; +use App\Models\AgentProductSpec; use App\Models\Order; use App\Models\Product; +use App\Models\ProductSpec; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; @@ -52,7 +55,7 @@ class OrderTimeout extends Command $min_id = 0; while (true) { - Order::query() + Order::with('orderProductItem') // ->where('id', '>=', $min_id) ->whereIn('status', $status_arr) ->whereNotNull('timeout') @@ -66,9 +69,24 @@ class OrderTimeout extends Command $v->status = OrderStatus::CANCEL; $v->save(); - //加回库存 + //供应商产品加库存 Product::whereIn('id', explode(',', $v->product_ids))->increment('stock', $v->num); + //代理商产品加库存 + AgentProduct::where('id', $v->agent_product_id)->increment('stock', $v->num); + + if (!$v->orderProductItem->isEmpty()) { + $item = $v->orderProductItem->toArray(); + + //供应商产品规格加库存 + $ids = array_column($item, 'product_spec_id'); + ProductSpec::whereIn('id', $ids)->increment('stock', $v->num); + + //代理商产品规格加库存 + $ids = array_column($item, 'agent_product_spec_id'); + AgentProductSpec::whereIn('id', $ids)->increment('stock', $v->num); + } + DB::commit(); $min_id = $v->id; } catch (\Exception $exception) { @@ -82,7 +100,7 @@ class OrderTimeout extends Command //TODO 产品规格表加库存 $this->line('[' . date('Y-m-d H:i:s') . "] ID游标:$min_id ,等待下一个任务"); - sleep(3); + sleep(5); } return 0; }