diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index d788fcf..6a2b622 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -130,6 +130,9 @@ type QYGL7HBNReq struct { type QCXGA8V3Req struct { VinCode string `json:"vin_code" validate:"required"` } +type QCXG8N4RReq struct { + PlateNo string `json:"plate_no" validate:"required"` +} type QCXGH3R8Req 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 c89573e..45446a8 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -227,6 +227,7 @@ func registerAllProcessors(combService *comb.CombService) { "QYGL7Z0O": qygl.ProcessQYGL7Z0ORequest, //企业诉讼定制版 "QYGLLUCM": qygl.ProcessQYGLLUCMRequest, //企业案件查询汇博 "QCXGA8V3": qcxg.ProcessQCXGA8V3Request, //全国车辆配置查验(车五项+使用性质+承保) + "QCXG8N4R": qcxg.ProcessQCXG8N4RRequest, //全国车辆配置查验(车五项+使用性质)10186 "QCXGCP77": qcxg.ProcessQCXGCP77Request, //全国车辆配置查验(车辆详情) "QCXGX2X6": qcxg.ProcessQCXGX2X6Request, //行驶证信息核验V2 "QCXG1S2L": qcxg.ProcessQCXG1S2LRequest, //汽车车辆五项 diff --git a/internal/domains/api/services/form_config_service.go b/internal/domains/api/services/form_config_service.go index 5d752f2..ab81a40 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -302,6 +302,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "FLXGC4CT": &dto.FLXGC4CTReq{}, //汇博-个人涉诉 "QYGLLUCM": &dto.QYGLLUCMReq{}, //汇博-企业涉诉 "QCXGA8V3": &dto.QCXGA8V3Req{}, //全国车辆配置查验(车五项+使用性质+承保) + "QCXG8N4R": &dto.QCXG8N4RReq{}, //全国车辆配置查验(车五项+使用性质)10186 "QCXGH3R8": &dto.QCXGH3R8Req{}, //车辆注册日期查询(VIN) "QCXGK5M2": &dto.QCXGK5M2Req{}, //车辆投保日期与城市查询(VIN) "QCXGCP77": &dto.QCXGCP77Req{}, //全国车辆配置查验(车辆详情) diff --git a/internal/domains/api/services/processors/qcxg/qcxg8n4r_processor.go b/internal/domains/api/services/processors/qcxg/qcxg8n4r_processor.go new file mode 100644 index 0000000..d714b0d --- /dev/null +++ b/internal/domains/api/services/processors/qcxg/qcxg8n4r_processor.go @@ -0,0 +1,47 @@ +package qcxg + +import ( + "context" + "encoding/json" + "errors" + + "hyapi-server/internal/domains/api/dto" + "hyapi-server/internal/domains/api/services/processors" + "hyapi-server/internal/infrastructure/external/shujubao" +) + +// ProcessQCXG8N4RRequest QCXG8N4R 全国车辆配置查验(车五项+使用性质)10186 +// 查空不计费,仅数据源 code=10000 计费 +func ProcessQCXG8N4RRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.QCXG8N4RReq + 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 := map[string]interface{}{ + "key": "5d253801dbde7ccd75639449b6c91fe2", + "carNo": paramsDto.PlateNo, + } + + apiPath := "/communication/personal/10186" + data, err := deps.ShujubaoService.CallAPI(ctx, apiPath, reqParams) + if err != nil { + if errors.Is(err, shujubao.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } + if errors.Is(err, shujubao.ErrQueryEmpty) { + return nil, errors.Join(processors.ErrNotFound, err) + } + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := json.Marshal(data) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + return respBytes, nil +}