diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index a2266fe..cccea9d 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -689,6 +689,11 @@ type IVYZ8I9JReq struct { MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` } +type IVYZ6M8PReq struct { + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` +} + type YYSY9E4AReq struct { MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` } diff --git a/internal/domains/api/services/api_request_service.go b/internal/domains/api/services/api_request_service.go index e2355e5..f8fbf56 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -204,6 +204,7 @@ func registerAllProcessors(combService *comb.CombService) { "IVYZP2Q6": ivyz.ProcessIVYZP2Q6Request, "IVYZ2B2T": ivyz.ProcessIVYZ2B2TRequest, //能力资质核验(学历) "IVYZ5A9O": ivyz.ProcessIVYZ5A9ORequest, //全国⾃然⼈⻛险评估评分模型 + "IVYZ6M8P": ivyz.ProcessIVYZ6M8PRequest, //职业资格证书 // COMB系列处理器 - 只注册有自定义逻辑的组合包 "COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode diff --git a/internal/domains/api/services/form_config_service.go b/internal/domains/api/services/form_config_service.go index 31215e4..9da0268 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -197,7 +197,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "JRZQ3AG6": &dto.JRZQ3AG6Req{}, //轻松查公积 "IVYZ2B2T": &dto.IVYZ2B2TReq{}, //能力资质核验(学历) "IVYZ5A9O": &dto.IVYZ5A9tReq{}, //全国⾃然⼈⻛险评估评分模型 - + "IVYZ6M8P": &dto.IVYZ6M8PReq{}, //职业资格证书 } // 优先返回已配置的DTO diff --git a/internal/domains/api/services/processors/ivyz/ivyz6m8p_processor.go b/internal/domains/api/services/processors/ivyz/ivyz6m8p_processor.go new file mode 100644 index 0000000..91a6d85 --- /dev/null +++ b/internal/domains/api/services/processors/ivyz/ivyz6m8p_processor.go @@ -0,0 +1,46 @@ +package ivyz + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/xingwei" +) + +// ProcessIVYZ6M8PRequest IVYZ6M8P 职业资格证书API处理方法 +func ProcessIVYZ6M8PRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.IVYZ6M8PReq + 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) + } + + // 构建请求数据,将项目规范的字段名转换为 XingweiService 需要的字段名 + reqData := map[string]interface{}{ + "name": paramsDto.Name, + "idCardNum": paramsDto.IDCard, + } + + // 调用行为数据API,使用指定的project_id + projectID := "CDJ-1147725836315455488" + respBytes, err := deps.XingweiService.CallAPI(ctx, projectID, reqData) + if err != nil { + if errors.Is(err, xingwei.ErrNotFound) { + return nil, errors.Join(processors.ErrNotFound, err) + } else if errors.Is(err, xingwei.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } else if errors.Is(err, xingwei.ErrSystem) { + return nil, errors.Join(processors.ErrSystem, err) + } else { + return nil, errors.Join(processors.ErrSystem, err) + } + } + + return respBytes, nil +}