diff --git a/internal/application/product/product_application_service_impl.go b/internal/application/product/product_application_service_impl.go index 33ea40a..16670e6 100644 --- a/internal/application/product/product_application_service_impl.go +++ b/internal/application/product/product_application_service_impl.go @@ -982,7 +982,7 @@ func (s *ProductApplicationServiceImpl) getDTOMap() map[string]interface{} { "YYSY4B21": &dto.YYSY4B21Req{}, "YYSY6F2E": &dto.YYSY6F2EReq{}, "YYSY09CD": &dto.YYSY09CDReq{}, - "IVYZ0b03": &dto.IVYZ0b03Req{}, + "IVYZ0B03": &dto.IVYZ0B03Req{}, "YYSYBE08": &dto.YYSYBE08Req{}, "YYSYD50F": &dto.YYSYD50FReq{}, "YYSYF7DB": &dto.YYSYF7DBReq{}, diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index f5b7504..1f7744b 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -151,7 +151,7 @@ type YYSY09CDReq struct { IDCard string `json:"id_card" validate:"required,validIDCard"` Name string `json:"name" validate:"required,min=1,validName"` } -type IVYZ0b03Req struct { +type IVYZ0B03Req struct { MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` Name string `json:"name" validate:"required,min=1,validName"` } @@ -304,6 +304,17 @@ type IVYZ9K2LReq struct { IDCard string `json:"id_card" validate:"required,validIDCard"` PhotoData string `json:"photo_data" validate:"required,validBase64Image"` } +type IVYZP2Q6Req struct { + Name string `json:"name" validate:"required,min=1,validName"` + IDCard string `json:"id_card" validate:"required,validIDCard"` +} + +type JRZQ1W4XReq 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"` + Authorized string `json:"authorized" validate:"required,oneof=0 1"` +} type IVYZ9D2EReq struct { Name string `json:"name" validate:"required,min=1,validName"` @@ -327,26 +338,26 @@ type DWBG7F3AReq struct { // 新增的QYGL处理器DTO type QYGL5A3CReq struct { EntCode string `json:"ent_code" validate:"required,validUSCI"` - PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` - PageNum int `json:"page_num" validate:"omitempty,min=1"` + PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"` + PageNum int64 `json:"page_num" validate:"omitempty,min=1"` } type QYGL8B4DReq struct { EntCode string `json:"ent_code" validate:"required,validUSCI"` - PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` - PageNum int `json:"page_num" validate:"omitempty,min=1"` + PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"` + PageNum int64 `json:"page_num" validate:"omitempty,min=1"` } type QYGL9E2FReq struct { EntCode string `json:"ent_code" validate:"required,validUSCI"` - PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` - PageNum int `json:"page_num" validate:"omitempty,min=1"` + PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"` + PageNum int64 `json:"page_num" validate:"omitempty,min=1"` } type QYGL7C1AReq struct { EntCode string `json:"ent_code" validate:"required,validUSCI"` - PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` - PageNum int `json:"page_num" validate:"omitempty,min=1"` + PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"` + PageNum int64 `json:"page_num" validate:"omitempty,min=1"` } type QYGL3F8EReq struct { @@ -396,6 +407,31 @@ type FLXG9C1DReq struct { Authorized string `json:"authorized" validate:"required,oneof=0 1"` } +// 法院被执行人限高版 +type FLXG3A9BReq 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"` + Authorized string `json:"authorized" validate:"required,oneof=0 1"` +} + +// 法院被执行人高级版 +type FLXGK5D2Req 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"` + Authorized string `json:"authorized" validate:"required,oneof=0 1"` +} + +// 综合多头 + +type JRZQ8F7CReq 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"` + Authorized string `json:"authorized" validate:"required,oneof=0 1"` +} + type FLXG2E8FReq struct { IDCard string `json:"id_card" validate:"required,validIDCard"` Name string `json:"name" validate:"required,min=1,validName"` @@ -436,15 +472,15 @@ type JRZQ0B6YReq 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"` - BankCard string `json:"bank_card" validate:"omitempty,validBankCard"` + BankCard string `json:"bank_card" validate:"required,validBankCard"` } // 银行卡鉴权 type JRZQ9A1WReq 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"` - BankCard string `json:"bank_card" validate:"omitempty,validBankCard"` + MobileNo string `json:"mobile_no" validate:"omitempty,min=11,max=11,validMobileNo"` + BankCard string `json:"bank_card" validate:"required,validBankCard"` } // 企业管理董监高司法综合信息核验 @@ -520,6 +556,31 @@ type QYGL2B5CReq struct { Authorized string `json:"authorized" validate:"required,oneof=0 1"` } +// 全国企业借贷意向验证查询_V1 +type QYGL9T1QReq struct { + OwnerType string `json:"owner_type" validate:"required,oneof=1 2 3 4 5"` + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` + EntCode string `json:"ent_code" validate:"required,validUSCI"` + Authorized string `json:"authorized" validate:"required,oneof=0 1"` +} + +// 全国企业各类工商风险统计数量查询 +type QYGL5A9TReq struct { + EntCode string `json:"ent_code" validate:"omitempty,validUSCI"` + EntName string `json:"ent_name" validate:"omitempty,min=1,validEnterpriseName"` +} + +// 失信被执行企业或个人查询 +type QYGL2S0WReq struct { + Type string `json:"type" validate:"required,oneof=per ent"` + Name string `json:"name" validate:"omitempty,min=1,validName"` + EntName string `json:"ent_name" validate:"omitempty,min=1,validName"` + IDCard string `json:"id_card" validate:"omitempty,validIDCard"` + EntCode string `json:"ent_code" validate:"omitempty,validUSCI"` +} + type JRZQ2F8AReq struct { Name string `json:"name" validate:"required,min=1,validName"` MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` @@ -588,9 +649,7 @@ type FLXG7E8FReq struct { } type QYGL5F6AReq struct { - MobileNo string `json:"mobile_no" validate:"omitempty,min=11,max=11,validMobileNo"` - IDCard string `json:"id_card" validate:"required,validIDCard"` - EntCode string `json:"ent_code" validate:"omitempty,validUSCI"` + IDCard string `json:"id_card" validate:"required,validIDCard"` } type IVYZ6G7HReq struct { diff --git a/internal/domains/api/services/api_request_service.go b/internal/domains/api/services/api_request_service.go index 311ad6f..675bf35 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -105,7 +105,8 @@ func registerAllProcessors(combService *comb.CombService) { "FLXG9C1D": flxg.ProcessFLXG9C1DRequest, "FLXG2E8F": flxg.ProcessFLXG2E8FRequest, "FLXG7E8F": flxg.ProcessFLXG7E8FRequest, - + "FLXG3A9B": flxg.ProcessFLXG3A9BRequest, + "FLXGK5D2": flxg.ProcessFLXGK5D2Request, // JRZQ系列处理器 "JRZQ8203": jrzq.ProcessJRZQ8203Request, "JRZQ0A03": jrzq.ProcessJRZQ0A03Request, @@ -128,6 +129,8 @@ func registerAllProcessors(combService *comb.CombService) { "JRZQ3C9R": jrzq.ProcessJRZQ3C9RRequest, "JRZQ0B6Y": jrzq.ProcessJRZQ0B6YRequest, "JRZQ9A1W": jrzq.ProcessJRZQ9A1WRequest, + "JRZQ8F7C": jrzq.ProcessJRZQ8F7CRequest, + // QYGL系列处理器 "QYGL8261": qygl.ProcessQYGL8261Request, "QYGL2ACD": qygl.ProcessQYGL2ACDRequest, @@ -147,6 +150,9 @@ func registerAllProcessors(combService *comb.CombService) { "QYGL5F6A": qygl.ProcessQYGL5F6ARequest, // 企业相关查询 "QYGL2B5C": qygl.ProcessQYGL2B5CRequest, // 企业联系人实际经营地址 "QYGL6S1B": qygl.ProcessQYGL6S1BRequest, //董监高司法综合信息核验 + "QYGL9T1Q": qygl.ProcessQYGL9T1QRequest, //全国企业借贷意向验证查询_V1 + "QYGL5A9T": qygl.ProcessQYGL5A9TRequest, //全国企业各类工商风险统计数量查询 + "QYGL2S0W": qygl.ProcessQYGL2S0WRequest, //失信被执行企业个人查询 // YYSY系列处理器 "YYSYD50F": yysy.ProcessYYSYD50FRequest, @@ -192,6 +198,8 @@ func registerAllProcessors(combService *comb.CombService) { "IVYZ8I9J": ivyz.ProcessIVYZ8I9JRequest, "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 9864f7c..1a89b0b 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -113,7 +113,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "YYSY4B21": &dto.YYSY4B21Req{}, "YYSY6F2E": &dto.YYSY6F2EReq{}, "YYSY09CD": &dto.YYSY09CDReq{}, - "IVYZ0b03": &dto.IVYZ0b03Req{}, + "IVYZ0B03": &dto.IVYZ0B03Req{}, "YYSYBE08": &dto.YYSYBE08Req{}, "YYSYD50F": &dto.YYSYD50FReq{}, "YYSYF7DB": &dto.YYSYF7DBReq{}, @@ -172,7 +172,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "IVYZ6G7H": &dto.IVYZ6G7HReq{}, "IVYZ8I9J": &dto.IVYZ8I9JReq{}, "JRZQ0L85": &dto.JRZQ0L85Req{}, - "COMBHZY2": &dto.COMBHZY2Req{}, + "COMBHZY2": &dto.COMBHZY2Req{}, // 自此无imp11.28 "QCXG8A3D": &dto.QCXG8A3DReq{}, "QCXG6B4E": &dto.QCXG6B4EReq{}, "QYGL2B5C": &dto.QYGL2B5CReq{}, @@ -185,6 +185,15 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "QYGL6S1B": &dto.QYGL6S1BReq{}, "JRZQ0B6Y": &dto.JRZQ0B6YReq{}, "JRZQ9A1W": &dto.JRZQ9A1WReq{}, + "JRZQ8F7C": &dto.JRZQ8F7CReq{}, //综合多头 + "FLXGK5D2": &dto.FLXGK5D2Req{}, + "FLXG3A9B": &dto.FLXG3A9BReq{}, + "IVYZP2Q6": &dto.IVYZP2Q6Req{}, + "JRZQ1W4X": &dto.JRZQ1W4XReq{}, //全景档案 + "QYGL2S0W": &dto.QYGL2S0WReq{}, //失信被执行企业个人查询 + "QYGL9T1Q": &dto.QYGL9T1QReq{}, //全国企业借贷意向验证查询_V1 + "QYGL5A9T": &dto.QYGL5A9TReq{}, //全国企业各类工商风险统计数量查询 + } // 优先返回已配置的DTO @@ -381,6 +390,8 @@ func (s *FormConfigServiceImpl) generateFieldLabel(jsonTag string) string { "vin_code": "车辆识别代号VIN码", "return_type": "返回类型", "photo_data": "人脸图片", + "owner_type": "企业主类型", + "type": "查询类型", } if label, exists := labelMap[jsonTag]; exists { @@ -423,6 +434,8 @@ func (s *FormConfigServiceImpl) generateExampleValue(fieldType reflect.Type, jso "vin_code": "LSGBF53M8DS123456", "return_type": "1", "photo_data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", + "ownerType": "1", + "type": "per", } if example, exists := exampleMap[jsonTag]; exists { @@ -474,6 +487,8 @@ func (s *FormConfigServiceImpl) generatePlaceholder(jsonTag string, fieldType st "vin_code": "请输入17位车辆识别代号VIN码", "return_type": "请选择返回类型", "photo_data": "请输入base64编码的人脸图片(支持JPG、BMP、PNG格式)", + "ownerType": "请选择企业主类型", + "type": "请选择查询类型", } if placeholder, exists := placeholderMap[jsonTag]; exists { @@ -527,6 +542,8 @@ func (s *FormConfigServiceImpl) generateDescription(jsonTag string, validation s "vin_code": "请输入17位车辆识别代号VIN码(Vehicle Identification Number)", "return_type": "返回类型:1-专业和学校名称数据返回编码形式(默认);2-专业和学校名称数据返回中文名称", "photo_data": "人脸图片(必填):base64编码的图片数据,仅支持JPG、BMP、PNG三种格式", + "owner_type": "企业主类型编码:1-法定代表人;2-主要人员;3-自然人股东;4-法定代表人及自然人股东;5-其他", + "type": "查询类型:per-人员,ent-企业 1", } if desc, exists := descMap[jsonTag]; exists { diff --git a/internal/domains/api/services/processors/flxg/flxg0687_processor.go b/internal/domains/api/services/processors/flxg/flxg0687_processor.go index 62c936e..5771985 100644 --- a/internal/domains/api/services/processors/flxg/flxg0687_processor.go +++ b/internal/domains/api/services/processors/flxg/flxg0687_processor.go @@ -7,7 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/westdex" + "tyapi-server/internal/infrastructure/external/yushan" ) // ProcessFLXG0687Request FLXG0687 API处理方法 @@ -21,15 +21,14 @@ func ProcessFLXG0687Request(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - reqData := map[string]interface{}{ - "keyWord": paramsDto.IDCard, - "type": 3, + "keyWord": paramsDto.IDCard, + "type": 3, } respBytes, err := deps.YushanService.CallAPI(ctx, "RIS031", reqData) if err != nil { - if errors.Is(err, westdex.ErrDatasource) { + if errors.Is(err, yushan.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) diff --git a/internal/domains/api/services/processors/flxg/flxg3a9b_processor.go b/internal/domains/api/services/processors/flxg/flxg3a9b_processor.go new file mode 100644 index 0000000..482f6a9 --- /dev/null +++ b/internal/domains/api/services/processors/flxg/flxg3a9b_processor.go @@ -0,0 +1,61 @@ +package flxg + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/zhicha" +) + +// ProcessFLXG3A9BRequest FLXG3A9B API处理方法 - 法院被执行人限高版 +func ProcessFLXG3A9BRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.FLXG3A9BReq + 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, + "authorized": paramsDto.Authorized, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI045", 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/flxg/flxg970f_processor.go b/internal/domains/api/services/processors/flxg/flxg970f_processor.go index 39b99bc..f16e099 100644 --- a/internal/domains/api/services/processors/flxg/flxg970f_processor.go +++ b/internal/domains/api/services/processors/flxg/flxg970f_processor.go @@ -10,7 +10,7 @@ import ( "tyapi-server/internal/infrastructure/external/westdex" ) -// ProcessFLXG970FRequest FLXG970F API处理方法 +// ProcessFLXG970FRequest FLXG970F 风险人员核验API处理方法 func ProcessFLXG970FRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { var paramsDto dto.FLXG970FReq if err := json.Unmarshal(params, ¶msDto); err != nil { @@ -33,8 +33,8 @@ func ProcessFLXG970FRequest(ctx context.Context, params []byte, deps *processors reqData := map[string]interface{}{ "data": map[string]interface{}{ - "name": encryptedName, - "cardNo": encryptedIDCard, + "name": encryptedName, + "cardNo": encryptedIDCard, }, } @@ -48,4 +48,4 @@ func ProcessFLXG970FRequest(ctx context.Context, params []byte, deps *processors } return respBytes, nil -} \ No newline at end of file +} diff --git a/internal/domains/api/services/processors/flxg/flxgbc21_processor.go b/internal/domains/api/services/processors/flxg/flxgbc21_processor.go index d410de7..cd85733 100644 --- a/internal/domains/api/services/processors/flxg/flxgbc21_processor.go +++ b/internal/domains/api/services/processors/flxg/flxgbc21_processor.go @@ -7,7 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/westdex" + "tyapi-server/internal/infrastructure/external/yushan" ) // ProcessFLXGBC21Request FLXGbc21 API处理方法 @@ -21,14 +21,13 @@ func ProcessFLXGBC21Request(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - reqData := map[string]interface{}{ "mobile": paramsDto.MobileNo, } respBytes, err := deps.YushanService.CallAPI(ctx, "MOB032", reqData) if err != nil { - if errors.Is(err, westdex.ErrDatasource) { + if errors.Is(err, yushan.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) diff --git a/internal/domains/api/services/processors/flxg/flxgca3d_processor.go b/internal/domains/api/services/processors/flxg/flxgca3d_processor.go index 0589275..daf838a 100644 --- a/internal/domains/api/services/processors/flxg/flxgca3d_processor.go +++ b/internal/domains/api/services/processors/flxg/flxgca3d_processor.go @@ -33,7 +33,7 @@ func ProcessFLXGCA3DRequest(ctx context.Context, params []byte, deps *processors reqData := map[string]interface{}{ "data": map[string]interface{}{ - "name": encryptedName, + "name": encryptedName, "id_card": encryptedIDCard, }, } diff --git a/internal/domains/api/services/processors/flxg/flxgk5d2_processor.go b/internal/domains/api/services/processors/flxg/flxgk5d2_processor.go new file mode 100644 index 0000000..dbec989 --- /dev/null +++ b/internal/domains/api/services/processors/flxg/flxgk5d2_processor.go @@ -0,0 +1,61 @@ +package flxg + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/zhicha" +) + +// ProcessFLXGK5D2Request FLXGK5D2 API处理方法 - 法院被执行人高级版 +func ProcessFLXGK5D2Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.FLXGK5D2Req + 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, + "authorized": paramsDto.Authorized, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI046", 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/ivyz/ivyz0b03_processor.go b/internal/domains/api/services/processors/ivyz/ivyz0b03_processor.go index 6fbde94..af792f8 100644 --- a/internal/domains/api/services/processors/ivyz/ivyz0b03_processor.go +++ b/internal/domains/api/services/processors/ivyz/ivyz0b03_processor.go @@ -12,7 +12,7 @@ import ( // ProcessIVYZ0B03Request IVYZ0B03 API处理方法 func ProcessIVYZ0B03Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { - var paramsDto dto.IVYZ0b03Req + var paramsDto dto.IVYZ0B03Req if err := json.Unmarshal(params, ¶msDto); err != nil { return nil, errors.Join(processors.ErrSystem, err) } @@ -48,4 +48,4 @@ func ProcessIVYZ0B03Request(ctx context.Context, params []byte, deps *processors } return respBytes, nil -} \ No newline at end of file +} diff --git a/internal/domains/api/services/processors/ivyz/ivyzp2q6_processor.go b/internal/domains/api/services/processors/ivyz/ivyzp2q6_processor.go new file mode 100644 index 0000000..65e3f0c --- /dev/null +++ b/internal/domains/api/services/processors/ivyz/ivyzp2q6_processor.go @@ -0,0 +1,57 @@ +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/zhicha" +) + +// ProcessIVYZP2Q6Request IVYZP2Q6 API处理方法 - 身份认证二要素 +func ProcessIVYZP2Q6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.IVYZP2Q6Req + 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, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI011", 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/jrzq0b6y_processor.go b/internal/domains/api/services/processors/jrzq/jrzq0b6y_processor.go index ddb56a7..45be85c 100644 --- a/internal/domains/api/services/processors/jrzq/jrzq0b6y_processor.go +++ b/internal/domains/api/services/processors/jrzq/jrzq0b6y_processor.go @@ -7,7 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/westdex" + "tyapi-server/internal/infrastructure/external/yushan" ) // ProcessJRZQ0B6YRequest JRZQ0B6Y 银行卡黑名单查询V1API处理方法 @@ -21,38 +21,16 @@ func ProcessJRZQ0B6YRequest(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - encryptedName, err := deps.WestDexService.Encrypt(paramsDto.Name) - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - - encryptedIDCard, err := deps.WestDexService.Encrypt(paramsDto.IDCard) - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - - encryptedMobileNo, err := deps.WestDexService.Encrypt(paramsDto.MobileNo) - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - - encryptedBankCard, err := deps.WestDexService.Encrypt(paramsDto.BankCard) - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - reqData := map[string]interface{}{ - "data": map[string]interface{}{ - "name": encryptedName, - "cardId": encryptedBankCard, - "cardNo": encryptedIDCard, - "phone": encryptedMobileNo, - }, + "name": paramsDto.Name, + "cardId": paramsDto.BankCard, + "cardNo": paramsDto.IDCard, + "phone": paramsDto.MobileNo, } respBytes, err := deps.YushanService.CallAPI(ctx, "FIN019", reqData) if err != nil { - if errors.Is(err, westdex.ErrDatasource) { + if errors.Is(err, yushan.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) diff --git a/internal/domains/api/services/processors/jrzq/jrzq1w4x_processor.go b/internal/domains/api/services/processors/jrzq/jrzq1w4x_processor.go new file mode 100644 index 0000000..f6002e9 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzq1w4x_processor.go @@ -0,0 +1,64 @@ +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" +) + +// ProcessjrzqW4XRequest JRZQ1W4XAPI处理方法 - 全景档案 +func ProcessJRZQ1W4XRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQ1W4XReq + 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, + "authorized": paramsDto.Authorized, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI022", 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/jrzq8f7c_processor.go b/internal/domains/api/services/processors/jrzq/jrzq8f7c_processor.go new file mode 100644 index 0000000..5267ff3 --- /dev/null +++ b/internal/domains/api/services/processors/jrzq/jrzq8f7c_processor.go @@ -0,0 +1,62 @@ +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" +) + +// ProcessJRZQ8F7CRequest JRZQ8F7C API处理方法 +func ProcessJRZQ8F7CRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.JRZQ8F7CReq + 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, + "authorized": paramsDto.Authorized, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI047", 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/jrzq9a1w_processor.go b/internal/domains/api/services/processors/jrzq/jrzq9a1w_processor.go index abd5b9c..ba6fec4 100644 --- a/internal/domains/api/services/processors/jrzq/jrzq9a1w_processor.go +++ b/internal/domains/api/services/processors/jrzq/jrzq9a1w_processor.go @@ -7,7 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/westdex" + "tyapi-server/internal/infrastructure/external/yushan" ) // ProcessJRZQ9A1WRequest JRZQ9A1W 银行卡鉴权V1API处理方法 @@ -20,39 +20,16 @@ func ProcessJRZQ9A1WRequest(ctx context.Context, params []byte, deps *processors if err := deps.Validator.ValidateStruct(paramsDto); err != nil { return nil, errors.Join(processors.ErrInvalidParam, err) } - encryptedName, err := deps.WestDexService.Encrypt(paramsDto.Name) - - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - - encryptedIDCard, err := deps.WestDexService.Encrypt(paramsDto.IDCard) - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - - encryptedMobileNo, err := deps.WestDexService.Encrypt(paramsDto.MobileNo) - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - - encryptedBankCard, err := deps.WestDexService.Encrypt(paramsDto.BankCard) - if err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - reqData := map[string]interface{}{ - "data": map[string]interface{}{ - "name": encryptedName, - "cardId": encryptedBankCard, - "cardNo": encryptedIDCard, - "phone": encryptedMobileNo, - }, + "name": paramsDto.Name, + "cardId": paramsDto.BankCard, + "cardNo": paramsDto.IDCard, + "phone": paramsDto.MobileNo, } respBytes, err := deps.YushanService.CallAPI(ctx, "PCB145", reqData) if err != nil { - if errors.Is(err, westdex.ErrDatasource) { + if errors.Is(err, yushan.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) diff --git a/internal/domains/api/services/processors/qcxg/qcxg6b4e_processor.go b/internal/domains/api/services/processors/qcxg/qcxg6b4e_processor.go index aa0923e..d78798f 100644 --- a/internal/domains/api/services/processors/qcxg/qcxg6b4e_processor.go +++ b/internal/domains/api/services/processors/qcxg/qcxg6b4e_processor.go @@ -22,7 +22,7 @@ func ProcessQCXG6B4ERequest(ctx context.Context, params []byte, deps *processors } reqData := map[string]interface{}{ - "vin": paramsDto.VINCode, + "vin": paramsDto.VINCode, "authorized": paramsDto.Authorized, } @@ -43,4 +43,3 @@ func ProcessQCXG6B4ERequest(ctx context.Context, params []byte, deps *processors return respBytes, nil } - diff --git a/internal/domains/api/services/processors/qcxg/qcxg7a2b_processor.go b/internal/domains/api/services/processors/qcxg/qcxg7a2b_processor.go index 8c1c473..97c23a2 100644 --- a/internal/domains/api/services/processors/qcxg/qcxg7a2b_processor.go +++ b/internal/domains/api/services/processors/qcxg/qcxg7a2b_processor.go @@ -7,7 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/westdex" + "tyapi-server/internal/infrastructure/external/yushan" ) // ProcessQCXG7A2BRequest QCXG7A2B API处理方法 @@ -27,7 +27,7 @@ func ProcessQCXG7A2BRequest(ctx context.Context, params []byte, deps *processors respBytes, err := deps.YushanService.CallAPI(ctx, "CAR061", reqData) if err != nil { - if errors.Is(err, westdex.ErrDatasource) { + if errors.Is(err, yushan.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) diff --git a/internal/domains/api/services/processors/qygl/qygl2acd_processor.go b/internal/domains/api/services/processors/qygl/qygl2acd_processor.go index b4f2d4d..7571704 100644 --- a/internal/domains/api/services/processors/qygl/qygl2acd_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl2acd_processor.go @@ -38,9 +38,9 @@ func ProcessQYGL2ACDRequest(ctx context.Context, params []byte, deps *processors reqData := map[string]interface{}{ "data": map[string]interface{}{ - "entname": encryptedEntName, - "realname": encryptedLegalPerson, - "idcard": encryptedEntCode, + "name": encryptedEntName, + "oper_name": encryptedLegalPerson, + "keyword": encryptedEntCode, }, } @@ -54,4 +54,4 @@ func ProcessQYGL2ACDRequest(ctx context.Context, params []byte, deps *processors } return respBytes, nil -} \ No newline at end of file +} diff --git a/internal/domains/api/services/processors/qygl/qygl2b5c_processor.go b/internal/domains/api/services/processors/qygl/qygl2b5c_processor.go index 1ee2876..946dfa5 100644 --- a/internal/domains/api/services/processors/qygl/qygl2b5c_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl2b5c_processor.go @@ -24,9 +24,6 @@ func ProcessQYGL2B5CRequest(ctx context.Context, params []byte, deps *processors // 两选一校验:EntName 和 EntCode 至少传一个 var keyword string - if paramsDto.EntName != "" && paramsDto.EntCode != "" { - return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, errors.New("企业名称和企业统一信用代码只能传其中一个")) - } if paramsDto.EntName == "" && paramsDto.EntCode == "" { return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, errors.New("必须提供企业名称或企业统一信用代码中的其中一个")) } @@ -39,7 +36,7 @@ func ProcessQYGL2B5CRequest(ctx context.Context, params []byte, deps *processors } reqData := map[string]interface{}{ - "keyword": keyword, + "keyword": keyword, "authorized": paramsDto.Authorized, } @@ -60,4 +57,3 @@ func ProcessQYGL2B5CRequest(ctx context.Context, params []byte, deps *processors return respBytes, nil } - diff --git a/internal/domains/api/services/processors/qygl/qygl2s0w_processor.go b/internal/domains/api/services/processors/qygl/qygl2s0w_processor.go index c768185..5e493d6 100644 --- a/internal/domains/api/services/processors/qygl/qygl2s0w_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl2s0w_processor.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "fmt" "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" @@ -21,24 +22,40 @@ func ProcessQYGL2S0WRequest(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - // 条件验证逻辑 + // 验证逻辑 + var nameValue string if paramsDto.Type == "per" { - // 当失信被执行人类型为个人时,idCardNum 必填 - if paramsDto.IDCardNum == "" { - return nil, errors.Join(processors.ErrInvalidParam, errors.New("当失信被执行人类型为个人时,身份证件号不能为空")) + // 个人查询:idCardNum 必填 + fmt.Print("个人") + nameValue = paramsDto.Name + fmt.Println("nameValue", nameValue) + if paramsDto.IDCard == "" { + fmt.Print("个人身份证件号不能为空") + return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, errors.New("当失信被执行人类型为个人时,身份证件号不能为空")) + } } else if paramsDto.Type == "ent" { - // 当查询为企业时,name 和 entMark 两者必填其一 - if paramsDto.Name == "" && paramsDto.EntMark == "" { - return nil, errors.Join(processors.ErrInvalidParam, errors.New("当查询为企业时,企业名称和企业标识统一代码注册号两者必填其一")) + // 企业查询:name 和 entMark 两者必填其一 + if paramsDto.EntName == "" && paramsDto.EntCode == "" { + return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, errors.New("当查询为企业时,企业名称和企业标识统一代码注册号两者必填其一")) } + } - // 构建请求数据,直接传递姓名、身份证、手机号 + // 确定使用哪个值作为 name + if paramsDto.Type == "ent" && paramsDto.EntName != "" { + nameValue = paramsDto.EntName + } else { + nameValue = paramsDto.EntCode + } + + fmt.Println("dto2s0w", paramsDto) + + // 构建请求数据(不传的参数也需要添加,值为空字符串) reqData := map[string]interface{}{ - "name": paramsDto.Name, - "idCardNum": paramsDto.IDCardNum, - "entMark": paramsDto.EntMark, + "idCardNum": paramsDto.IDCard, + "name": nameValue, + "entMark": paramsDto.EntCode, "type": paramsDto.Type, } diff --git a/internal/domains/api/services/processors/qygl/qygl4b2e_processor.go b/internal/domains/api/services/processors/qygl/qygl4b2e_processor.go index 16ffc93..1f94d0e 100644 --- a/internal/domains/api/services/processors/qygl/qygl4b2e_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl4b2e_processor.go @@ -24,18 +24,18 @@ func ProcessQYGL4B2ERequest(ctx context.Context, params []byte, deps *processors // 设置默认值 pageSize := paramsDto.PageSize if pageSize == 0 { - pageSize = 20 + pageSize = int64(20) } pageNum := paramsDto.PageNum if pageNum == 0 { - pageNum = 1 + pageNum = int64(1) } // 构建API调用参数 apiParams := map[string]string{ "keyword": paramsDto.EntCode, - "pageSize": strconv.Itoa(pageSize), - "pageNum": strconv.Itoa(pageNum), + "pageSize": strconv.FormatInt(pageSize, 10), + "pageNum": strconv.FormatInt(pageNum, 10), } // 调用天眼查API - 税收违法 diff --git a/internal/domains/api/services/processors/qygl/qygl5a3c_processor.go b/internal/domains/api/services/processors/qygl/qygl5a3c_processor.go index 712ebac..84f4b3e 100644 --- a/internal/domains/api/services/processors/qygl/qygl5a3c_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl5a3c_processor.go @@ -24,18 +24,18 @@ func ProcessQYGL5A3CRequest(ctx context.Context, params []byte, deps *processors // 设置默认值 pageSize := paramsDto.PageSize if pageSize == 0 { - pageSize = 20 + pageSize = int64(20) } pageNum := paramsDto.PageNum if pageNum == 0 { - pageNum = 1 + pageNum = int64(1) } // 构建API调用参数 apiParams := map[string]string{ "keyword": paramsDto.EntCode, - "pageSize": strconv.Itoa(pageSize), - "pageNum": strconv.Itoa(pageNum), + "pageSize": strconv.FormatInt(pageSize, 10), + "pageNum": strconv.FormatInt(pageNum, 10), } // 调用天眼查API - 对外投资历史 diff --git a/internal/domains/api/services/processors/qygl/qygl5a9t_processor.go b/internal/domains/api/services/processors/qygl/qygl5a9t_processor.go new file mode 100644 index 0000000..37f5ef0 --- /dev/null +++ b/internal/domains/api/services/processors/qygl/qygl5a9t_processor.go @@ -0,0 +1,64 @@ +package qygl + +import ( + "context" + "encoding/json" + "errors" + "fmt" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/xingwei" +) + +// Processqygl5a9tRequest QYGL5A9T API处理方法 - 全国企业各类工商风险统计数量查询 +func ProcessQYGL5A9TRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + + var paramsDto dto.QYGL5A9TReq + 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) + } + + // 两选一校验:EntName 和 EntCode 至少传一个 + var keyword string + if paramsDto.EntName == "" && paramsDto.EntCode == "" { + return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, errors.New("必须提供企业名称或企业统一信用代码中的其中一个")) + } + + // 确定使用哪个值作为 keyword + if paramsDto.EntName != "" { + keyword = paramsDto.EntName + } else { + keyword = paramsDto.EntCode + } + + // 构建请求数据, + reqData := map[string]interface{}{ + "nameCode": keyword, + } + + // 调用行为数据API,使用指定的project_id + projectID := "CDJ-1054665422426533888" + 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 +} diff --git a/internal/domains/api/services/processors/qygl/qygl5f6a_processor.go b/internal/domains/api/services/processors/qygl/qygl5f6a_processor.go index d7cc1dc..8de26b8 100644 --- a/internal/domains/api/services/processors/qygl/qygl5f6a_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl5f6a_processor.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "fmt" "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" @@ -20,24 +21,16 @@ func ProcessQYGL5F6ARequest(ctx context.Context, params []byte, deps *processors if err := deps.Validator.ValidateStruct(paramsDto); err != nil { return nil, errors.Join(processors.ErrInvalidParam, err) } + fmt.Println("paramsDto", paramsDto) // 构建请求数据,将项目规范的字段名转换为 XingweiService 需要的字段名 reqData := map[string]interface{}{ "idCardNum": paramsDto.IDCard, } - // 如果传了身份证,则添加到请求数据中 - if paramsDto.MobileNo != "" { - reqData["phoneNumber"] = paramsDto.MobileNo - } - - // 如果传了企业统一信用代码,则添加到请求数据中 - if paramsDto.EntCode != "" { - reqData["ucc"] = paramsDto.EntCode - } - // 调用行为数据API,使用指定的project_id projectID := "CDJ-1101695397213958144" + fmt.Println("reqData", reqData) respBytes, err := deps.XingweiService.CallAPI(ctx, projectID, reqData) if err != nil { if errors.Is(err, xingwei.ErrNotFound) { diff --git a/internal/domains/api/services/processors/qygl/qygl6f2d_processor.go b/internal/domains/api/services/processors/qygl/qygl6f2d_processor.go index e7c8037..723e4d4 100644 --- a/internal/domains/api/services/processors/qygl/qygl6f2d_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl6f2d_processor.go @@ -42,4 +42,4 @@ func ProcessQYGL6F2DRequest(ctx context.Context, params []byte, deps *processors } return respBytes, nil -} \ No newline at end of file +} diff --git a/internal/domains/api/services/processors/qygl/qygl6s1b_processor.go b/internal/domains/api/services/processors/qygl/qygl6s1b_processor.go index befb856..7a9396d 100644 --- a/internal/domains/api/services/processors/qygl/qygl6s1b_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl6s1b_processor.go @@ -7,6 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/zhicha" ) // ProcessQYGL6S1BRequest QYGL6S1B API处理方法 - 董监高司法综合信息核验 @@ -21,30 +22,28 @@ func ProcessQYGL6S1BRequest(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - encryptedPhone, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) + encryptedIdCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) if err != nil { return nil, errors.Join(processors.ErrSystem, err) } // 构建API调用参数 - apiParams := map[string]string{ - "idCard": encryptedPhone, + reqData := map[string]interface{}{ + "idCard": encryptedIdCard, "authorized": paramsDto.Authorized, } - // 调用天眼查API - - response, err := deps.TianYanChaService.CallAPI(ctx, "ZCI043", apiParams) + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI043", reqData) if err != nil { - return nil, convertTianYanChaError(err) + if errors.Is(err, zhicha.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } else { + return nil, errors.Join(processors.ErrSystem, err) + } } - // 检查天眼查API调用是否成功 - if !response.Success { - return nil, errors.Join(processors.ErrDatasource, errors.New(response.Message)) - } - - // 返回天眼查响应数据 - respBytes, err := json.Marshal(response.Data) + // 将响应数据转换为JSON字节 + respBytes, err := json.Marshal(respData) if err != nil { return nil, errors.Join(processors.ErrSystem, err) } diff --git a/internal/domains/api/services/processors/qygl/qygl7c1a_processor.go b/internal/domains/api/services/processors/qygl/qygl7c1a_processor.go index a29ded0..7fc03db 100644 --- a/internal/domains/api/services/processors/qygl/qygl7c1a_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl7c1a_processor.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "fmt" "strconv" "tyapi-server/internal/domains/api/dto" @@ -16,6 +17,7 @@ func ProcessQYGL7C1ARequest(ctx context.Context, params []byte, deps *processors if err := json.Unmarshal(params, ¶msDto); err != nil { return nil, errors.Join(processors.ErrSystem, err) } + fmt.Println("paramsDto", paramsDto) if err := deps.Validator.ValidateStruct(paramsDto); err != nil { return nil, errors.Join(processors.ErrInvalidParam, err) @@ -24,18 +26,18 @@ func ProcessQYGL7C1ARequest(ctx context.Context, params []byte, deps *processors // 设置默认值 pageSize := paramsDto.PageSize if pageSize == 0 { - pageSize = 20 + pageSize = int64(20) } pageNum := paramsDto.PageNum if pageNum == 0 { - pageNum = 1 + pageNum = int64(1) } // 构建API调用参数 apiParams := map[string]string{ "keyword": paramsDto.EntCode, - "pageSize": strconv.Itoa(pageSize), - "pageNum": strconv.Itoa(pageNum), + "pageSize": strconv.FormatInt(pageSize, 10), + "pageNum": strconv.FormatInt(pageNum, 10), } // 调用天眼查API - 经营异常 diff --git a/internal/domains/api/services/processors/qygl/qygl7d9a_processor.go b/internal/domains/api/services/processors/qygl/qygl7d9a_processor.go index f3dac60..32d6a7d 100644 --- a/internal/domains/api/services/processors/qygl/qygl7d9a_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl7d9a_processor.go @@ -24,18 +24,18 @@ func ProcessQYGL7D9ARequest(ctx context.Context, params []byte, deps *processors // 设置默认值 pageSize := paramsDto.PageSize if pageSize == 0 { - pageSize = 20 + pageSize = int64(20) } pageNum := paramsDto.PageNum if pageNum == 0 { - pageNum = 1 + pageNum = int64(1) } // 构建API调用参数 apiParams := map[string]string{ "keyword": paramsDto.EntCode, - "pageSize": strconv.Itoa(pageSize), - "pageNum": strconv.Itoa(pageNum), + "pageSize": strconv.FormatInt(pageSize, 10), + "pageNum": strconv.FormatInt(pageNum, 10), } // 调用天眼查API - 欠税公告 diff --git a/internal/domains/api/services/processors/qygl/qygl8b4d_processor.go b/internal/domains/api/services/processors/qygl/qygl8b4d_processor.go index 1bfc4be..35e3e10 100644 --- a/internal/domains/api/services/processors/qygl/qygl8b4d_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl8b4d_processor.go @@ -24,18 +24,18 @@ func ProcessQYGL8B4DRequest(ctx context.Context, params []byte, deps *processors // 设置默认值 pageSize := paramsDto.PageSize if pageSize == 0 { - pageSize = 20 + pageSize = int64(20) } pageNum := paramsDto.PageNum if pageNum == 0 { - pageNum = 1 + pageNum = int64(1) } // 构建API调用参数 apiParams := map[string]string{ "keyword": paramsDto.EntCode, - "pageSize": strconv.Itoa(pageSize), - "pageNum": strconv.Itoa(pageNum), + "pageSize": strconv.FormatInt(pageSize, 10), + "pageNum": strconv.FormatInt(pageNum, 10), } // 调用天眼查API - 融资历史 diff --git a/internal/domains/api/services/processors/qygl/qygl9e2f_processor.go b/internal/domains/api/services/processors/qygl/qygl9e2f_processor.go index 8b07c0e..4340b5c 100644 --- a/internal/domains/api/services/processors/qygl/qygl9e2f_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl9e2f_processor.go @@ -24,18 +24,18 @@ func ProcessQYGL9E2FRequest(ctx context.Context, params []byte, deps *processors // 设置默认值 pageSize := paramsDto.PageSize if pageSize == 0 { - pageSize = 20 + pageSize = int64(20) } pageNum := paramsDto.PageNum if pageNum == 0 { - pageNum = 1 + pageNum = int64(1) } // 构建API调用参数 apiParams := map[string]string{ "keyword": paramsDto.EntCode, - "pageSize": strconv.Itoa(pageSize), - "pageNum": strconv.Itoa(pageNum), + "pageSize": strconv.FormatInt(pageSize, 10), + "pageNum": strconv.FormatInt(pageNum, 10), } // 调用天眼查API - 行政处罚 diff --git a/internal/domains/api/services/processors/qygl/qygl9t1q_processor.go b/internal/domains/api/services/processors/qygl/qygl9t1q_processor.go new file mode 100644 index 0000000..ca4ef36 --- /dev/null +++ b/internal/domains/api/services/processors/qygl/qygl9t1q_processor.go @@ -0,0 +1,55 @@ +package qygl + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/xingwei" +) + +// Processqygl9t1qRequest QYGL9T1Q API处理方法 - 全国企业借贷意向验证查询_V1 +func ProcessQYGL9T1QRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + + var paramsDto dto.QYGL9T1QReq + 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) + } + + // 构建请求数据,直接传递姓名、身份证、手机号等 + reqData := map[string]interface{}{ + "ownerType": paramsDto.OwnerType, + "phoneNumber": paramsDto.MobileNo, + "idCardNum": paramsDto.IDCard, + "name": paramsDto.Name, + "searchKey": paramsDto.EntCode, // 企业统一信用代码和注册号两者必填其一 + "authAuthorizeFileCode": paramsDto.Authorized, + } + + // 调用行为数据API,使用指定的project_id + projectID := "CDJ-1078965351139438592" + 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 +} diff --git a/internal/domains/api/services/processors/yysy/yysy8f3a_processor.go b/internal/domains/api/services/processors/yysy/yysy8f3a_processor.go index 42e95e7..a53a3fc 100644 --- a/internal/domains/api/services/processors/yysy/yysy8f3a_processor.go +++ b/internal/domains/api/services/processors/yysy/yysy8f3a_processor.go @@ -23,9 +23,9 @@ func ProcessYYSY8F3ARequest(ctx context.Context, params []byte, deps *processors // 构建请求数据,直接传递姓名、身份证、手机号 reqData := map[string]interface{}{ - "name": paramsDto.Name, - "idCardNum": paramsDto.IDCard, - "phoneNumber": paramsDto.MobileNo, + "name": paramsDto.Name, + "idCardNum": paramsDto.IDCard, + "phoneNumber": paramsDto.MobileNo, } // 调用行为数据API,使用指定的project_id diff --git a/internal/infrastructure/database/repositories/product/gorm_product_documentation_repository.go b/internal/infrastructure/database/repositories/product/gorm_product_documentation_repository.go index c63eebc..d96ee1b 100644 --- a/internal/infrastructure/database/repositories/product/gorm_product_documentation_repository.go +++ b/internal/infrastructure/database/repositories/product/gorm_product_documentation_repository.go @@ -105,4 +105,4 @@ func (r *GormProductDocumentationRepository) CountByProductID(ctx context.Contex var count int64 err := r.GetDB(ctx).Model(&entities.ProductDocumentation{}).Where("product_id = ?", productID).Count(&count).Error return count, err -} \ No newline at end of file +}