diff --git a/app/Amqp/Consumer/OrderGoodStockConsumer.php b/app/Amqp/Consumer/OrderGoodStockConsumer.php index 683addd..657732c 100644 --- a/app/Amqp/Consumer/OrderGoodStockConsumer.php +++ b/app/Amqp/Consumer/OrderGoodStockConsumer.php @@ -21,6 +21,7 @@ use Hyperf\Di\Annotation\Inject; use PhpAmqpLib\Message\AMQPMessage; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; +use Throwable; #[Consumer(exchange: 'OrderGoodStock', routingKey: 'OrderGoodStock', queue: 'OrderGoodStock.change', name: "OrderGoodStockConsumer", nums: 1)] class OrderGoodStockConsumer extends ConsumerMessage @@ -113,14 +114,23 @@ class OrderGoodStockConsumer extends ConsumerMessage return Result::ACK; } - $res = Db::table('sku')->update($this->updateArr); - if (!$res) { - $this->log->debug('OrderGoodStockConsumer:error:UpdateSkuDataFail:'.json_encode($this->updateArr)); + $updateModel = new Sku(); + try { + Db::beginTransaction(); + + foreach (array_chunk($this->updateArr, 500) as $chunk) { + foreach ($chunk as $item) { + $updateModel->where('id',$item['id'])->update(array_diff_key($item, ['id' => null])); + } + } + + Db::commit(); // 确认提交 + } catch (Throwable $e) { + Db::rollBack(); // 出现异常时回滚 + $this->log->debug('OrderGoodStockConsumer:error:UpdateSkuDataFail:msg:'.$e->getMessage().':data:'.json_encode($this->updateArr)); return Result::ACK; } - $this->log->Debug('OrderGoodStockConsumer:'.json_encode($this->updateArr).':'.json_encode($res)); - return Result::ACK; } catch (Exception $e) { $this->log->error($e->getMessage());