package services import ( "context" "fmt" "tyapi-server/internal/application/api/commands" "tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors/comb" "tyapi-server/internal/domains/api/services/processors/flxg" "tyapi-server/internal/domains/api/services/processors/ivyz" "tyapi-server/internal/domains/api/services/processors/jrzq" "tyapi-server/internal/domains/api/services/processors/qygl" "tyapi-server/internal/domains/api/services/processors/yysy" "tyapi-server/internal/domains/product/services" "tyapi-server/internal/infrastructure/external/tianyancha" "tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/yushan" "tyapi-server/internal/shared/interfaces" ) var ( ErrDatasource = processors.ErrDatasource ErrSystem = processors.ErrSystem ErrInvalidParam = processors.ErrInvalidParam ErrNotFound = processors.ErrNotFound ) type ApiRequestService struct { // 可注入依赖,如第三方服务、模型等 westDexService *westdex.WestDexService yushanService *yushan.YushanService tianYanChaService *tianyancha.TianYanChaService validator interfaces.RequestValidator processorDeps *processors.ProcessorDependencies combService *comb.CombService } func NewApiRequestService( westDexService *westdex.WestDexService, yushanService *yushan.YushanService, tianYanChaService *tianyancha.TianYanChaService, validator interfaces.RequestValidator, productManagementService *services.ProductManagementService, ) *ApiRequestService { // 创建组合包服务 combService := comb.NewCombService(productManagementService) // 创建处理器依赖容器 processorDeps := processors.NewProcessorDependencies(westDexService, yushanService, tianYanChaService, validator, combService) // 统一注册所有处理器 registerAllProcessors(combService) return &ApiRequestService{ westDexService: westDexService, yushanService: yushanService, tianYanChaService: tianYanChaService, validator: validator, processorDeps: processorDeps, combService: combService, } } // registerAllProcessors 统一注册所有处理器 func registerAllProcessors(combService *comb.CombService) { // 定义所有处理器映射 processorMap := map[string]processors.ProcessorFunc{ // FLXG系列处理器 "FLXG0V3B": flxg.ProcessFLXG0V3Bequest, "FLXG0V4B": flxg.ProcessFLXG0V4BRequest, "FLXG162A": flxg.ProcessFLXG162ARequest, "FLXG3D56": flxg.ProcessFLXG3D56Request, "FLXG54F5": flxg.ProcessFLXG54F5Request, "FLXG5876": flxg.ProcessFLXG5876Request, "FLXG75FE": flxg.ProcessFLXG75FERequest, "FLXG9687": flxg.ProcessFLXG9687Request, "FLXG970F": flxg.ProcessFLXG970FRequest, "FLXGC9D1": flxg.ProcessFLXGC9D1Request, "FLXGCA3D": flxg.ProcessFLXGCA3DRequest, "FLXGDEC7": flxg.ProcessFLXGDEC7Request, "FLXG8A3F": flxg.ProcessFLXG8A3FRequest, "FLXG5B2E": flxg.ProcessFLXG5B2ERequest, "FLXG0687": flxg.ProcessFLXG0687Request, "FLXGBC21": flxg.ProcessFLXGBC21Request, // JRZQ系列处理器 "JRZQ8203": jrzq.ProcessJRZQ8203Request, "JRZQ0A03": jrzq.ProcessJRZQ0A03Request, "JRZQ4AA8": jrzq.ProcessJRZQ4AA8Request, "JRZQDCBE": jrzq.ProcessJRZQDCBERequest, // QYGL系列处理器 "QYGL8261": qygl.ProcessQYGL8261Request, "QYGL2ACD": qygl.ProcessQYGL2ACDRequest, "QYGL45BD": qygl.ProcessQYGL45BDRequest, "QYGL6F2D": qygl.ProcessQYGL6F2DRequest, "QYGL8271": qygl.ProcessQYGL8271Request, "QYGLB4C0": qygl.ProcessQYGLB4C0Request, "QYGL23T7": qygl.ProcessQYGL23T7Request, // 企业三要素验证 // YYSY系列处理器 "YYSYD50F": yysy.ProcessYYSYD50FRequest, "YYSY09CD": yysy.ProcessYYSY09CDRequest, "YYSY4B21": yysy.ProcessYYSY4B21Request, "YYSY4B37": yysy.ProcessYYSY4B37Request, "YYSY6F2E": yysy.ProcessYYSY6F2ERequest, "YYSYBE08": yysy.ProcessYYSYBE08Request, "YYSYF7DB": yysy.ProcessYYSYF7DBRequest, // IVYZ系列处理器 "IVYZ0B03": ivyz.ProcessIVYZ0B03Request, "IVYZ2125": ivyz.ProcessIVYZ2125Request, "IVYZ385E": ivyz.ProcessIVYZ385ERequest, "IVYZ5733": ivyz.ProcessIVYZ5733Request, "IVYZ9363": ivyz.ProcessIVYZ9363Request, "IVYZ9A2B": ivyz.ProcessIVYZ9A2BRequest, "IVYZADEE": ivyz.ProcessIVYZADEERequest, "IVYZ7F2A": ivyz.ProcessIVYZ7F2ARequest, "IVYZ4E8B": ivyz.ProcessIVYZ4E8BRequest, "IVYZ1C9D": ivyz.ProcessIVYZ1C9DRequest, "IVYZGZ08": ivyz.ProcessIVYZGZ08Request, // COMB系列处理器 "COMB298Y": comb.ProcessCOMB298YRequest, "COMB86PM": comb.ProcessCOMB86PMRequest, } // 批量注册到组合包服务 for apiCode, processor := range processorMap { combService.RegisterProcessor(apiCode, processor) } // 同时设置全局处理器映射 RequestProcessors = processorMap } // 注册API处理器 - 现在通过registerAllProcessors统一管理 var RequestProcessors map[string]processors.ProcessorFunc // PreprocessRequestApi 调用指定的请求处理函数 func (a *ApiRequestService) PreprocessRequestApi(ctx context.Context, apiCode string, params []byte, options *commands.ApiCallOptions) ([]byte, error) { if processor, exists := RequestProcessors[apiCode]; exists { // 设置Options到依赖容器 deps := a.processorDeps.WithOptions(options) return processor(ctx, params, deps) } return nil, fmt.Errorf("%s: 未找到处理器: %s", ErrSystem, apiCode) }