diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index 51bfd65..23d0ba5 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -452,6 +452,20 @@ type JRZQ3C9RReq struct { Authorized string `json:"authorized" validate:"required,oneof=0 1"` } +type JRZQ3P01Req struct { + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` + Authorized string `json:"authorized" validate:"required,oneof=0 1"` +} + +// JRZQ3AG6Req JRZQ3AG6 轻松查公积API处理方法 +type JRZQ3AG6Req 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"` + ReturnURL string `json:"return_url" validate:"required,validReturnURL"` + AuthorizationURL string `json:"authorization_url" validate:"required,authorization_url"` +} type JRZQ8A2DReq struct { MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` IDCard string `json:"id_card" validate:"required,validIDCard"` diff --git a/internal/domains/api/services/api_request_service.go b/internal/domains/api/services/api_request_service.go index 675bf35..08e936b 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -130,6 +130,9 @@ func registerAllProcessors(combService *comb.CombService) { "JRZQ0B6Y": jrzq.ProcessJRZQ0B6YRequest, "JRZQ9A1W": jrzq.ProcessJRZQ9A1WRequest, "JRZQ8F7C": jrzq.ProcessJRZQ8F7CRequest, + "JRZQ1W4X": jrzq.ProcessJRZQ1W4XRequest, + "JRZQ3P01": jrzq.ProcessJRZQ3P01Request, + "JRZQ3AG6": jrzq.ProcessJRZQ3AG6Request, // QYGL系列处理器 "QYGL8261": qygl.ProcessQYGL8261Request, @@ -199,7 +202,6 @@ func registerAllProcessors(combService *comb.CombService) { "IVYZ9K2L": ivyz.ProcessIVYZ9K2LRequest, "IVYZ2C1P": ivyz.ProcessIVYZ2C1PRequest, "IVYZP2Q6": ivyz.ProcessIVYZP2Q6Request, - "JRZQ1W4X": jrzq.ProcessJRZQ1W4XRequest, // 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 1a89b0b..02007b7 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -193,6 +193,8 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "QYGL2S0W": &dto.QYGL2S0WReq{}, //失信被执行企业个人查询 "QYGL9T1Q": &dto.QYGL9T1QReq{}, //全国企业借贷意向验证查询_V1 "QYGL5A9T": &dto.QYGL5A9TReq{}, //全国企业各类工商风险统计数量查询 + "JRZQ3P01": &dto.JRZQ3P01Req{}, //天远风控决策 + "JRZQ3AG6": &dto.JRZQ3AG6Req{}, //轻松查公积 } diff --git a/internal/domains/api/services/processors/flxg/flxg5876_processor.go b/internal/domains/api/services/processors/flxg/flxg5876_processor.go index 0d6c40d..1f55f4b 100644 --- a/internal/domains/api/services/processors/flxg/flxg5876_processor.go +++ b/internal/domains/api/services/processors/flxg/flxg5876_processor.go @@ -10,7 +10,7 @@ import ( "tyapi-server/internal/infrastructure/external/westdex" ) -// ProcessFLXG5876Request FLXG5876 API处理方法 +// ProcessFLXG5876Request FLXG5876 易诉人识别API处理方法 func ProcessFLXG5876Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { var paramsDto dto.FLXG5876Req if err := json.Unmarshal(params, ¶msDto); err != nil { @@ -42,4 +42,4 @@ func ProcessFLXG5876Request(ctx context.Context, params []byte, deps *processors } return respBytes, nil -} \ No newline at end of file +} diff --git a/internal/domains/api/services/processors/jrzq/jrzq3ag6_processor.go b/internal/domains/api/services/processors/jrzq/jrzq3ag6_processor.go new file mode 100644 index 0000000..7cc3831 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzq3ag6_processor.go @@ -0,0 +1,63 @@ +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/zhicha" +) + +// ProcessJRZQ3AG6Request JRZQ3AG6 轻松查公积API处理方法 +func ProcessJRZQ3AG6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQ3AG6Req + 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) + } + + encryptedName, err := deps.ZhichaService.Encrypt(paramsDto.Name) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + encryptedIDCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + encryptedMobileNo, err := deps.ZhichaService.Encrypt(paramsDto.MobileNo) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + reqData := map[string]interface{}{ + "name": encryptedName, + "idCard": encryptedIDCard, + "phone": encryptedMobileNo, + "return_url": paramsDto.ReturnURL, + "authorization_url": paramsDto.AuthorizationURL, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI108", reqData) + if err != nil { + if errors.Is(err, zhicha.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } else { + return nil, errors.Join(processors.ErrSystem, err) + } + } + + // 将响应数据转换为JSON字节 + respBytes, err := json.Marshal(respData) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +} diff --git a/internal/domains/api/services/processors/jrzq/jrzq3p01_processor.go b/internal/domains/api/services/processors/jrzq/jrzq3p01_processor.go new file mode 100644 index 0000000..72dc1d0 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzq3p01_processor.go @@ -0,0 +1,56 @@ +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/zhicha" +) + +// ProcessJRZQ3P01Request JRZQ3P01 天远风控决策API处理方法 +func ProcessJRZQ3P01Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQ3P01Req + 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) + } + + encryptedName, err := deps.ZhichaService.Encrypt(paramsDto.Name) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + encryptedIDCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + reqData := map[string]interface{}{ + "name": encryptedName, + "idCard": encryptedIDCard, + "authorized": paramsDto.Authorized, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI109", reqData) + if err != nil { + if errors.Is(err, zhicha.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } else { + return nil, errors.Join(processors.ErrSystem, err) + } + } + + // 将响应数据转换为JSON字节 + respBytes, err := json.Marshal(respData) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +}