2025-07-28 01:46:39 +08:00
|
|
|
|
package services
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"context"
|
2025-09-20 23:29:49 +08:00
|
|
|
|
"encoding/json"
|
2025-07-28 01:46:39 +08:00
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
|
|
"tyapi-server/internal/application/api/commands"
|
|
|
|
|
|
"tyapi-server/internal/domains/api/services/processors"
|
|
|
|
|
|
"tyapi-server/internal/domains/api/services/processors/comb"
|
2025-08-26 14:43:27 +08:00
|
|
|
|
"tyapi-server/internal/domains/api/services/processors/dwbg"
|
2025-07-28 01:46:39 +08:00
|
|
|
|
"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"
|
2025-09-01 18:29:59 +08:00
|
|
|
|
"tyapi-server/internal/domains/api/services/processors/test"
|
2025-07-28 01:46:39 +08:00
|
|
|
|
"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"
|
2025-10-16 18:35:18 +08:00
|
|
|
|
"tyapi-server/internal/infrastructure/external/xingwei"
|
2025-07-28 01:46:39 +08:00
|
|
|
|
"tyapi-server/internal/infrastructure/external/yushan"
|
2025-08-25 15:44:06 +08:00
|
|
|
|
"tyapi-server/internal/infrastructure/external/zhicha"
|
2025-07-28 01:46:39 +08:00
|
|
|
|
"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-08-25 15:44:06 +08:00
|
|
|
|
zhichaService *zhicha.ZhichaService,
|
2025-10-16 18:35:18 +08:00
|
|
|
|
xingweiService *xingwei.XingweiService,
|
2025-07-28 01:46:39 +08:00
|
|
|
|
validator interfaces.RequestValidator,
|
|
|
|
|
|
productManagementService *services.ProductManagementService,
|
|
|
|
|
|
) *ApiRequestService {
|
|
|
|
|
|
// 创建组合包服务
|
|
|
|
|
|
combService := comb.NewCombService(productManagementService)
|
|
|
|
|
|
|
|
|
|
|
|
// 创建处理器依赖容器
|
2025-10-16 18:35:18 +08:00
|
|
|
|
processorDeps := processors.NewProcessorDependencies(westDexService, yushanService, tianYanChaService, alicloudService, zhichaService, xingweiService, 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,
|
2025-08-02 22:27:59 +08:00
|
|
|
|
"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-08-25 15:44:06 +08:00
|
|
|
|
"FLXGDEA8": flxg.ProcessFLXGDEA8Request,
|
|
|
|
|
|
"FLXGDEA9": flxg.ProcessFLXGDEA9Request,
|
2025-08-26 14:43:27 +08:00
|
|
|
|
"FLXG5A3B": flxg.ProcessFLXG5A3BRequest,
|
|
|
|
|
|
"FLXG9C1D": flxg.ProcessFLXG9C1DRequest,
|
|
|
|
|
|
"FLXG2E8F": flxg.ProcessFLXG2E8FRequest,
|
2025-10-17 17:59:54 +08:00
|
|
|
|
"FLXG7E8F": flxg.ProcessFLXG7E8FRequest,
|
2025-07-28 01:46:39 +08:00
|
|
|
|
|
|
|
|
|
|
// JRZQ系列处理器
|
|
|
|
|
|
"JRZQ8203": jrzq.ProcessJRZQ8203Request,
|
|
|
|
|
|
"JRZQ0A03": jrzq.ProcessJRZQ0A03Request,
|
|
|
|
|
|
"JRZQ4AA8": jrzq.ProcessJRZQ4AA8Request,
|
|
|
|
|
|
"JRZQDCBE": jrzq.ProcessJRZQDCBERequest,
|
2025-08-25 15:44:06 +08:00
|
|
|
|
"JRZQ09J8": jrzq.ProcessJRZQ09J8Request,
|
|
|
|
|
|
"JRZQ1D09": jrzq.ProcessJRZQ1D09Request,
|
2025-08-26 14:43:27 +08:00
|
|
|
|
"JRZQ3C7B": jrzq.ProcessJRZQ3C7BRequest,
|
|
|
|
|
|
"JRZQ8A2D": jrzq.ProcessJRZQ8A2DRequest,
|
|
|
|
|
|
"JRZQ5E9F": jrzq.ProcessJRZQ5E9FRequest,
|
|
|
|
|
|
"JRZQ4B6C": jrzq.ProcessJRZQ4B6CRequest,
|
|
|
|
|
|
"JRZQ7F1A": jrzq.ProcessJRZQ7F1ARequest,
|
2025-10-17 17:59:54 +08:00
|
|
|
|
"JRZQ9E2A": jrzq.ProcessJRZQ9E2ARequest,
|
|
|
|
|
|
"JRZQ6F2A": jrzq.ProcessJRZQ6F2ARequest,
|
|
|
|
|
|
"JRZQ8B3C": jrzq.ProcessJRZQ8B3CRequest,
|
|
|
|
|
|
"JRZQ9D4E": jrzq.ProcessJRZQ9D4ERequest,
|
2025-07-28 01:46:39 +08:00
|
|
|
|
|
|
|
|
|
|
// 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-09-20 23:29:49 +08:00
|
|
|
|
"QYGL5A3C": qygl.ProcessQYGL5A3CRequest, // 对外投资历史
|
|
|
|
|
|
"QYGL8B4D": qygl.ProcessQYGL8B4DRequest, // 融资历史
|
|
|
|
|
|
"QYGL9E2F": qygl.ProcessQYGL9E2FRequest, // 行政处罚
|
|
|
|
|
|
"QYGL7C1A": qygl.ProcessQYGL7C1ARequest, // 经营异常
|
2025-09-30 12:03:51 +08:00
|
|
|
|
"QYGL3F8E": qygl.ProcessQYGL3F8ERequest, // 人企关系加强版
|
|
|
|
|
|
"QYGL7D9A": qygl.ProcessQYGL7D9ARequest, // 欠税公告
|
|
|
|
|
|
"QYGL4B2E": qygl.ProcessQYGL4B2ERequest, // 税收违法
|
2025-08-06 23:36:38 +08:00
|
|
|
|
"COMENT01": qygl.ProcessCOMENT01Request, // 企业风险报告
|
2025-10-17 17:59:54 +08:00
|
|
|
|
"QYGL5F6A": qygl.ProcessQYGL5F6ARequest, // 企业相关查询
|
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,
|
2025-08-26 14:43:27 +08:00
|
|
|
|
"YYSY4F2E": yysy.ProcessYYSY4F2ERequest,
|
|
|
|
|
|
"YYSY8B1C": yysy.ProcessYYSY8B1CRequest,
|
|
|
|
|
|
"YYSY6D9A": yysy.ProcessYYSY6D9ARequest,
|
|
|
|
|
|
"YYSY3E7F": yysy.ProcessYYSY3E7FRequest,
|
2025-10-16 18:35:18 +08:00
|
|
|
|
"YYSY8F3A": yysy.ProcessYYSY8F3ARequest,
|
2025-10-17 17:59:54 +08:00
|
|
|
|
"YYSY9A1B": yysy.ProcessYYSY9A1BRequest,
|
|
|
|
|
|
"YYSY8C2D": yysy.ProcessYYSY8C2DRequest,
|
|
|
|
|
|
"YYSY7D3E": yysy.ProcessYYSY7D3ERequest,
|
2025-10-22 16:40:14 +08:00
|
|
|
|
"YYSY9E4A": yysy.ProcessYYSY9E4ARequest,
|
2025-10-16 18:35:18 +08:00
|
|
|
|
|
2025-07-28 01:46:39 +08:00
|
|
|
|
// IVYZ系列处理器
|
|
|
|
|
|
"IVYZ0B03": ivyz.ProcessIVYZ0B03Request,
|
|
|
|
|
|
"IVYZ2125": ivyz.ProcessIVYZ2125Request,
|
|
|
|
|
|
"IVYZ385E": ivyz.ProcessIVYZ385ERequest,
|
|
|
|
|
|
"IVYZ5733": ivyz.ProcessIVYZ5733Request,
|
|
|
|
|
|
"IVYZ9363": ivyz.ProcessIVYZ9363Request,
|
|
|
|
|
|
"IVYZ9A2B": ivyz.ProcessIVYZ9A2BRequest,
|
|
|
|
|
|
"IVYZADEE": ivyz.ProcessIVYZADEERequest,
|
2025-08-02 22:27:59 +08:00
|
|
|
|
"IVYZ7F2A": ivyz.ProcessIVYZ7F2ARequest,
|
|
|
|
|
|
"IVYZ4E8B": ivyz.ProcessIVYZ4E8BRequest,
|
|
|
|
|
|
"IVYZ1C9D": ivyz.ProcessIVYZ1C9DRequest,
|
2025-08-03 18:46:53 +08:00
|
|
|
|
"IVYZGZ08": ivyz.ProcessIVYZGZ08Request,
|
2025-08-26 14:43:27 +08:00
|
|
|
|
"IVYZ2A8B": ivyz.ProcessIVYZ2A8BRequest,
|
|
|
|
|
|
"IVYZ7C9D": ivyz.ProcessIVYZ7C9DRequest,
|
|
|
|
|
|
"IVYZ5E3F": ivyz.ProcessIVYZ5E3FRequest,
|
2025-09-12 01:15:09 +08:00
|
|
|
|
"IVYZ7F3A": ivyz.ProcessIVYZ7F3ARequest,
|
2025-10-16 18:35:18 +08:00
|
|
|
|
"IVYZ3A7F": ivyz.ProcessIVYZ3A7FRequest,
|
|
|
|
|
|
"IVYZ9D2E": ivyz.ProcessIVYZ9D2ERequest,
|
|
|
|
|
|
"IVYZ81NC": ivyz.ProcessIVYZ81NCRequest,
|
2025-10-17 17:59:54 +08:00
|
|
|
|
"IVYZ6G7H": ivyz.ProcessIVYZ6G7HRequest,
|
|
|
|
|
|
"IVYZ8I9J": ivyz.ProcessIVYZ8I9JRequest,
|
2025-10-16 18:35:18 +08:00
|
|
|
|
|
2025-09-20 23:29:49 +08:00
|
|
|
|
// COMB系列处理器 - 只注册有自定义逻辑的组合包
|
|
|
|
|
|
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode
|
2025-08-03 23:30:30 +08:00
|
|
|
|
|
|
|
|
|
|
// QCXG系列处理器
|
|
|
|
|
|
"QCXG7A2B": qcxg.ProcessQCXG7A2BRequest,
|
2025-10-17 17:59:54 +08:00
|
|
|
|
"QCXG9P1C": qcxg.ProcessQCXG9P1CRequest,
|
2025-08-26 14:43:27 +08:00
|
|
|
|
|
|
|
|
|
|
// DWBG系列处理器 - 多维报告
|
|
|
|
|
|
"DWBG6A2C": dwbg.ProcessDWBG6A2CRequest,
|
|
|
|
|
|
"DWBG8B4D": dwbg.ProcessDWBG8B4DRequest,
|
2025-10-16 18:35:18 +08:00
|
|
|
|
"DWBG7F3A": dwbg.ProcessDWBG7F3ARequest,
|
2025-08-26 14:43:27 +08:00
|
|
|
|
|
|
|
|
|
|
// FLXG系列处理器 - 风险管控 (包含原FXHY功能)
|
|
|
|
|
|
"FLXG8B4D": flxg.ProcessFLXG8B4DRequest,
|
2025-09-01 18:29:59 +08:00
|
|
|
|
|
|
|
|
|
|
// TEST系列处理器 - 测试用处理器
|
|
|
|
|
|
"TEST001": test.ProcessTestRequest,
|
|
|
|
|
|
"TEST002": test.ProcessTestErrorRequest,
|
|
|
|
|
|
"TEST003": test.ProcessTestTimeoutRequest,
|
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-09-20 23:29:49 +08:00
|
|
|
|
// 设置Options和CallContext到依赖容器
|
|
|
|
|
|
deps := a.processorDeps.WithOptions(options).WithCallContext(callContext)
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 优先查找已注册的自定义处理器
|
2025-07-28 01:46:39 +08:00
|
|
|
|
if processor, exists := RequestProcessors[apiCode]; exists {
|
2025-07-30 00:51:22 +08:00
|
|
|
|
return processor(ctx, params, deps)
|
2025-07-28 01:46:39 +08:00
|
|
|
|
}
|
2025-09-20 23:29:49 +08:00
|
|
|
|
|
|
|
|
|
|
// 2. 检查是否为组合包(COMB开头),使用通用组合包处理器
|
|
|
|
|
|
if len(apiCode) >= 4 && apiCode[:4] == "COMB" {
|
|
|
|
|
|
return a.processGenericCombRequest(ctx, apiCode, params, deps)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 00:51:22 +08:00
|
|
|
|
return nil, fmt.Errorf("%s: 未找到处理器: %s", ErrSystem, apiCode)
|
2025-07-28 01:46:39 +08:00
|
|
|
|
}
|
2025-09-20 23:29:49 +08:00
|
|
|
|
|
|
|
|
|
|
// processGenericCombRequest 通用组合包处理器
|
|
|
|
|
|
func (a *ApiRequestService) processGenericCombRequest(ctx context.Context, apiCode string, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
|
|
|
|
|
// 调用组合包服务处理请求
|
|
|
|
|
|
// 这里不需要验证参数,因为组合包的参数验证由各个子处理器负责
|
|
|
|
|
|
combinedResult, err := deps.CombService.ProcessCombRequest(ctx, params, deps, apiCode)
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 直接返回组合结果,无任何自定义处理
|
|
|
|
|
|
return json.Marshal(combinedResult)
|
|
|
|
|
|
}
|