diff --git a/app/Events/BatchStockUpdateEvent.php b/app/Events/BatchStockUpdateEvent.php new file mode 100644 index 0000000..a9f2778 --- /dev/null +++ b/app/Events/BatchStockUpdateEvent.php @@ -0,0 +1,42 @@ +goodsSkus = GoodsSku::query()->whereIn('id', $goodsSkuIds)->get(); + $this->combinationGoodsUpdate = $combinationGoodsUpdate; + } + + /** + * Get the channels the event should broadcast on. + * + * @return \Illuminate\Broadcasting\Channel|array + */ + public function broadcastOn() + { + return new PrivateChannel('channel-name'); + } +} diff --git a/app/Events/BusinessOrdersUpdate.php b/app/Events/BusinessOrdersUpdate.php index c07a90e..1e78768 100644 --- a/app/Events/BusinessOrdersUpdate.php +++ b/app/Events/BusinessOrdersUpdate.php @@ -2,7 +2,9 @@ namespace App\Events; +use App\Models\DailyStockRecord; use App\Models\GoodsSku; +use App\Utils\DateTimeUtils; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PresenceChannel; @@ -16,39 +18,51 @@ class BusinessOrdersUpdate { use Dispatchable, InteractsWithSockets, SerializesModels; + public $businessGoodSku; public $num; - public $businessGoods; public $goodsSku; - public $goodsSkus; - public $combinationGoodsUpdate; + public $combinationGoodsUpdate = true; /** * Create a new event instance. * * @return void */ - public function __construct($item, $num) + public function __construct($businessGoodSku, $num) { - $this->combinationGoodsUpdate = false; - $this->businessGoods = $item->toArray(); + $this->businessGoodSku = $businessGoodSku->toArray(); $this->num = $num; $this->updateStock(); } private function updateStock() { - try { - $this->goodsSku = GoodsSku::query() - ->where('external_sku_id', $this->businessGoods['external_sku_id']) - ->first(); - } catch (\Exception $e) { - Log::error('事件库存更新失败: ' . $e->getMessage()); + $this->goodsSku = GoodsSku::query() + ->where('external_sku_id', $this->businessGoodSku['external_sku_id']) + ->first(); + if (is_null($this->goodsSku)) { return false; } - if ($this->goodsSku) { - $this->goodsSku->stock += $this->num; - $this->goodsSku->save(); + $stock = $this->goodsSku->stock + $this->num; + + if (0 >= $stock) { + $this->goodsSku->status = GoodsSku::$STATUS_DOWN; + } else { + $this->goodsSku->status = GoodsSku::$STATUS_ON_SALE; } + + // 今日到货 + 1T 大于20,且当前剩余库存小于4时 直接下架 + $arrivedTodayNum = DailyStockRecord::query() + ->where('day', DateTimeUtils::getToday()) + ->where('sku_id', $this->goodsSku->id) + ->value('arrived_today_num'); + if (20 < $arrivedTodayNum + $this->goodsSku->yesterday_num && 4 > $stock) { + $this->goodsSku->status = GoodsSku::$STATUS_DOWN; + $stock = 0; + } + + $this->goodsSku->stock = $stock; + $this->goodsSku->save(); } /** diff --git a/app/Events/StockUpdateEvent.php b/app/Events/StockUpdateEvent.php index fb8acf8..ca84859 100644 --- a/app/Events/StockUpdateEvent.php +++ b/app/Events/StockUpdateEvent.php @@ -2,7 +2,9 @@ namespace App\Events; +use App\Models\DailyStockRecord; use App\Models\GoodsSku; +use App\Utils\DateTimeUtils; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PresenceChannel; @@ -16,28 +18,38 @@ class StockUpdateEvent use Dispatchable, InteractsWithSockets, SerializesModels; public $goodsSku; - public $goodsSkus; - public $isBatch; - public $combinationGoodsUpdate; + public $combinationGoodsUpdate = true; /** * Create a new event instance. * - * @param $data array|object - * - * @return void + * @param $goodsSku */ - public function __construct($data, $isBatch = 0, $combinationGoodsUpdate = false) + public function __construct($goodsSku) { - $this->isBatch = $isBatch; - $this->combinationGoodsUpdate = $combinationGoodsUpdate; - if (is_array($data)) { - // ids集合 - $this->goodsSkus = GoodsSku::query()->whereIn('id', $data)->get(); + $this->goodsSku = $goodsSku; + $this->checkStatusAndStock($goodsSku); + } + + private function checkStatusAndStock($goodsSku) + { + $stock = $goodsSku->stock; + if (0 >= $goodsSku->stock) { + $status = GoodsSku::$STATUS_DOWN; } else { - // GoodsSku Elo模型对象 - $this->goodsSku = $data; + $status = GoodsSku::$STATUS_ON_SALE; } + $arrivedTodayNum = DailyStockRecord::query() + ->where('day', DateTimeUtils::getToday()) + ->where('sku_id', $goodsSku->id) + ->value('arrived_today_num'); + if (20 < $arrivedTodayNum + $goodsSku->yesterday_num && 4 > $goodsSku->stock) { + $status = GoodsSku::$STATUS_DOWN; + $stock = 0; + } + $goodsSku->status = $status; + $goodsSku->stock = $stock; + $goodsSku->save(); } /** diff --git a/app/Http/Controllers/Goods/GoodsCombinationController.php b/app/Http/Controllers/Goods/GoodsCombinationController.php index 7cbfb92..f81afdb 100644 --- a/app/Http/Controllers/Goods/GoodsCombinationController.php +++ b/app/Http/Controllers/Goods/GoodsCombinationController.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\Goods; -use App\Events\StockUpdateEvent; use App\Http\Controllers\Controller; use App\Http\Resources\GoodsSkuResource; use App\Imports\CombinationGoodsImport; @@ -141,7 +140,6 @@ class GoodsCombinationController extends Controller CombinationGood::query()->create(['goods_sku_id' => $sku->id, 'item_id' => $item['item_id'], 'item_num' => $item['item_num']]); } DB::commit(); -// event(new StockUpdateEvent($sku, 0, true)); } catch (\Exception $exception) { DB::rollBack(); $this->res = [ diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index 25d7360..c34032f 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Goods; +use App\Events\BatchStockUpdateEvent; use App\Events\StockUpdateEvent; use App\Exports\GoodsSkusExport; use App\Http\Controllers\Controller; @@ -234,7 +235,8 @@ class GoodsSkusController extends Controller $log = new LogModel(); $log->batchInsert($logs); DB::commit(); - event(new StockUpdateEvent(array_column($request->skus, 'id'))); + // 批量更新 + event(new BatchStockUpdateEvent(array_column($request->skus, 'id'))); } catch (\Exception $exception) { DB::rollBack(); $this->res = [ diff --git a/app/Imports/CombinationGoodsImport.php b/app/Imports/CombinationGoodsImport.php index e836795..f56a137 100644 --- a/app/Imports/CombinationGoodsImport.php +++ b/app/Imports/CombinationGoodsImport.php @@ -2,10 +2,8 @@ namespace App\Imports; -use App\Events\StockUpdateEvent; use App\Models\CombinationGood; use App\Models\GoodsSku; -use App\Models\GoodsSkuLocation; use App\Utils\ArrayUtils; use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Concerns\SkipsEmptyRows; @@ -72,7 +70,6 @@ class CombinationGoodsImport implements ToArray, SkipsEmptyRows, WithStartRow CombinationGood::query()->create(['goods_sku_id' => $sku->id, 'item_id' => $skus[$item['item_code']]['id'], 'item_num' => $item['item_num']]); } DB::commit(); -// event(new StockUpdateEvent($sku, 0, true)); } catch (\Exception $exception) { DB::rollBack(); } diff --git a/app/Imports/InventoryImport.php b/app/Imports/InventoryImport.php index 74b2d37..d2e2779 100644 --- a/app/Imports/InventoryImport.php +++ b/app/Imports/InventoryImport.php @@ -2,6 +2,7 @@ namespace App\Imports; +use App\Events\BatchStockUpdateEvent; use App\Jobs\SyncCostToMiaoXuan; use App\Models\DailyStockRecord; use App\Models\GoodsSku; @@ -11,7 +12,6 @@ use Exception; use Maatwebsite\Excel\Concerns\SkipsEmptyRows; use Maatwebsite\Excel\Concerns\ToArray; use App\Utils\ArrayUtils; -use App\Events\StockUpdateEvent; class InventoryImport implements ToArray, SkipsEmptyRows { @@ -98,6 +98,7 @@ class InventoryImport implements ToArray, SkipsEmptyRows } } sleep(2); - event(new StockUpdateEvent($onSkuIds, 1)); + // 批量更新 + event(new BatchStockUpdateEvent($onSkuIds)); } } diff --git a/app/Imports/NewSetImport.php b/app/Imports/NewSetImport.php index 0320a2d..e6e65ab 100644 --- a/app/Imports/NewSetImport.php +++ b/app/Imports/NewSetImport.php @@ -2,16 +2,15 @@ namespace App\Imports; +use App\Events\BatchStockUpdateEvent; use App\Jobs\SyncCostToMiaoXuan; use App\Models\DailyStockRecord; use App\Models\GoodsSku; -use App\Models\TodayPrice; use App\Utils\DateTimeUtils; use Exception; use Maatwebsite\Excel\Concerns\SkipsEmptyRows; use Maatwebsite\Excel\Concerns\ToArray; use App\Utils\ArrayUtils; -use App\Events\StockUpdateEvent; class NewSetImport implements ToArray, SkipsEmptyRows { @@ -54,11 +53,14 @@ class NewSetImport implements ToArray, SkipsEmptyRows SyncCostToMiaoXuan::dispatch($row[0], $row[3]); $updateIds[] = $goodsSku['id']; // 今日到货 - $record = DailyStockRecord::query()->where('sku_id', $goodsSku['id'])->where('day', $day)->first(['id', 'arrived_today_num']); + $record = DailyStockRecord::query() + ->where('sku_id', $goodsSku['id']) + ->where('day', $day)->first(['id', 'arrived_today_num']); $record->arrived_today_num += $row[2]; $record->save(); } sleep(2); - event(new StockUpdateEvent($updateIds, 1)); + // 批量更新 + event(new BatchStockUpdateEvent($updateIds)); } } diff --git a/app/Jobs/BusinessGoodsSkuIncrQuantity.php b/app/Jobs/BusinessGoodsSkuIncrQuantity.php index 2cef28c..3a8ed17 100644 --- a/app/Jobs/BusinessGoodsSkuIncrQuantity.php +++ b/app/Jobs/BusinessGoodsSkuIncrQuantity.php @@ -14,7 +14,7 @@ class BusinessGoodsSkuIncrQuantity implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $shop; - public $businessGoods; + public $businessGoodsSku; public $num; public $isIncremental = true; @@ -23,10 +23,10 @@ class BusinessGoodsSkuIncrQuantity implements ShouldQueue * * @return void */ - public function __construct($shop, $businessGoods, $num, $isIncremental) + public function __construct($shop, $businessGoodsSku, $num, $isIncremental) { $this->shop = $shop; - $this->businessGoods = $businessGoods; + $this->businessGoodsSku = $businessGoodsSku; $this->num = $num; $this->isIncremental = $isIncremental; } @@ -38,8 +38,8 @@ class BusinessGoodsSkuIncrQuantity implements ShouldQueue */ public function handle() { - if ($this->businessGoods) { - BusinessFactory::init()->make($this->shop['plat_id'])->setShopWithId($this->shop['id'])->incrQuantity($this->businessGoods, $this->num, $this->isIncremental); + if ($this->businessGoodsSku) { + BusinessFactory::init()->make($this->shop['plat_id'])->setShopWithId($this->shop['id'])->incrQuantity($this->businessGoodsSku, $this->num, $this->isIncremental); } } } diff --git a/app/Listeners/BatchStockUpdateListener.php b/app/Listeners/BatchStockUpdateListener.php new file mode 100644 index 0000000..e80ebd4 --- /dev/null +++ b/app/Listeners/BatchStockUpdateListener.php @@ -0,0 +1,50 @@ +whereNotIn('status', [Shop::$STATUS_UNAUTHORIZED, Shop::$STATUS_STOP])->get(['id', 'plat_id']); + if (empty($shops)) { + return false; + } + foreach ($shops as $shop) { + foreach ($event->goodsSkus as $goodsSku) { + $num = $goodsSku->stock; + $businessGoodsSkus = BusinessGoodsSku::query() + ->select(['goods_id', 'sku_id', 'external_sku_id']) + ->where('shop_id', $shop->id) + ->where('is_sync', 1) + ->where('external_sku_id', $goodsSku->external_sku_id) + ->get(); + BusinessFactory::init()->make($shop['plat_id'])->setShopWithId($shop['id'])->batchIncrQuantity($businessGoodsSkus->toArray(), $num, false); + } + } + } +} diff --git a/app/Listeners/CombinationGoodsStockUpdateListener.php b/app/Listeners/CombinationGoodsStockUpdateListener.php index f77a8f8..8456450 100644 --- a/app/Listeners/CombinationGoodsStockUpdateListener.php +++ b/app/Listeners/CombinationGoodsStockUpdateListener.php @@ -3,10 +3,12 @@ namespace App\Listeners; use App\Models\CombinationGood; +use App\Models\DailyStockRecord; use App\Models\GoodsSku; +use App\Utils\DateTimeUtils; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; -use App\Events\StockUpdateEvent; +use App\Events\BatchStockUpdateEvent; class CombinationGoodsStockUpdateListener { @@ -28,18 +30,19 @@ class CombinationGoodsStockUpdateListener */ public function handle($event) { - if ($event->combinationGoodsUpdate) { + if (!$event->combinationGoodsUpdate) { return false; } $updateIds = $combinationGoodsIds = $combinationGoodsItemIds = []; - if ($event->goodsSku) { + if (!empty($event->goodsSku)) { if ($event->goodsSku->is_combination) { $combinationGoodsIds[] = $event->goodsSku->id; } else { $combinationGoodsItemIds[] = $event->goodsSku->id; } } - if ($event->goodsSkus) { + + if (!empty($event->goodsSkus)) { foreach ($event->goodsSkus as $sku) { if ($sku->is_combination) { $combinationGoodsIds[] = $sku->id; @@ -55,21 +58,20 @@ class CombinationGoodsStockUpdateListener ->whereIn('goods_sku_id', $combinationGoodsIds) ->get(); foreach ($combinationGoods as $item) { - $sku = GoodsSku::query()->find($item['item_id']); - $sku->stock -= $item['item_num']; - $sku->save(); - $updateIds[] = $sku->id; + $goodsSku = GoodsSku::query()->find($item['item_id']); + $stock = $goodsSku->stock - $item['item_num']; + [$status, $stock] = $this->checkStatusAndStock($goodsSku, $stock); + $goodsSku->status = $status; + $goodsSku->stock = $stock; + $goodsSku->save(); + $updateIds[] = $goodsSku->id; } } // 计算主商品库存 if ($combinationGoodsItemIds) { $goodsSkuIds = CombinationGood::query() ->whereIn('item_id', $combinationGoodsItemIds) - ->pluck('goods_sku_id') - ->toArray(); - if (empty($goodsSkuIds)) { - return false; - } + ->pluck('goods_sku_id'); foreach ($goodsSkuIds as $goodsSkuId) { $combinationGoods = CombinationGood::query() ->with('goodsSkuItem:id,stock') @@ -80,13 +82,37 @@ class CombinationGoodsStockUpdateListener $stock[] = (int)($goods['goodsSkuItem']['stock'] / $goods['item_num']); } $stock = min($stock); - GoodsSku::query()->where('id', $goodsSkuId)->update(['stock' => $stock]); + $goodsSku = GoodsSku::query()->find($goodsSkuId); + [$status, $stock] = $this->checkStatusAndStock($goodsSku, $stock); + $goodsSku->status = $status; + $goodsSku->stock = $stock; + $goodsSku->save(); $updateIds[] = $goodsSkuId; } } if ($updateIds) { $updateIds = array_unique($updateIds); - event(new StockUpdateEvent($updateIds, 1, true)); + // 批量更新 + event(new BatchStockUpdateEvent($updateIds, false)); } } + + private function checkStatusAndStock($goodsSku, $stock) + { + if (0 >= $stock) { + $status = GoodsSku::$STATUS_DOWN; + } else { + $status = GoodsSku::$STATUS_ON_SALE; + } + $arrivedTodayNum = DailyStockRecord::query() + ->where('day', DateTimeUtils::getToday()) + ->where('sku_id', $goodsSku->id) + ->value('arrived_today_num'); + if (20 < $arrivedTodayNum + $goodsSku->yesterday_num && 4 > $stock) { + $status = GoodsSku::$STATUS_DOWN; + $stock = 0; + } + + return [$status, $stock]; + } } diff --git a/app/Listeners/StockUpdateListener.php b/app/Listeners/StockUpdateListener.php index ecd1ea4..4908e78 100644 --- a/app/Listeners/StockUpdateListener.php +++ b/app/Listeners/StockUpdateListener.php @@ -3,7 +3,6 @@ namespace App\Listeners; use App\Events\StockUpdateEvent; -use App\Jobs\BusinessGoodsSkuIncrQuantity; use App\Models\BusinessGoodsSku; use App\Models\Shop; use Illuminate\Contracts\Queue\ShouldQueue; @@ -32,43 +31,17 @@ class StockUpdateListener { $shops = Shop::query()->whereNotIn('status', [Shop::$STATUS_UNAUTHORIZED, Shop::$STATUS_STOP])->get(['id', 'plat_id']); if (empty($shops)) { - return; + return false; } foreach ($shops as $shop) { - if (isset($event->goodsSku)) { - $num = $event->goodsSku->stock; - $businessGoodsSkus = BusinessGoodsSku::query() - ->select(['goods_id', 'sku_id', 'external_sku_id']) - ->where('shop_id', $shop->id) - ->where('is_sync', 1) - ->where('external_sku_id', $event->goodsSku->external_sku_id) - ->get(); - if ($event->isBatch) { - BusinessFactory::init()->make($shop['plat_id'])->setShopWithId($shop['id'])->batchIncrQuantity($businessGoodsSkus->toArray(), $num, false); - } else { - foreach ($businessGoodsSkus as $businessGoodsSku) { - BusinessGoodsSkuIncrQuantity::dispatch($shop, $businessGoodsSku->toArray(), $num, false); - } - } - } - if (isset($event->goodsSkus)) { - foreach ($event->goodsSkus as $goodsSku) { - $num = $goodsSku->stock; - $businessGoodsSkus = BusinessGoodsSku::query() - ->select(['goods_id', 'sku_id', 'external_sku_id']) - ->where('shop_id', $shop->id) - ->where('is_sync', 1) - ->where('external_sku_id', $goodsSku->external_sku_id) - ->get(); - if ($event->isBatch) { - BusinessFactory::init()->make($shop['plat_id'])->setShopWithId($shop['id'])->batchIncrQuantity($businessGoodsSkus->toArray(), $num, false); - } else { - foreach ($businessGoodsSkus as $businessGoodsSku) { - BusinessGoodsSkuIncrQuantity::dispatch($shop, $businessGoodsSku->toArray(), $num, false); - } - } - } - } + $num = $event->goodsSku->stock; + $businessGoodsSkus = BusinessGoodsSku::query() + ->select(['goods_id', 'sku_id', 'external_sku_id']) + ->where('shop_id', $shop->id) + ->where('is_sync', 1) + ->where('external_sku_id', $event->goodsSku->external_sku_id) + ->get(); + BusinessFactory::init()->make($shop['plat_id'])->setShopWithId($shop['id'])->batchIncrQuantity($businessGoodsSkus->toArray(), $num, false); } } } diff --git a/app/Listeners/StockWarning.php b/app/Listeners/StockWarning.php deleted file mode 100644 index 3d5d52a..0000000 --- a/app/Listeners/StockWarning.php +++ /dev/null @@ -1,57 +0,0 @@ -goodsSku)) { - $event->goodsSku->status = 2; - if (0 >= $event->goodsSku->stock) { - $event->goodsSku->status = 0; - } - if (5 < $event->goodsSku->stock) { - $event->goodsSku->status = 1; - } - $event->goodsSku->save(); - } - if (isset($event->goodsSkus)) { - $warningIds = $normalIds = $downIds = []; - foreach ($event->goodsSkus as $goodsSku) { - if (0 >= $goodsSku['stock']) { - $downIds[] = $goodsSku['id']; - } elseif (5 < $goodsSku['stock']) { - $normalIds[] = $goodsSku['id']; - } else { - $warningIds[] = $goodsSku['id']; - } - } - if ($warningIds) { - GoodsSku::query()->whereIn('id', $warningIds)->update(['status' => 2]); - } - if ($normalIds) { - GoodsSku::query()->whereIn('id', $normalIds)->update(['status' => 1]); - } - if ($downIds) { - GoodsSku::query()->whereIn('id', $downIds)->update(['status' => 0]); - } - } - } -} diff --git a/app/Listeners/UpdateBusinessGoodsStock.php b/app/Listeners/UpdateBusinessGoodsStock.php index a8f436f..0e24f71 100644 --- a/app/Listeners/UpdateBusinessGoodsStock.php +++ b/app/Listeners/UpdateBusinessGoodsStock.php @@ -29,7 +29,7 @@ class UpdateBusinessGoodsStock implements ShouldQueue * Handle the event. * * @param BusinessOrdersUpdate $event - * @return void + * @return false|void */ public function handle(BusinessOrdersUpdate $event) { @@ -41,17 +41,19 @@ class UpdateBusinessGoodsStock implements ShouldQueue $log->target_id = $event->goodsSku->id ?? 0; $log->target_field = 'stock'; $log->user_id = 999; - $log->message = '未找到' . json_encode($event->businessGoods, 256); + $log->message = '未找到' . json_encode($event->businessGoodSku, 256); $log->save(); return false; } + $builder = Shop::query()->whereNotIn('status', [Shop::$STATUS_UNAUTHORIZED, Shop::$STATUS_STOP]); // 非订单影响库存变更,只更新本店铺下商品 - if (!isset($event->businessGoods['business_order_id'])) { - $builder->where('id', $event->businessGoods['shop_id']); + if (!isset($event->businessGoodSku['business_order_id'])) { + $builder->where('id', $event->businessGoodSku['shop_id']); } $shops = $builder->get(['id', 'plat_id']); + if (empty($shops)) { LogFile::info('可操作店铺为空'); return false; @@ -59,7 +61,11 @@ class UpdateBusinessGoodsStock implements ShouldQueue foreach ($shops as $shop) { $num = $event->goodsSku->stock; - $businessGoodsSkus = BusinessGoodsSku::query()->where('shop_id', $shop->id)->where('is_sync', 1)->where('external_sku_id', $event->businessGoods['external_sku_id'])->get(); + $businessGoodsSkus = BusinessGoodsSku::query() + ->where('shop_id', $shop->id) + ->where('is_sync', 1) + ->where('external_sku_id', $event->businessGoodSku['external_sku_id']) + ->get(); foreach ($businessGoodsSkus as $businessGoodsSku) { BusinessGoodsSkuIncrQuantity::dispatch($shop, $businessGoodsSku->toArray(), $num, false); } diff --git a/app/Models/GoodsSku.php b/app/Models/GoodsSku.php index 74c1383..a846f43 100644 --- a/app/Models/GoodsSku.php +++ b/app/Models/GoodsSku.php @@ -36,6 +36,9 @@ class GoodsSku extends Model protected $hidden = ['created_at']; + public static $STATUS_ON_SALE = 1; + public static $STATUS_DOWN = 0; + /** * 获取状态 * diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 4a0b710..dceb5f5 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -3,12 +3,13 @@ namespace App\Providers; use App\Events\BusinessOrdersUpdate; -use App\Events\GroupSetEvent; use App\Events\StockUpdateEvent; +use App\Events\GroupSetEvent; +use App\Events\BatchStockUpdateEvent; +use App\Listeners\BatchStockUpdateListener; use App\Listeners\CreateLogisticListener; use App\Listeners\GroupQueryListener; use App\Listeners\StockUpdateListener; -use App\Listeners\StockWarning; use App\Listeners\CombinationGoodsStockUpdateListener; use App\Listeners\UpdateBusinessGoodsStock; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -26,12 +27,14 @@ class EventServiceProvider extends ServiceProvider protected $listen = [ BusinessOrdersUpdate::class => [ UpdateBusinessGoodsStock::class, - StockWarning::class, + CombinationGoodsStockUpdateListener::class, + ], + BatchStockUpdateEvent::class => [ + BatchStockUpdateListener::class, CombinationGoodsStockUpdateListener::class, ], StockUpdateEvent::class => [ StockUpdateListener::class, - StockWarning::class, CombinationGoodsStockUpdateListener::class, ], GroupSetEvent::class => [