2022-08-08 10:43:59 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Listeners;
|
|
|
|
|
|
2022-08-11 02:13:19 +08:00
|
|
|
use App\Models\GoodsSku;
|
|
|
|
|
use App\Models\Log;
|
2022-08-08 10:43:59 +08:00
|
|
|
use App\Models\Shop;
|
2022-08-11 02:13:19 +08:00
|
|
|
use App\Services\Business\BusinessFactory;
|
2022-08-08 10:43:59 +08:00
|
|
|
use Illuminate\Auth\Events\Registered;
|
|
|
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
|
|
|
use Illuminate\Queue\InteractsWithQueue;
|
2022-08-11 02:13:19 +08:00
|
|
|
use App\Models\BusinessOrderItem;
|
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
|
|
|
{
|
2022-08-11 02:13:19 +08:00
|
|
|
protected $num;
|
|
|
|
|
protected $businessOrderItem;
|
2022-08-08 10:43:59 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create the event listener.
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
2022-08-11 02:13:19 +08:00
|
|
|
public function __construct(BusinessOrderItem $item, $num)
|
2022-08-08 10:43:59 +08:00
|
|
|
{
|
2022-08-11 02:13:19 +08:00
|
|
|
$this->businessOrderItem = $item;
|
|
|
|
|
$this->num = $num;
|
2022-08-08 10:43:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the event.
|
|
|
|
|
*
|
2022-08-10 16:39:25 +08:00
|
|
|
* @param Registered $event
|
2022-08-08 10:43:59 +08:00
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function handle(Registered $event)
|
|
|
|
|
{
|
2022-08-11 02:13:19 +08:00
|
|
|
$shops = Shop::query()->where('id', '<>', $this->businessOrderItem->shop_id)->where('status', 1)->get(['id', 'plat_id']);
|
|
|
|
|
[$goodsCode, $skuCode] = explode('_', $this->businessOrderItem->external_sku_id);
|
|
|
|
|
$goodsSku = GoodsSku::query()->where('sku_code', $skuCode)
|
|
|
|
|
->with(['goods' => function ($query) use ($goodsCode) {
|
|
|
|
|
$query->where('goods_code', $goodsCode);
|
|
|
|
|
}])
|
|
|
|
|
->first();
|
|
|
|
|
if ($goodsSku) {
|
|
|
|
|
$goodsSku->stock += $this->num;
|
|
|
|
|
$goodsSku->save();
|
|
|
|
|
foreach ($shops as $shop) {
|
|
|
|
|
BusinessFactory::init()->make($shop['plat_id'])->setShopId($shop['id'])->incrQuantity($this->businessOrderItem, $this->num, true, $goodsSku);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$log = new Log();
|
|
|
|
|
$log->module = 'goods';
|
|
|
|
|
$log->action = 'PATCH';
|
|
|
|
|
$log->target_type = 'goods_sku';
|
|
|
|
|
$log->target_id = $goodsSku->id;
|
|
|
|
|
$log->target_field = 'stock';
|
|
|
|
|
$log->user_id = $this->businessOrderItem->shop_id;
|
|
|
|
|
$log->message = ($this->businessOrderItem->external_sku_id ?: '商品') . '未找到';
|
|
|
|
|
$log->save();
|
2022-08-10 16:39:25 +08:00
|
|
|
}
|
2022-08-08 10:43:59 +08:00
|
|
|
}
|
|
|
|
|
}
|