From e4eb41ce10e0eafb8e82c07f9fd97b1f45880c1f Mon Sep 17 00:00:00 2001 From: Mrx <18278715334@163.com> Date: Fri, 5 Jun 2026 21:11:25 +0800 Subject: [PATCH] f --- internal/domains/api/dto/api_request_dto.go | 24 +++++++++ .../api/services/api_request_service.go | 4 ++ .../api/services/form_config_service.go | 5 ++ .../processors/ivyz/ivyzvjj6_processor.go | 50 ++++++++++++++++++ .../processors/jrzq/jrzqv4tf_processor.go | 51 +++++++++++++++++++ .../processors/jrzq/jrzqv5f4_processor.go | 50 ++++++++++++++++++ .../processors/jrzq/jrzqv7md_processor.go | 50 ++++++++++++++++++ 7 files changed, 234 insertions(+) create mode 100644 internal/domains/api/services/processors/ivyz/ivyzvjj6_processor.go create mode 100644 internal/domains/api/services/processors/jrzq/jrzqv4tf_processor.go create mode 100644 internal/domains/api/services/processors/jrzq/jrzqv5f4_processor.go create mode 100644 internal/domains/api/services/processors/jrzq/jrzqv7md_processor.go diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index 13912ae..5b03203 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -1169,3 +1169,27 @@ type JRZQV3HMReq struct { Name string `json:"name" validate:"required,min=1,validName"` MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` } + +type JRZQV4TFReq struct { + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` +} + +type JRZQV5F4Req struct { + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` +} + +type JRZQV7MDReq struct { + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` +} + +type IVYZVJJ6Req struct { + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` + 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 91865e8..ea09fea 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -235,6 +235,9 @@ func registerAllProcessors(combService *comb.CombService) { "JRZQV0MD": jrzq.ProcessJRZQV0MDRequest, // 行为黑名单 "JRZQVT43": jrzq.ProcessJRZQVT43Request, // 投诉黑名单 "JRZQV3HM": jrzq.ProcessJRZQV3HMRequest, // 债务逾期黑名单 + "JRZQV4TF": jrzq.ProcessJRZQV4TFRequest, // 智瞳分尊享版 + "JRZQV5F4": jrzq.ProcessJRZQV5F4Request, // 风险变量V5F4 + "JRZQV7MD": jrzq.ProcessJRZQV7MDRequest, // 特殊名单 // QYGL系列处理器 "QYGL8261": qygl.ProcessQYGL8261Request, @@ -361,6 +364,7 @@ func registerAllProcessors(combService *comb.CombService) { "IVYZRAX2": ivyz.ProcessIVYZRAX2Request, //融御反欺诈分 "IVYZ2MN7": ivyz.ProcessIVYZ2MN7Request, //学历B "IVYZ4Y27": ivyz.ProcessIVYZ4Y27Request, //学历高级版 + "IVYZVJJ6": ivyz.ProcessIVYZVJJ6Request, //收入等级tax_income_level_v8 // 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 8be95ae..a249dc6 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -293,6 +293,11 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "JRZQV0MD": &dto.JRZQV0MDReq{}, //行为黑名单 "JRZQVT43": &dto.JRZQVT43Req{}, //投诉黑名单 "JRZQV3HM": &dto.JRZQV3HMReq{}, //债务逾期黑名单 + "JRZQV4TF": &dto.JRZQV4TFReq{}, //智瞳分尊享版 + "JRZQV5F4": &dto.JRZQV5F4Req{}, //风险变量V5F4 + "JRZQV7MD": &dto.JRZQV7MDReq{}, //特殊名单 + "IVYZVJJ6": &dto.IVYZVJJ6Req{}, //收入等级tax_income_level_v8 + } // 优先返回已配置的DTO diff --git a/internal/domains/api/services/processors/ivyz/ivyzvjj6_processor.go b/internal/domains/api/services/processors/ivyz/ivyzvjj6_processor.go new file mode 100644 index 0000000..a8fd719 --- /dev/null +++ b/internal/domains/api/services/processors/ivyz/ivyzvjj6_processor.go @@ -0,0 +1,50 @@ +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/nuoer" +) + +// ProcessIVYZVJJ6Request IVYZVJJ6 API处理方法 -收入等级tax_income_level_v8 +func ProcessIVYZVJJ6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.IVYZVJJ6Req + 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) + } + + body := map[string]string{ + "name": paramsDto.Name, + "idCard": paramsDto.IDCard, + "mobile": paramsDto.MobileNo, + } + + nuoerDoCheckAPIKey := "tax_income_level_v8" + ApiPath := "/v1/doCheck" + + resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body) + if err != nil { + if errors.Is(err, nuoer.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } + if errors.Is(err, nuoer.ErrNotFound) { + return nil, errors.Join(processors.ErrNotFound, err) + } + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := json.Marshal(resp.Data) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +} diff --git a/internal/domains/api/services/processors/jrzq/jrzqv4tf_processor.go b/internal/domains/api/services/processors/jrzq/jrzqv4tf_processor.go new file mode 100644 index 0000000..644e697 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzqv4tf_processor.go @@ -0,0 +1,51 @@ +package jrzq + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/nuoer" +) + +// ProcessJRZQV4TFRequest JRZQV4TFRequest API处理方法 - 智瞳分尊享版 + +func ProcessJRZQV4TFRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQV4TFReq + 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) + } + + body := map[string]string{ + "name": paramsDto.Name, + "idCard": paramsDto.IDCard, + "mobile": paramsDto.MobileNo, + } + + nuoerDoCheckAPIKey := "zhitong_ultra_v4_score" + ApiPath := "/v1/doCheck" + + resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body) + if err != nil { + if errors.Is(err, nuoer.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } + if errors.Is(err, nuoer.ErrNotFound) { + return nil, errors.Join(processors.ErrNotFound, err) + } + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := json.Marshal(resp.Data) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +} diff --git a/internal/domains/api/services/processors/jrzq/jrzqv5f4_processor.go b/internal/domains/api/services/processors/jrzq/jrzqv5f4_processor.go new file mode 100644 index 0000000..23d64c4 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzqv5f4_processor.go @@ -0,0 +1,50 @@ +package jrzq + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/nuoer" +) + +// ProcessJRZQV5F4Request JRZQV5F4 API处理方法 - 风险变量V5F4 +func ProcessJRZQV5F4Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQV5F4Req + 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) + } + + body := map[string]string{ + "name": paramsDto.Name, + "idCard": paramsDto.IDCard, + "mobile": paramsDto.MobileNo, + } + + nuoerDoCheckAPIKey := "loanRiskTagV5" + ApiPath := "/v1/doCheck" + + resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body) + if err != nil { + if errors.Is(err, nuoer.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } + if errors.Is(err, nuoer.ErrNotFound) { + return nil, errors.Join(processors.ErrNotFound, err) + } + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := json.Marshal(resp.Data) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +} diff --git a/internal/domains/api/services/processors/jrzq/jrzqv7md_processor.go b/internal/domains/api/services/processors/jrzq/jrzqv7md_processor.go new file mode 100644 index 0000000..4473709 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzqv7md_processor.go @@ -0,0 +1,50 @@ +package jrzq + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/nuoer" +) + +// ProcessJRZQV7MDRequest JRZQV7MD API处理方法 - 特殊名单 +func ProcessJRZQV7MDRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQV7MDReq + 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) + } + + body := map[string]string{ + "name": paramsDto.Name, + "idCard": paramsDto.IDCard, + "mobile": paramsDto.MobileNo, + } + + nuoerDoCheckAPIKey := "loanRiskTagV12" + ApiPath := "/v1/doCheck" + + resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body) + if err != nil { + if errors.Is(err, nuoer.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } + if errors.Is(err, nuoer.ErrNotFound) { + return nil, errors.Join(processors.ErrNotFound, err) + } + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := json.Marshal(resp.Data) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +}