Files
tyapi-server/internal/domains/api/services/processors/comb/README.md
2025-09-20 23:29:49 +08:00

2.6 KiB
Raw Blame History

组合包处理器说明

🚀 动态组合包机制

从现在开始,组合包支持动态处理机制,大大简化了组合包的开发和维护工作。

📋 工作原理

1. 自动识别

  • 所有以 COMB 开头的API编码会被自动识别为组合包
  • 系统会自动调用通用组合包处理器处理请求

2. 处理流程

  1. 优先级检查:首先检查是否有注册的自定义处理器
  2. 通用处理如果没有自定义处理器且API编码以COMB开头使用通用处理器
  3. 数据库驱动:根据数据库中的组合包配置自动调用相应的子产品处理器

🛠️ 使用方式

普通组合包(无自定义逻辑)

只需要在数据库配置,无需编写任何代码!

  1. products 表中创建组合包产品:

    INSERT INTO products (code, name, is_package, ...) 
    VALUES ('COMB1234', '新组合包', true, ...);
    
  2. product_package_items 表中配置子产品:

    INSERT INTO product_package_items (package_id, product_id, sort_order) 
    VALUES 
    ('组合包产品ID', '子产品1ID', 1),
    ('组合包产品ID', '子产品2ID', 2);
    
  3. 直接调用无需任何额外编码API立即可用

自定义组合包(有特殊逻辑)

如果需要对组合包结果进行后处理,才需要编写代码:

  1. 创建处理器文件combXXXX_processor.go
  2. 注册处理器:在 api_request_service.go 中注册
  3. 实现自定义逻辑:在处理器中实现特殊业务逻辑

📁 现有组合包示例

COMB86PM自定义处理器

// 有自定义逻辑重命名子产品ApiCode
for _, resp := range combinedResult.Responses {
    if resp.ApiCode == "FLXGBC21" {
        resp.ApiCode = "FLXG54F5"
    }
}

COMB298Y通用处理器

  • 无需编码:已删除专门的处理器文件
  • 自动处理:通过数据库配置自动工作

优势

  1. 零配置:普通组合包只需数据库配置,无需编码
  2. 灵活性:特殊需求仍可通过自定义处理器实现
  3. 维护性:减少重复代码,统一处理逻辑
  4. 扩展性:新增组合包极其简单,配置即用

🔧 开发建议

  1. 优先使用通用处理器:除非有特殊业务逻辑,否则不要编写自定义处理器
  2. 命名规范:组合包编码必须以 COMB 开头
  3. 数据库配置:确保组合包在数据库中正确配置了 is_package=true 和子产品关系
  4. 排序控制:通过 sort_order 字段控制子产品在响应中的顺序