diff --git a/app/Jobs/ProductSpecSync.php b/app/Jobs/ProductSpecSync.php index aea4e8d..1f7b998 100644 --- a/app/Jobs/ProductSpecSync.php +++ b/app/Jobs/ProductSpecSync.php @@ -11,6 +11,7 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\DB; class ProductSpecSync implements ShouldQueue { @@ -65,7 +66,11 @@ class ProductSpecSync implements ShouldQueue foreach ($product_specs as $spec) { AgentProductSpec::query() ->where([['product_spec_id', '=', $spec->id], ['price', '<', $spec->price]]) - ->update(['price' => $spec->price]); + ->update([ + 'price' => $spec->price, + 'stock' => DB::raw("IF(`stock` > {$spec->stock}, {$spec->stock}, `stock`)"), + 'original_price' => DB::raw("IF(`original_price` < {$spec->original_price}, {$spec->original_price}, `original_price`)"), + ]); } //供应商新增,但代理商还没有的规格,同步给代理商 @@ -91,6 +96,18 @@ class ProductSpecSync implements ShouldQueue ]; }, $agent_no_spec_ids) ); + + //设置产品的销售价(列表页显示的价格) + $psArr = $product_specs->toArray(); + $ap->price = min(array_column($psArr, 'price')); + $ap->original_price = min(array_column($psArr, 'original_price')); + + //如果代理商库存大于供应商库存,将代理商库存修改为供应商的库存 + $pStock = array_sum(array_column($psArr, 'stock')); + if ($ap->stock > $pStock) { + $ap->stock = $pStock; + } + $ap->save(); } }); }