136 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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/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
 | |
| 	validator      interfaces.RequestValidator
 | |
| 	processorDeps  *processors.ProcessorDependencies
 | |
| 	combService    *comb.CombService
 | |
| }
 | |
| 
 | |
| func NewApiRequestService(
 | |
| 	westDexService *westdex.WestDexService,
 | |
| 	yushanService *yushan.YushanService,
 | |
| 	validator interfaces.RequestValidator,
 | |
| 	productManagementService *services.ProductManagementService,
 | |
| ) *ApiRequestService {
 | |
| 	// 创建组合包服务
 | |
| 	combService := comb.NewCombService(productManagementService)
 | |
| 
 | |
| 	// 创建处理器依赖容器
 | |
| 	processorDeps := processors.NewProcessorDependencies(westDexService, yushanService, validator, combService)
 | |
| 
 | |
| 	// 统一注册所有处理器
 | |
| 	registerAllProcessors(combService)
 | |
| 
 | |
| 	return &ApiRequestService{
 | |
| 		westDexService: westDexService,
 | |
| 		yushanService:  yushanService,
 | |
| 		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,
 | |
| 
 | |
| 		// 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,
 | |
| 
 | |
| 		// 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,
 | |
| 
 | |
| 		// COMB系列处理器
 | |
| 		"COMB298Y": comb.ProcessCOMB298YRequest,
 | |
| 	}
 | |
| 
 | |
| 	// 批量注册到组合包服务
 | |
| 	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到依赖容器
 | |
| 		depsWithOptions := a.processorDeps.WithOptions(options)
 | |
| 		return processor(ctx, params, depsWithOptions)
 | |
| 	}
 | |
| 	return nil, fmt.Errorf("%w: %s", ErrSystem, "api请求, 未找到相应的处理程序")
 | |
| }
 |