pluck(null, 'external_sku_id')->toArray(); $externalSkuIds = collect($requestSkus)->pluck('external_sku_id')->toArray(); $skus = GoodsSku::query() ->whereIn('external_sku_id', $externalSkuIds) ->get(['id', 'external_sku_id']) ->toArray(); $today = DateTimeUtils::getToday(); $dateTime = date('Y-m-d H:i:s'); $updateIds = []; foreach ($skus as $sku) { if (!in_array($sku['external_sku_id'], $externalSkuIds)) { continue; } // 更新 $record = DailyStockRecord::query()->where('sku_id', $sku['id'])->where('day', $today)->firstOrCreate([ 'sku_id' => $sku['id'], 'day' => $today, ]); $record->inventory = $requestSkusMap[$sku['external_sku_id']]['inventory']; $record->inventory_time = $dateTime; $record->save(); //查询sku当前未发货的数量 目前数据看着有问题暂不操作 //库存修改 GoodsSku::query()->where('id', $sku['id'])->lockForUpdate()->update([ 'stock' => $requestSkusMap[$sku['external_sku_id']]['inventory'] ]); $updateIds[] = $sku['id']; } // 批量更新 event(new BatchStockUpdateEvent($updateIds)); } }