body); if (!is_array($data)) { Yii::error("Invalid stock message format: {$msg->body}", 'rabbitmq.stock'); return ConsumerInterface::MSG_REJECT; } Yii::info("Processing stock message: " . json_encode($data), 'rabbitmq.stock'); // 根据操作类型分发处理 $action = $data['action'] ?? null; switch ($action) { case 'add': $result = $this->handleAddStock($data); break; case 'reduce': $result = $this->handleReduceStock($data); break; case 'adjust': $result = $this->handleAdjustStock($data); break; default: Yii::warning("Unknown stock action: {$action}", 'rabbitmq.stock'); $result = false; } if ($result) { Yii::info("Stock message processed successfully", 'rabbitmq.stock'); return ConsumerInterface::MSG_ACK; } else { Yii::error("Stock message processing failed", 'rabbitmq.stock'); return ConsumerInterface::MSG_REQUEUE; } } catch (\Exception $e) { Yii::error("Stock consumer exception: " . $e->getMessage(), 'rabbitmq.stock'); return ConsumerInterface::MSG_REQUEUE; } } /** * 处理库存补充(增加) * * @param array $data 消息数据,包含 material_id, quantity 等 * @return bool 处理结果 */ private function handleAddStock($data) { // TODO: 实现库存增加业务逻辑 // 调用对应的 Service 或 Class 层处理 // 例如: StockClass::addStock($data); return true; } /** * 处理库存扣减 * * @param array $data 消息数据,包含 material_id, quantity 等 * @return bool 处理结果 */ private function handleReduceStock($data) { // TODO: 实现库存扣减业务逻辑 // 调用对应的 Service 或 Class 层处理 // 例如: StockClass::reduceStock($data); return true; } /** * 处理库存调整 * * @param array $data 消息数据,包含 material_id, quantity, type 等 * @return bool 处理结果 */ private function handleAdjustStock($data) { // TODO: 实现库存调整业务逻辑 // 调用对应的 Service 或 Class 层处理 // 例如: StockClass::adjustStock($data); return true; } }