package processors import ( "context" "tyapi-server/internal/application/api/commands" "tyapi-server/internal/infrastructure/external/alicloud" "tyapi-server/internal/infrastructure/external/tianyancha" "tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/yushan" "tyapi-server/internal/shared/interfaces" ) // CombServiceInterface 组合包服务接口 type CombServiceInterface interface { ProcessCombRequest(ctx context.Context, params []byte, deps *ProcessorDependencies, packageCode string) (*CombinedResult, error) } // CallContext CallApi调用上下文,包含调用相关的数据 type CallContext struct { ContractCode string // 合同编号 } // ProcessorDependencies 处理器依赖容器 type ProcessorDependencies struct { WestDexService *westdex.WestDexService YushanService *yushan.YushanService TianYanChaService *tianyancha.TianYanChaService AlicloudService *alicloud.AlicloudService Validator interfaces.RequestValidator CombService CombServiceInterface // Changed to interface to break import cycle Options *commands.ApiCallOptions // 添加Options支持 CallContext *CallContext // 添加CallApi调用上下文 } // NewProcessorDependencies 创建处理器依赖容器 func NewProcessorDependencies( westDexService *westdex.WestDexService, yushanService *yushan.YushanService, tianYanChaService *tianyancha.TianYanChaService, alicloudService *alicloud.AlicloudService, validator interfaces.RequestValidator, combService CombServiceInterface, // Changed to interface ) *ProcessorDependencies { return &ProcessorDependencies{ WestDexService: westDexService, YushanService: yushanService, TianYanChaService: tianYanChaService, AlicloudService: alicloudService, Validator: validator, CombService: combService, Options: nil, // 初始化为nil,在调用时设置 CallContext: nil, // 初始化为nil,在调用时设置 } } // WithOptions 设置Options的便捷方法 func (deps *ProcessorDependencies) WithOptions(options *commands.ApiCallOptions) *ProcessorDependencies { deps.Options = options return deps } // WithCallContext 设置CallContext的便捷方法 func (deps *ProcessorDependencies) WithCallContext(callContext *CallContext) *ProcessorDependencies { deps.CallContext = callContext return deps } // ProcessorFunc 处理器函数类型定义 type ProcessorFunc func(ctx context.Context, params []byte, deps *ProcessorDependencies) ([]byte, error) // CombinedResult 组合结果 type CombinedResult struct { Responses []*SubProductResult `json:"responses"` // 子接口响应列表 } // SubProductResult 子产品处理结果 type SubProductResult struct { ApiCode string `json:"api_code"` // 子接口标识 Data interface{} `json:"data"` // 子接口返回数据 Success bool `json:"success"` // 是否成功 Error string `json:"error,omitempty"` // 错误信息(仅在失败时) SortOrder int `json:"-"` // 排序字段,不输出到JSON }