log->error('OrderGoodStockConsumer:error:NoData:'.json_encode($data)); return Result::ACK; } $orderId = (int)$data['order_id']; $this->orderGoodArr = []; $this->skuArr = []; $this->orderGoodArr = $this->orderGoodModel->getGoodIdsByOrderId($orderId); if (empty($this->orderGoodArr)) { $this->log->debug('OrderGoodStockConsumer:error:NoOrderGoodData:'.json_encode($orderId)); return Result::ACK; } $this->skuArr = $this->skuModel->getDataArrByIds(array_column($this->orderGoodArr, 'sku_id')); if (empty($this->skuArr)) { $this->log->debug('OrderGoodStockConsumer:error:NoSkuData:'.json_encode(array_column($this->orderGoodArr, 'sku_id'))); return Result::ACK; } $this->updateArr = []; try { match ($data['type']) { OrderCode::WAIT_PAY => $this->waitPaySubStock(), OrderCode::UNCOMPLETED_REFUND => $this->unFinishRefundAddStock(), OrderCode::CANCEL => $this->cancelAddStock(), OrderCode::FINISH_REFUND => $this->finishRefundUpdateData(), default => throw new Exception('OrderGoodStockConsumer:error:无效的订单类型') }; if (empty($this->updateArr)) { $this->log->debug('OrderGoodStockConsumer:error:NoUpdateData:skuInfo:'.json_encode($this->skuArr).':orderGoodArr:'.json_encode($this->orderGoodArr)); return Result::ACK; } if (!(new Sku)->update($this->updateArr)) { $this->log->debug('OrderGoodStockConsumer:error:UpdateSkuDataFail:'.json_encode($this->updateArr)); return Result::ACK; } return Result::ACK; } catch (Exception $e) { $this->log->error($e->getMessage()); return Result::ACK; } } /** * @return void */ private function waitPaySubStock(): void { foreach ($this->orderGoodArr as $orderGood) { $this->updateArr[] = [ 'id' => $orderGood['sku_id'], '' ]; } } /** * @return void */ private function unFinishRefundAddStock(): void { foreach ($this->orderGoodArr as $orderGood) { $this->updateArr[] = [ 'id' => $orderGood['sku_id'], '' ]; } } /** * @return void */ private function cancelAddStock(): void { foreach ($this->orderGoodArr as $orderGood) { $this->updateArr[] = [ 'id' => $orderGood['sku_id'], '' ]; } } /** * @return void */ private function finishRefundUpdateData(): void { foreach ($this->orderGoodArr as $orderGood) { $this->updateArr[] = [ 'id' => $orderGood['sku_id'], '' ]; } } }