success || $context->needDatabaseOperation || !empty($context->voiceMessage)) { return false; } return true; } /** * 具体处理逻辑:最后节点处理 */ protected function doHandle(ProcessContext $context): ProcessContext { if (!$context->success || $context->needDatabaseOperation || !empty($context->voiceMessage)) return $context; // 无节点命中 Logger::debug('当前刷卡无节点命中 currentStep={} readerType={} expectedNextStep={}', [ $context->currentStep ?: '(空)', $context->readerType, $context->expectedNextStep ]); // 如果有预期的下一步,则返回错误 if (!empty($context->expectedNextStep) && $context->expectedNextStep != VoiceMessage::NONE) { Logger::debug("节点期望: {$context->expectedNextStep->value}"); return $context->setError($context->expectedNextStep); } // 异常流程 Logger::error("异常流程,所有节点处理完成,无匹配节点并且无预期的下一步"); $context->setError(VoiceMessage::UNKNOWN_ERROR); return $context; } }