v0.1
This commit is contained in:
135
internal/domains/api/services/api_request_service.go
Normal file
135
internal/domains/api/services/api_request_service.go
Normal file
@@ -0,0 +1,135 @@
|
||||
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请求, 未找到相应的处理程序")
|
||||
}
|
||||
Reference in New Issue
Block a user