log->error('CancelOrderConsumer:error:NoData:'.json_encode($data)); return Result::ACK; } $orderId = (int)$data['order_id']; $orderType = (int)$data['type']; $orderInfo = match ($orderType) { OrderCode::ORDER_TYPE_GOOD => $this->orderModel->getInfoById($orderId), default => null, }; if (empty($orderInfo)) { $this->log->debug('CancelOrderConsumer:error:NoOrderData:'.json_encode($data)); return Result::ACK; } if ($orderInfo->status != OrderCode::WAIT_PAY) { $this->log->debug('CancelOrderConsumer:error:orderStatusError:'.json_encode($orderInfo->toArray())); return Result::ACK; } try { Db::beginTransaction(); $this->rollbackCoupon($orderType, $orderInfo); $orderInfo->status = OrderCode::CANCEL; $updateGoods = $this->orderGoodModel->where('order_id',$orderInfo->id)->update([ 'status' => OrderCode::CANCEL, ]); if (!$orderInfo->save() || !$updateGoods) throw new Exception('CancelOrderConsumer:error:orderStatusSaveError:'.json_encode($orderInfo->toArray())); Db::commit(); }catch (Exception $e){ Db::rollback(); $this->log->debug($e->getMessage()); return Result::ACK; } $this->sendStockMq($orderInfo->id,OrderCode::CANCEL); return Result::ACK; } }