Files
tyapi-server/internal/domains/api/services/api_request_service.go

158 lines
5.7 KiB
Go
Raw Normal View History

2025-07-28 01:46:39 +08:00
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"
2025-08-03 23:30:30 +08:00
"tyapi-server/internal/domains/api/services/processors/qcxg"
2025-07-28 01:46:39 +08:00
"tyapi-server/internal/domains/api/services/processors/qygl"
"tyapi-server/internal/domains/api/services/processors/yysy"
"tyapi-server/internal/domains/product/services"
2025-08-04 17:16:38 +08:00
"tyapi-server/internal/infrastructure/external/alicloud"
2025-07-30 00:51:22 +08:00
"tyapi-server/internal/infrastructure/external/tianyancha"
2025-07-28 01:46:39 +08:00
"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 {
// 可注入依赖,如第三方服务、模型等
2025-07-30 00:51:22 +08:00
westDexService *westdex.WestDexService
yushanService *yushan.YushanService
tianYanChaService *tianyancha.TianYanChaService
2025-08-04 17:16:38 +08:00
alicloudService *alicloud.AlicloudService
2025-07-30 00:51:22 +08:00
validator interfaces.RequestValidator
processorDeps *processors.ProcessorDependencies
combService *comb.CombService
2025-07-28 01:46:39 +08:00
}
func NewApiRequestService(
westDexService *westdex.WestDexService,
yushanService *yushan.YushanService,
2025-07-30 00:51:22 +08:00
tianYanChaService *tianyancha.TianYanChaService,
2025-08-04 17:16:38 +08:00
alicloudService *alicloud.AlicloudService,
2025-07-28 01:46:39 +08:00
validator interfaces.RequestValidator,
productManagementService *services.ProductManagementService,
) *ApiRequestService {
// 创建组合包服务
combService := comb.NewCombService(productManagementService)
// 创建处理器依赖容器
2025-08-04 17:16:38 +08:00
processorDeps := processors.NewProcessorDependencies(westDexService, yushanService, tianYanChaService, alicloudService, validator, combService)
2025-07-28 01:46:39 +08:00
// 统一注册所有处理器
registerAllProcessors(combService)
return &ApiRequestService{
2025-07-30 00:51:22 +08:00
westDexService: westDexService,
yushanService: yushanService,
tianYanChaService: tianYanChaService,
2025-08-04 17:16:38 +08:00
alicloudService: alicloudService,
2025-07-30 00:51:22 +08:00
validator: validator,
processorDeps: processorDeps,
combService: combService,
2025-07-28 01:46:39 +08:00
}
}
// 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,
2025-08-03 18:46:53 +08:00
"FLXG0687": flxg.ProcessFLXG0687Request,
2025-08-03 19:04:25 +08:00
"FLXGBC21": flxg.ProcessFLXGBC21Request,
2025-07-28 01:46:39 +08:00
// 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,
2025-07-30 00:51:22 +08:00
"QYGL23T7": qygl.ProcessQYGL23T7Request, // 企业三要素验证
2025-07-28 01:46:39 +08:00
// 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,
2025-08-03 18:46:53 +08:00
"IVYZGZ08": ivyz.ProcessIVYZGZ08Request,
2025-07-28 01:46:39 +08:00
// COMB系列处理器
"COMB298Y": comb.ProcessCOMB298YRequest,
2025-08-02 05:28:59 +08:00
"COMB86PM": comb.ProcessCOMB86PMRequest,
2025-08-03 23:30:30 +08:00
// QCXG系列处理器
"QCXG7A2B": qcxg.ProcessQCXG7A2BRequest,
2025-07-28 01:46:39 +08:00
}
// 批量注册到组合包服务
for apiCode, processor := range processorMap {
combService.RegisterProcessor(apiCode, processor)
}
// 同时设置全局处理器映射
RequestProcessors = processorMap
}
// 注册API处理器 - 现在通过registerAllProcessors统一管理
var RequestProcessors map[string]processors.ProcessorFunc
// PreprocessRequestApi 调用指定的请求处理函数
2025-08-04 22:02:09 +08:00
func (a *ApiRequestService) PreprocessRequestApi(ctx context.Context, apiCode string, params []byte, options *commands.ApiCallOptions, callContext *processors.CallContext) ([]byte, error) {
2025-07-28 01:46:39 +08:00
if processor, exists := RequestProcessors[apiCode]; exists {
2025-08-04 22:02:09 +08:00
// 设置Options和CallContext到依赖容器
deps := a.processorDeps.WithOptions(options).WithCallContext(callContext)
2025-07-30 00:51:22 +08:00
return processor(ctx, params, deps)
2025-07-28 01:46:39 +08:00
}
2025-07-30 00:51:22 +08:00
return nil, fmt.Errorf("%s: 未找到处理器: %s", ErrSystem, apiCode)
2025-07-28 01:46:39 +08:00
}