diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index ea16585..4ef0685 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -138,6 +138,10 @@ type QCXGX2X6Req struct { VehicleType string `json:"vehicle_type" validate:"omitempty"` Name string `json:"name" validate:"required,min=1,validName"` } +type QCXG7K2NReq struct { + PlateNo string `json:"plate_no" validate:"required"` + Name string `json:"name" validate:"required,min=1,validName"` +} type QCXG1S2LReq struct { VinCode string `json:"vin_code" validate:"required"` } diff --git a/internal/domains/api/services/api_request_service.go b/internal/domains/api/services/api_request_service.go index 30b12c1..5d72952 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -253,6 +253,7 @@ func registerAllProcessors(combService *comb.CombService) { "QCXG521L": qcxg.ProcessQCXG521LRequest, // 车辆静态信息查询 10479 "QCXGIJY3": qcxg.ProcessQCXGIJY3Request, // 名下车辆诺尔 "QCXG6U5G": qcxg.ProcessQCXG6U5GRequest, // 车辆核验 + "QCXG7K2N": qcxg.ProcessQCXG7K2NRequest, // 人车核验加强版 // DWBG系列处理器 - 多维报告 diff --git a/internal/domains/api/services/form_config_service.go b/internal/domains/api/services/form_config_service.go index ce7eb57..bd31532 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -311,6 +311,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "JRZQFC59": &dto.JRZQFC59Req{}, //房产核验 "IVYZX7J9": &dto.IVYZX7J9Req{}, //学籍核验 "QCXG6U5G": &dto.QCXG6U5GReq{}, //车辆核验 + "QCXG7K2N": &dto.QCXG7K2NReq{}, //人车核验加强版 } // 优先返回已配置的DTO diff --git a/internal/domains/api/services/processors/qcxg/qcxg7k2n_processor.go b/internal/domains/api/services/processors/qcxg/qcxg7k2n_processor.go new file mode 100644 index 0000000..dfffa2e --- /dev/null +++ b/internal/domains/api/services/processors/qcxg/qcxg7k2n_processor.go @@ -0,0 +1,38 @@ +package qcxg + +import ( + "context" + "encoding/json" + "errors" + + "hyapi-server/internal/domains/api/dto" + "hyapi-server/internal/domains/api/services/processors" +) + +// ProcessQCXG7K2NRequest QCXG7K2N 人车核验加强版: +// 优先经天远调用 QCXG3M7Z(人车关系核验 ETC),查无结果时降级调用本地 QCXGX2X6(行驶证信息核验V2)。 +func ProcessQCXG7K2NRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.QCXG7K2NReq + if err := json.Unmarshal(params, ¶msDto); err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + if err := deps.Validator.ValidateStruct(paramsDto); err != nil { + return nil, errors.Join(processors.ErrInvalidParam, err) + } + + reqParams, err := json.Marshal(paramsDto) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := processors.CallTianyuanByProduct(ctx, deps, "QCXG3M7Z", reqParams) + if err == nil { + return respBytes, nil + } + if !errors.Is(err, processors.ErrNotFound) { + return nil, err + } + + return ProcessQCXGX2X6Request(ctx, reqParams, deps) +}