erp/app/Listeners/UpdateBusinessGoodsStock.php

70 lines
2.0 KiB
PHP
Raw Normal View History

2022-08-08 10:43:59 +08:00
<?php
namespace App\Listeners;
2022-08-22 19:55:21 +08:00
use App\Models\BusinessGoodsSku;
use App\Models\Log;
2022-08-08 10:43:59 +08:00
use App\Models\Shop;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use App\Events\BusinessOrdersUpdate;
use App\Jobs\BusinessGoodsSkuIncrQuantity;
2022-08-08 10:43:59 +08:00
2022-08-10 16:39:25 +08:00
class UpdateBusinessGoodsStock implements ShouldQueue
2022-08-08 10:43:59 +08:00
{
use InteractsWithQueue;
2022-08-08 10:43:59 +08:00
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
2022-08-08 10:43:59 +08:00
{
//
2022-08-08 10:43:59 +08:00
}
/**
* Handle the event.
*
* @param BusinessOrdersUpdate $event
2022-08-08 10:43:59 +08:00
* @return void
*/
public function handle(BusinessOrdersUpdate $event)
2022-08-08 10:43:59 +08:00
{
if (empty($event->goodsSku)) {
$log = new Log();
$log->module = 'goods';
$log->action = 'PATCH';
$log->target_type = 'goods_sku';
2022-08-17 20:50:03 +08:00
$log->target_id = $event->goodsSku->id ?? 0;
$log->target_field = 'stock';
2022-08-24 10:35:44 +08:00
$log->user_id = 999;
2022-08-26 14:09:01 +08:00
$log->message = '未找到' . json_encode($event->businessOrderItem, 256);
$log->save();
2022-08-16 21:02:31 +08:00
return;
}
if ('下架' === $event->goodsSku->status) {
return;
}
$shops = Shop::query()->where('id', '<>', $event->businessOrderItem['shop_id'])->whereNotIn('status', [0, 3])->get(['id', 'plat_id']);
if (empty($shops)) {
return;
}
foreach ($shops as $shop) {
2022-08-16 21:02:31 +08:00
$num = $event->num;
$isIncremental = true;
if ('妙选' === $shop->plat_id) {
$num = $event->goodsSku->stock;
$isIncremental = false;
}
2022-08-22 19:55:21 +08:00
$businessGoodsSkus = BusinessGoodsSku::query()->where('shop_id', $shop->id)->where('external_sku_id', $event->businessOrderItem['external_sku_id'])->get();
foreach ($businessGoodsSkus as $businessGoodsSku) {
BusinessGoodsSkuIncrQuantity::dispatch($shop, $businessGoodsSku->toArray(), $num, $isIncremental);
}
2022-08-10 16:39:25 +08:00
}
2022-08-08 10:43:59 +08:00
}
}