组合包处理器说明
🚀 动态组合包机制
从现在开始,组合包支持动态处理机制,大大简化了组合包的开发和维护工作。
📋 工作原理
1. 自动识别
- 所有以
COMB开头的API编码会被自动识别为组合包 - 系统会自动调用通用组合包处理器处理请求
2. 处理流程
- 优先级检查:首先检查是否有注册的自定义处理器
- 通用处理:如果没有自定义处理器,且API编码以COMB开头,使用通用处理器
- 数据库驱动:根据数据库中的组合包配置自动调用相应的子产品处理器
🛠️ 使用方式
普通组合包(无自定义逻辑)
只需要在数据库配置,无需编写任何代码!
-
在
products表中创建组合包产品:INSERT INTO products (code, name, is_package, ...) VALUES ('COMB1234', '新组合包', true, ...); -
在
product_package_items表中配置子产品:INSERT INTO product_package_items (package_id, product_id, sort_order) VALUES ('组合包产品ID', '子产品1ID', 1), ('组合包产品ID', '子产品2ID', 2); -
直接调用:无需任何额外编码,API立即可用!
自定义组合包(有特殊逻辑)
如果需要对组合包结果进行后处理,才需要编写代码:
- 创建处理器文件:
combXXXX_processor.go - 注册处理器:在
api_request_service.go中注册 - 实现自定义逻辑:在处理器中实现特殊业务逻辑
📁 现有组合包示例
COMB86PM(自定义处理器)
// 有自定义逻辑:重命名子产品ApiCode
for _, resp := range combinedResult.Responses {
if resp.ApiCode == "FLXGBC21" {
resp.ApiCode = "FLXG54F5"
}
}
COMB298Y(通用处理器)
- 无需编码:已删除专门的处理器文件
- 自动处理:通过数据库配置自动工作
✅ 优势
- 零配置:普通组合包只需数据库配置,无需编码
- 灵活性:特殊需求仍可通过自定义处理器实现
- 维护性:减少重复代码,统一处理逻辑
- 扩展性:新增组合包极其简单,配置即用
🔧 开发建议
- 优先使用通用处理器:除非有特殊业务逻辑,否则不要编写自定义处理器
- 命名规范:组合包编码必须以
COMB开头 - 数据库配置:确保组合包在数据库中正确配置了
is_package=true和子产品关系 - 排序控制:通过
sort_order字段控制子产品在响应中的顺序