diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index b04d09e..7d89b5f 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -132,12 +132,11 @@ type QCXGA8V3Req struct { } type QCXGCP77Req struct { VinCode string `json:"vin_code" validate:"required"` - } type QCXGX2X6Req struct { - PlateNo string `json:"plate_no" validate:"required"` + PlateNo string `json:"plate_no" validate:"required"` VehicleType string `json:"vehicle_type" validate:"omitempty"` - Name string `json:"name" validate:"required,min=1,validName"` + Name string `json:"name" validate:"required,min=1,validName"` } type QCXG1S2LReq struct { VinCode string `json:"vin_code" validate:"required"` @@ -174,6 +173,16 @@ type QCXG3M7ZReq struct { Name string `json:"name" validate:"required,min=1,validName"` PlateColor string `json:"plate_color" validate:"omitempty"` } +type JRZQ7D1XReq struct { + Name string `json:"name" validate:"required,min=1,validName"` + IDCard string `json:"id_card" validate:"required,validIDCard"` + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` +} +type JRZQTH74Req struct { + Name string `json:"name" validate:"required,min=1,validName"` + IDCard string `json:"id_card" validate:"required,validIDCard"` + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` +} type QCXG76VAReq struct { PlateNo string `json:"plate_no" validate:"required"` } diff --git a/internal/domains/api/services/api_request_service.go b/internal/domains/api/services/api_request_service.go index 4d568be..e565f7c 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -23,8 +23,8 @@ import ( "hyapi-server/internal/infrastructure/external/muzi" nuoerext "hyapi-server/internal/infrastructure/external/nuoer" "hyapi-server/internal/infrastructure/external/shujubao" - "hyapi-server/internal/infrastructure/external/tianyuanapi" "hyapi-server/internal/infrastructure/external/tianyancha" + "hyapi-server/internal/infrastructure/external/tianyuanapi" "hyapi-server/internal/infrastructure/external/westdex" "hyapi-server/internal/infrastructure/external/xingwei" "hyapi-server/internal/infrastructure/external/yushan" @@ -170,25 +170,28 @@ func registerAllProcessors(combService *comb.CombService) { "JRZQOICN": jrzq.ProcessJRZQOICNRequest, // 银行卡四要素 "JRZQMDQ1": jrzq.ProcessJRZQMDQ1Request, // 银行卡OCR数卖 "JRZQDMLO": jrzq.ProcessJRZQDMLORequest, // 银行卡OCR数据宝 - "JRZQ65ZO": jrzq.ProcessJRZQ65ZORequest, // 支付行为指数诺尔 - "JRZQNKEI": jrzq.ProcessJRZQNKEIRequest, //风险量级V8 - "JRZQQKEC": jrzq.ProcessJRZQQKECRequest, //风险量级V9 - "JRZQI079": jrzq.ProcessJRZQI079Request, //风险量级V10 - "JRZQV7YZ": jrzq.ProcessJRZQV7YZRequest, //信用全景V21 - "JRZQX5DM": jrzq.ProcessJRZQX5DMRequest, //借贷意向验证 - "JRZQ1AIJ": jrzq.ProcessJRZQ1AIJRequest, //洞侦多头履约行为 - "JRZQZ05I": jrzq.ProcessJRZQZ05IRequest, //租赁申请意向 - "JRZQNK43": jrzq.ProcessJRZQNK43Request, //租赁申请意向V22 - "JRZQNVM8": jrzq.ProcessJRZQNVM8Request, //风险变量V5F4 - "JRZQMLZX": jrzq.ProcessJRZQMLZXRequest, //特殊名单 - "JRZQQD4F": jrzq.ProcessJRZQQD4FRequest, //债务逾期黑名单V3_1 - "JRZQVBHJ": jrzq.ProcessJRZQVBHJRequest, //投诉风险筛查V709 - "JRZQBQIR": jrzq.ProcessJRZQBQIRRequest, //黑名单V110_c10 - "JRZQTM1V": jrzq.ProcessJRZQTM1VRequest, //特殊名单1010 - "JRZQNEP0": jrzq.ProcessJRZQNEP0Request, //智享分 - "JRZQLY6D": jrzq.ProcessJRZQLY6DRequest, //智瞳-通用版 - "JRZQAH34": jrzq.ProcessJRZQAH34Request, //智瞳分尊享版 - "JRZQML9G": jrzq.ProcessJRZQML9GRequest, //坤羽模型V3-标签版 + "JRZQ65ZO": jrzq.ProcessJRZQ65ZORequest, // 支付行为指数诺尔 + "JRZQNKEI": jrzq.ProcessJRZQNKEIRequest, //风险量级V8 + "JRZQQKEC": jrzq.ProcessJRZQQKECRequest, //风险量级V9 + "JRZQI079": jrzq.ProcessJRZQI079Request, //风险量级V10 + "JRZQV7YZ": jrzq.ProcessJRZQV7YZRequest, //信用全景V21 + "JRZQX5DM": jrzq.ProcessJRZQX5DMRequest, //借贷意向验证 + "JRZQ1AIJ": jrzq.ProcessJRZQ1AIJRequest, //洞侦多头履约行为 + "JRZQZ05I": jrzq.ProcessJRZQZ05IRequest, //租赁申请意向 + "JRZQNK43": jrzq.ProcessJRZQNK43Request, //租赁申请意向V22 + "JRZQNVM8": jrzq.ProcessJRZQNVM8Request, //风险变量V5F4 + "JRZQMLZX": jrzq.ProcessJRZQMLZXRequest, //特殊名单 + "JRZQQD4F": jrzq.ProcessJRZQQD4FRequest, //债务逾期黑名单V3_1 + "JRZQVBHJ": jrzq.ProcessJRZQVBHJRequest, //投诉风险筛查V709 + "JRZQBQIR": jrzq.ProcessJRZQBQIRRequest, //黑名单V110_c10 + "JRZQTM1V": jrzq.ProcessJRZQTM1VRequest, //特殊名单1010 + "JRZQNEP0": jrzq.ProcessJRZQNEP0Request, //智享分 + "JRZQLY6D": jrzq.ProcessJRZQLY6DRequest, //智瞳-通用版 + "JRZQAH34": jrzq.ProcessJRZQAH34Request, //智瞳分尊享版 + "JRZQML9G": jrzq.ProcessJRZQML9GRequest, //坤羽模型V3-标签版 + "JRZQ7D1X": jrzq.ProcessJRZQ7D1XRequest, //借贷意向V2 + "JRZQTH74": jrzq.ProcessJRZQTH74Request, //团伙欺诈 + // QYGL系列处理器 "QYGL7HBN": qygl.ProcessQYGL7HBNRequest, //企业全景报告(聚合 QYGLUY3S/QYGLJ0Q1/QYGL5S1I) "QYGL9MYB": qygl.ProcessQYGL9MYBRequest, //企业股权结构全景查询 @@ -204,19 +207,19 @@ func registerAllProcessors(combService *comb.CombService) { "QCXG1S2L": qcxg.ProcessQCXG1S2LRequest, //汽车车辆五项 // YYSY系列处理器 - "YYSY0YYV": yysy.ProcessYYSY0YYVRequest, //运营商二要素查询 - "YYSYS66T": yysy.ProcessYYSYS66TRequest, //运营商三要素详版查询 - "YYSYN8DI": yysy.ProcessYYSYN8DIRequest, //运营商三要素简版查询 - "YYSYUO7E": yysy.ProcessYYSYUO7ERequest, //在网时长查询 - "YYSYKTQO": yysy.ProcessYYSYKTQORequest, //手机在网状态查询 - "YYSYXAES": yysy.ProcessYYSYXAESRequest, //手机携号转网查询 - "YYSYJXZF": yysy.ProcessYYSYJXZFRequest, //手机空号检测查询 - "YYSYXHHO": yysy.ProcessYYSYXHHORequest, //运营商三要素即时版查询 - "YYSYGLSF": yysy.ProcessYYSYGLSFRequest, //全网手机三要素验证1979周更新版 - "YYSYP7PL": yysy.ProcessYYSYP7PLRequest, //手机二次放号检测查询 - "YYSY2M8Q": yysy.ProcessYYSY2M8QRequest, //手机消费区间验证 - "YYSY7R4V": yysy.ProcessYYSY7R4VRequest, //手机停机验证 - "YYSYS7Y1": yysy.ProcessYYSYS7Y1Request, //移动手机号易诉分 + "YYSY0YYV": yysy.ProcessYYSY0YYVRequest, //运营商二要素查询 + "YYSYS66T": yysy.ProcessYYSYS66TRequest, //运营商三要素详版查询 + "YYSYN8DI": yysy.ProcessYYSYN8DIRequest, //运营商三要素简版查询 + "YYSYUO7E": yysy.ProcessYYSYUO7ERequest, //在网时长查询 + "YYSYKTQO": yysy.ProcessYYSYKTQORequest, //手机在网状态查询 + "YYSYXAES": yysy.ProcessYYSYXAESRequest, //手机携号转网查询 + "YYSYJXZF": yysy.ProcessYYSYJXZFRequest, //手机空号检测查询 + "YYSYXHHO": yysy.ProcessYYSYXHHORequest, //运营商三要素即时版查询 + "YYSYGLSF": yysy.ProcessYYSYGLSFRequest, //全网手机三要素验证1979周更新版 + "YYSYP7PL": yysy.ProcessYYSYP7PLRequest, //手机二次放号检测查询 + "YYSY2M8Q": yysy.ProcessYYSY2M8QRequest, //手机消费区间验证 + "YYSY7R4V": yysy.ProcessYYSY7R4VRequest, //手机停机验证 + "YYSYS7Y1": yysy.ProcessYYSYS7Y1Request, //移动手机号易诉分 // IVYZ系列处理器 "IVYZSQ0E": ivyz.ProcessIVYZSQ0ERequest, //身份证实名认证即时版 @@ -240,12 +243,12 @@ func registerAllProcessors(combService *comb.CombService) { // QCXG系列处理器 "QCXGFV9W": qcxg.ProcessQCXGFV9WRequest, //疑似营运车辆注册平台数 10386 - "QCXG76VA": qcxg.ProcessQCXG76VARequest, //疑似运营车辆查询(月度里程)10268 - "QCXGYQDC": qcxg.ProcessQCXGYQDCRequest, //疑似运营车辆查询(季度里程)10269 - "QCXGGFWW": qcxg.ProcessQCXGGFWWRequest, //疑似运营车辆查询(半年度里程)10270 - "QCXGYWSV": qcxg.ProcessQCXGYWSVRequest, //疑似运营车辆查询(年度里程)10271 - "QCXG521L": qcxg.ProcessQCXG521LRequest, // 车辆静态信息查询 10479 - "QCXGIJY3": qcxg.ProcessQCXGIJY3Request, // 名下车辆诺尔 + "QCXG76VA": qcxg.ProcessQCXG76VARequest, //疑似运营车辆查询(月度里程)10268 + "QCXGYQDC": qcxg.ProcessQCXGYQDCRequest, //疑似运营车辆查询(季度里程)10269 + "QCXGGFWW": qcxg.ProcessQCXGGFWWRequest, //疑似运营车辆查询(半年度里程)10270 + "QCXGYWSV": qcxg.ProcessQCXGYWSVRequest, //疑似运营车辆查询(年度里程)10271 + "QCXG521L": qcxg.ProcessQCXG521LRequest, // 车辆静态信息查询 10479 + "QCXGIJY3": qcxg.ProcessQCXGIJY3Request, // 名下车辆诺尔 // DWBG系列处理器 - 多维报告 diff --git a/internal/domains/api/services/form_config_service.go b/internal/domains/api/services/form_config_service.go index 06e294f..f0714e7 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -305,6 +305,8 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "QCXGX2X6": &dto.QCXGX2X6Req{}, //行驶证信息核验V2 "QCXG1S2L": &dto.QCXG1S2LReq{}, //汽车车辆五项 "YYSYS7Y1": &dto.YYSYS7Y1Req{}, //移动手机号易诉分 + "JRZQ7D1X": &dto.JRZQ7D1XReq{}, //借贷意向V2 + "JRZQTH74": &dto.JRZQTH74Req{}, //团伙欺诈 } // 优先返回已配置的DTO diff --git a/internal/domains/api/services/processors/jrzq/jrzq7d1x_processor.go b/internal/domains/api/services/processors/jrzq/jrzq7d1x_processor.go new file mode 100644 index 0000000..33d2f36 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzq7d1x_processor.go @@ -0,0 +1,50 @@ +package jrzq + +import ( + "context" + "encoding/json" + "errors" + + "hyapi-server/internal/domains/api/dto" + "hyapi-server/internal/domains/api/services/processors" + "hyapi-server/internal/infrastructure/external/nuoer" +) + +// ProcessJRZQ7D1XRequest JRZQVZ3Y API处理方法 - 7天1x贷 +func ProcessJRZQ7D1XRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQ7D1XReq + 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 := "loanRiskTagV22" + 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/jrzqth74_processor.go b/internal/domains/api/services/processors/jrzq/jrzqth74_processor.go new file mode 100644 index 0000000..dd8f765 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzqth74_processor.go @@ -0,0 +1,50 @@ +package jrzq + +import ( + "context" + "encoding/json" + "errors" + + "hyapi-server/internal/domains/api/dto" + "hyapi-server/internal/domains/api/services/processors" + "hyapi-server/internal/infrastructure/external/nuoer" +) + +// ProcessJRZQTH74Request JRZQVZ3Y API处理方法 - 团伙欺诈 +func ProcessJRZQTH74Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQTH74Req + 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 := "idRelationRisk" + 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 +}