{# 映射器模板 #} {% if part == 'header' %} #pragma once #include "deserializer.h" #include "serializer.h" /** * 消息映射器 * 将{{ source_message.full_name }}映射到{{ target_message.full_name }} */ class MessageMapper { public: MessageMapper(); // 执行映射 {{ target_message.system_name }}{{ target_message.message_type }} map( const {{ source_message.system_name }}{{ source_message.message_type }}& source); private: // 各个字段的映射函数 {% for edge in mapping_path %} void map_{{ edge.mapping.source_field.name }}_to_{{ edge.mapping.target_field.name }}( const {{ source_message.system_name }}{{ source_message.message_type }}& source, {{ target_message.system_name }}{{ target_message.message_type }}& target); {% endfor %} }; {% else %} #include "mapper.h" #include #include MessageMapper::MessageMapper() { } {{ target_message.system_name }}{{ target_message.message_type }} MessageMapper::map(const {{ source_message.system_name }}{{ source_message.message_type }}& source) { {{ target_message.system_name }}{{ target_message.message_type }} target; {% for edge in mapping_path %} // 映射: {{ edge.mapping.source_field.full_name }} -> {{ edge.mapping.target_field.full_name }} map_{{ edge.mapping.source_field.name }}_to_{{ edge.mapping.target_field.name }}(source, target); {% endfor %} return target; } {% for edge in mapping_path %} void MessageMapper::map_{{ edge.mapping.source_field.name }}_to_{{ edge.mapping.target_field.name }}( const {{ source_message.system_name }}{{ source_message.message_type }}& source, {{ target_message.system_name }}{{ target_message.message_type }}& target) { {% if edge.mapping.operator.value == 'DIRECT' %} // 直接赋值 target.{{ edge.mapping.target_field.name }} = source.{{ edge.mapping.source_field.name }}; {% elif edge.mapping.operator.value == 'ADD' %} // 加法运算 target.{{ edge.mapping.target_field.name }} = source.{{ edge.mapping.source_field.name }} + {{ edge.mapping.operand }}; {% elif edge.mapping.operator.value == 'MULTIPLY' %} // 乘法运算 target.{{ edge.mapping.target_field.name }} = source.{{ edge.mapping.source_field.name }} * {{ edge.mapping.operand }}; {% else %} // 默认直接赋值 target.{{ edge.mapping.target_field.name }} = source.{{ edge.mapping.source_field.name }}; {% endif %} } {% endfor %} {% endif %}