add 11/29

This commit is contained in:
2025-11-29 15:23:57 +08:00
parent 500264e9e5
commit 9c776b8bf3
34 changed files with 634 additions and 167 deletions

View File

@@ -982,7 +982,7 @@ func (s *ProductApplicationServiceImpl) getDTOMap() map[string]interface{} {
"YYSY4B21": &dto.YYSY4B21Req{}, "YYSY4B21": &dto.YYSY4B21Req{},
"YYSY6F2E": &dto.YYSY6F2EReq{}, "YYSY6F2E": &dto.YYSY6F2EReq{},
"YYSY09CD": &dto.YYSY09CDReq{}, "YYSY09CD": &dto.YYSY09CDReq{},
"IVYZ0b03": &dto.IVYZ0b03Req{}, "IVYZ0B03": &dto.IVYZ0B03Req{},
"YYSYBE08": &dto.YYSYBE08Req{}, "YYSYBE08": &dto.YYSYBE08Req{},
"YYSYD50F": &dto.YYSYD50FReq{}, "YYSYD50F": &dto.YYSYD50FReq{},
"YYSYF7DB": &dto.YYSYF7DBReq{}, "YYSYF7DB": &dto.YYSYF7DBReq{},

View File

@@ -151,7 +151,7 @@ type YYSY09CDReq struct {
IDCard string `json:"id_card" validate:"required,validIDCard"` IDCard string `json:"id_card" validate:"required,validIDCard"`
Name string `json:"name" validate:"required,min=1,validName"` 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"` MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
Name string `json:"name" validate:"required,min=1,validName"` Name string `json:"name" validate:"required,min=1,validName"`
} }
@@ -304,6 +304,17 @@ type IVYZ9K2LReq struct {
IDCard string `json:"id_card" validate:"required,validIDCard"` IDCard string `json:"id_card" validate:"required,validIDCard"`
PhotoData string `json:"photo_data" validate:"required,validBase64Image"` 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 { type IVYZ9D2EReq struct {
Name string `json:"name" validate:"required,min=1,validName"` Name string `json:"name" validate:"required,min=1,validName"`
@@ -327,26 +338,26 @@ type DWBG7F3AReq struct {
// 新增的QYGL处理器DTO // 新增的QYGL处理器DTO
type QYGL5A3CReq struct { type QYGL5A3CReq struct {
EntCode string `json:"ent_code" validate:"required,validUSCI"` EntCode string `json:"ent_code" validate:"required,validUSCI"`
PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"`
PageNum int `json:"page_num" validate:"omitempty,min=1"` PageNum int64 `json:"page_num" validate:"omitempty,min=1"`
} }
type QYGL8B4DReq struct { type QYGL8B4DReq struct {
EntCode string `json:"ent_code" validate:"required,validUSCI"` EntCode string `json:"ent_code" validate:"required,validUSCI"`
PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"`
PageNum int `json:"page_num" validate:"omitempty,min=1"` PageNum int64 `json:"page_num" validate:"omitempty,min=1"`
} }
type QYGL9E2FReq struct { type QYGL9E2FReq struct {
EntCode string `json:"ent_code" validate:"required,validUSCI"` EntCode string `json:"ent_code" validate:"required,validUSCI"`
PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"`
PageNum int `json:"page_num" validate:"omitempty,min=1"` PageNum int64 `json:"page_num" validate:"omitempty,min=1"`
} }
type QYGL7C1AReq struct { type QYGL7C1AReq struct {
EntCode string `json:"ent_code" validate:"required,validUSCI"` EntCode string `json:"ent_code" validate:"required,validUSCI"`
PageSize int `json:"page_size" validate:"omitempty,min=1,max=100"` PageSize int64 `json:"page_size" validate:"omitempty,min=1,max=100"`
PageNum int `json:"page_num" validate:"omitempty,min=1"` PageNum int64 `json:"page_num" validate:"omitempty,min=1"`
} }
type QYGL3F8EReq struct { type QYGL3F8EReq struct {
@@ -396,6 +407,31 @@ type FLXG9C1DReq struct {
Authorized string `json:"authorized" validate:"required,oneof=0 1"` 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 { type FLXG2E8FReq struct {
IDCard string `json:"id_card" validate:"required,validIDCard"` IDCard string `json:"id_card" validate:"required,validIDCard"`
Name string `json:"name" validate:"required,min=1,validName"` 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"` Name string `json:"name" validate:"required,min=1,validName"`
IDCard string `json:"id_card" validate:"required,validIDCard"` IDCard string `json:"id_card" validate:"required,validIDCard"`
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` 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 { type JRZQ9A1WReq struct {
Name string `json:"name" validate:"required,min=1,validName"` Name string `json:"name" validate:"required,min=1,validName"`
IDCard string `json:"id_card" validate:"required,validIDCard"` IDCard string `json:"id_card" validate:"required,validIDCard"`
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` MobileNo string `json:"mobile_no" validate:"omitempty,min=11,max=11,validMobileNo"`
BankCard string `json:"bank_card" validate:"omitempty,validBankCard"` BankCard string `json:"bank_card" validate:"required,validBankCard"`
} }
// 企业管理董监高司法综合信息核验 // 企业管理董监高司法综合信息核验
@@ -520,6 +556,31 @@ type QYGL2B5CReq struct {
Authorized string `json:"authorized" validate:"required,oneof=0 1"` 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 { type JRZQ2F8AReq struct {
Name string `json:"name" validate:"required,min=1,validName"` Name string `json:"name" validate:"required,min=1,validName"`
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
@@ -588,9 +649,7 @@ type FLXG7E8FReq struct {
} }
type QYGL5F6AReq struct { type QYGL5F6AReq struct {
MobileNo string `json:"mobile_no" validate:"omitempty,min=11,max=11,validMobileNo"` IDCard string `json:"id_card" validate:"required,validIDCard"`
IDCard string `json:"id_card" validate:"required,validIDCard"`
EntCode string `json:"ent_code" validate:"omitempty,validUSCI"`
} }
type IVYZ6G7HReq struct { type IVYZ6G7HReq struct {

View File

@@ -105,7 +105,8 @@ func registerAllProcessors(combService *comb.CombService) {
"FLXG9C1D": flxg.ProcessFLXG9C1DRequest, "FLXG9C1D": flxg.ProcessFLXG9C1DRequest,
"FLXG2E8F": flxg.ProcessFLXG2E8FRequest, "FLXG2E8F": flxg.ProcessFLXG2E8FRequest,
"FLXG7E8F": flxg.ProcessFLXG7E8FRequest, "FLXG7E8F": flxg.ProcessFLXG7E8FRequest,
"FLXG3A9B": flxg.ProcessFLXG3A9BRequest,
"FLXGK5D2": flxg.ProcessFLXGK5D2Request,
// JRZQ系列处理器 // JRZQ系列处理器
"JRZQ8203": jrzq.ProcessJRZQ8203Request, "JRZQ8203": jrzq.ProcessJRZQ8203Request,
"JRZQ0A03": jrzq.ProcessJRZQ0A03Request, "JRZQ0A03": jrzq.ProcessJRZQ0A03Request,
@@ -128,6 +129,8 @@ func registerAllProcessors(combService *comb.CombService) {
"JRZQ3C9R": jrzq.ProcessJRZQ3C9RRequest, "JRZQ3C9R": jrzq.ProcessJRZQ3C9RRequest,
"JRZQ0B6Y": jrzq.ProcessJRZQ0B6YRequest, "JRZQ0B6Y": jrzq.ProcessJRZQ0B6YRequest,
"JRZQ9A1W": jrzq.ProcessJRZQ9A1WRequest, "JRZQ9A1W": jrzq.ProcessJRZQ9A1WRequest,
"JRZQ8F7C": jrzq.ProcessJRZQ8F7CRequest,
// QYGL系列处理器 // QYGL系列处理器
"QYGL8261": qygl.ProcessQYGL8261Request, "QYGL8261": qygl.ProcessQYGL8261Request,
"QYGL2ACD": qygl.ProcessQYGL2ACDRequest, "QYGL2ACD": qygl.ProcessQYGL2ACDRequest,
@@ -147,6 +150,9 @@ func registerAllProcessors(combService *comb.CombService) {
"QYGL5F6A": qygl.ProcessQYGL5F6ARequest, // 企业相关查询 "QYGL5F6A": qygl.ProcessQYGL5F6ARequest, // 企业相关查询
"QYGL2B5C": qygl.ProcessQYGL2B5CRequest, // 企业联系人实际经营地址 "QYGL2B5C": qygl.ProcessQYGL2B5CRequest, // 企业联系人实际经营地址
"QYGL6S1B": qygl.ProcessQYGL6S1BRequest, //董监高司法综合信息核验 "QYGL6S1B": qygl.ProcessQYGL6S1BRequest, //董监高司法综合信息核验
"QYGL9T1Q": qygl.ProcessQYGL9T1QRequest, //全国企业借贷意向验证查询_V1
"QYGL5A9T": qygl.ProcessQYGL5A9TRequest, //全国企业各类工商风险统计数量查询
"QYGL2S0W": qygl.ProcessQYGL2S0WRequest, //失信被执行企业个人查询
// YYSY系列处理器 // YYSY系列处理器
"YYSYD50F": yysy.ProcessYYSYD50FRequest, "YYSYD50F": yysy.ProcessYYSYD50FRequest,
@@ -192,6 +198,8 @@ func registerAllProcessors(combService *comb.CombService) {
"IVYZ8I9J": ivyz.ProcessIVYZ8I9JRequest, "IVYZ8I9J": ivyz.ProcessIVYZ8I9JRequest,
"IVYZ9K2L": ivyz.ProcessIVYZ9K2LRequest, "IVYZ9K2L": ivyz.ProcessIVYZ9K2LRequest,
"IVYZ2C1P": ivyz.ProcessIVYZ2C1PRequest, "IVYZ2C1P": ivyz.ProcessIVYZ2C1PRequest,
"IVYZP2Q6": ivyz.ProcessIVYZP2Q6Request,
"JRZQ1W4X": jrzq.ProcessJRZQ1W4XRequest,
// COMB系列处理器 - 只注册有自定义逻辑的组合包 // COMB系列处理器 - 只注册有自定义逻辑的组合包
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑重命名ApiCode "COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑重命名ApiCode

View File

@@ -113,7 +113,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string
"YYSY4B21": &dto.YYSY4B21Req{}, "YYSY4B21": &dto.YYSY4B21Req{},
"YYSY6F2E": &dto.YYSY6F2EReq{}, "YYSY6F2E": &dto.YYSY6F2EReq{},
"YYSY09CD": &dto.YYSY09CDReq{}, "YYSY09CD": &dto.YYSY09CDReq{},
"IVYZ0b03": &dto.IVYZ0b03Req{}, "IVYZ0B03": &dto.IVYZ0B03Req{},
"YYSYBE08": &dto.YYSYBE08Req{}, "YYSYBE08": &dto.YYSYBE08Req{},
"YYSYD50F": &dto.YYSYD50FReq{}, "YYSYD50F": &dto.YYSYD50FReq{},
"YYSYF7DB": &dto.YYSYF7DBReq{}, "YYSYF7DB": &dto.YYSYF7DBReq{},
@@ -172,7 +172,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string
"IVYZ6G7H": &dto.IVYZ6G7HReq{}, "IVYZ6G7H": &dto.IVYZ6G7HReq{},
"IVYZ8I9J": &dto.IVYZ8I9JReq{}, "IVYZ8I9J": &dto.IVYZ8I9JReq{},
"JRZQ0L85": &dto.JRZQ0L85Req{}, "JRZQ0L85": &dto.JRZQ0L85Req{},
"COMBHZY2": &dto.COMBHZY2Req{}, "COMBHZY2": &dto.COMBHZY2Req{}, // 自此无imp11.28
"QCXG8A3D": &dto.QCXG8A3DReq{}, "QCXG8A3D": &dto.QCXG8A3DReq{},
"QCXG6B4E": &dto.QCXG6B4EReq{}, "QCXG6B4E": &dto.QCXG6B4EReq{},
"QYGL2B5C": &dto.QYGL2B5CReq{}, "QYGL2B5C": &dto.QYGL2B5CReq{},
@@ -185,6 +185,15 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string
"QYGL6S1B": &dto.QYGL6S1BReq{}, "QYGL6S1B": &dto.QYGL6S1BReq{},
"JRZQ0B6Y": &dto.JRZQ0B6YReq{}, "JRZQ0B6Y": &dto.JRZQ0B6YReq{},
"JRZQ9A1W": &dto.JRZQ9A1WReq{}, "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 // 优先返回已配置的DTO
@@ -381,6 +390,8 @@ func (s *FormConfigServiceImpl) generateFieldLabel(jsonTag string) string {
"vin_code": "车辆识别代号VIN码", "vin_code": "车辆识别代号VIN码",
"return_type": "返回类型", "return_type": "返回类型",
"photo_data": "人脸图片", "photo_data": "人脸图片",
"owner_type": "企业主类型",
"type": "查询类型",
} }
if label, exists := labelMap[jsonTag]; exists { if label, exists := labelMap[jsonTag]; exists {
@@ -423,6 +434,8 @@ func (s *FormConfigServiceImpl) generateExampleValue(fieldType reflect.Type, jso
"vin_code": "LSGBF53M8DS123456", "vin_code": "LSGBF53M8DS123456",
"return_type": "1", "return_type": "1",
"photo_data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", "photo_data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
"ownerType": "1",
"type": "per",
} }
if example, exists := exampleMap[jsonTag]; exists { if example, exists := exampleMap[jsonTag]; exists {
@@ -474,6 +487,8 @@ func (s *FormConfigServiceImpl) generatePlaceholder(jsonTag string, fieldType st
"vin_code": "请输入17位车辆识别代号VIN码", "vin_code": "请输入17位车辆识别代号VIN码",
"return_type": "请选择返回类型", "return_type": "请选择返回类型",
"photo_data": "请输入base64编码的人脸图片支持JPG、BMP、PNG格式", "photo_data": "请输入base64编码的人脸图片支持JPG、BMP、PNG格式",
"ownerType": "请选择企业主类型",
"type": "请选择查询类型",
} }
if placeholder, exists := placeholderMap[jsonTag]; exists { 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", "vin_code": "请输入17位车辆识别代号VIN码Vehicle Identification Number",
"return_type": "返回类型1-专业和学校名称数据返回编码形式默认2-专业和学校名称数据返回中文名称", "return_type": "返回类型1-专业和学校名称数据返回编码形式默认2-专业和学校名称数据返回中文名称",
"photo_data": "人脸图片必填base64编码的图片数据仅支持JPG、BMP、PNG三种格式", "photo_data": "人脸图片必填base64编码的图片数据仅支持JPG、BMP、PNG三种格式",
"owner_type": "企业主类型编码1-法定代表人2-主要人员3-自然人股东4-法定代表人及自然人股东5-其他",
"type": "查询类型per-人员ent-企业 1",
} }
if desc, exists := descMap[jsonTag]; exists { if desc, exists := descMap[jsonTag]; exists {

View File

@@ -7,7 +7,7 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/yushan"
) )
// ProcessFLXG0687Request FLXG0687 API处理方法 // ProcessFLXG0687Request FLXG0687 API处理方法
@@ -21,15 +21,14 @@ func ProcessFLXG0687Request(ctx context.Context, params []byte, deps *processors
return nil, errors.Join(processors.ErrInvalidParam, err) return nil, errors.Join(processors.ErrInvalidParam, err)
} }
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"keyWord": paramsDto.IDCard, "keyWord": paramsDto.IDCard,
"type": 3, "type": 3,
} }
respBytes, err := deps.YushanService.CallAPI(ctx, "RIS031", reqData) respBytes, err := deps.YushanService.CallAPI(ctx, "RIS031", reqData)
if err != nil { if err != nil {
if errors.Is(err, westdex.ErrDatasource) { if errors.Is(err, yushan.ErrDatasource) {
return nil, errors.Join(processors.ErrDatasource, err) return nil, errors.Join(processors.ErrDatasource, err)
} else { } else {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)

View File

@@ -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, &paramsDto); 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
}

View File

@@ -10,7 +10,7 @@ import (
"tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/westdex"
) )
// ProcessFLXG970FRequest FLXG970F API处理方法 // ProcessFLXG970FRequest FLXG970F 风险人员核验API处理方法
func ProcessFLXG970FRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { func ProcessFLXG970FRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
var paramsDto dto.FLXG970FReq var paramsDto dto.FLXG970FReq
if err := json.Unmarshal(params, &paramsDto); err != nil { if err := json.Unmarshal(params, &paramsDto); err != nil {
@@ -33,8 +33,8 @@ func ProcessFLXG970FRequest(ctx context.Context, params []byte, deps *processors
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"data": map[string]interface{}{ "data": map[string]interface{}{
"name": encryptedName, "name": encryptedName,
"cardNo": encryptedIDCard, "cardNo": encryptedIDCard,
}, },
} }
@@ -48,4 +48,4 @@ func ProcessFLXG970FRequest(ctx context.Context, params []byte, deps *processors
} }
return respBytes, nil return respBytes, nil
} }

View File

@@ -7,7 +7,7 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/yushan"
) )
// ProcessFLXGBC21Request FLXGbc21 API处理方法 // ProcessFLXGBC21Request FLXGbc21 API处理方法
@@ -21,14 +21,13 @@ func ProcessFLXGBC21Request(ctx context.Context, params []byte, deps *processors
return nil, errors.Join(processors.ErrInvalidParam, err) return nil, errors.Join(processors.ErrInvalidParam, err)
} }
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"mobile": paramsDto.MobileNo, "mobile": paramsDto.MobileNo,
} }
respBytes, err := deps.YushanService.CallAPI(ctx, "MOB032", reqData) respBytes, err := deps.YushanService.CallAPI(ctx, "MOB032", reqData)
if err != nil { if err != nil {
if errors.Is(err, westdex.ErrDatasource) { if errors.Is(err, yushan.ErrDatasource) {
return nil, errors.Join(processors.ErrDatasource, err) return nil, errors.Join(processors.ErrDatasource, err)
} else { } else {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)

View File

@@ -33,7 +33,7 @@ func ProcessFLXGCA3DRequest(ctx context.Context, params []byte, deps *processors
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"data": map[string]interface{}{ "data": map[string]interface{}{
"name": encryptedName, "name": encryptedName,
"id_card": encryptedIDCard, "id_card": encryptedIDCard,
}, },
} }

View File

@@ -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, &paramsDto); 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
}

View File

@@ -12,7 +12,7 @@ import (
// ProcessIVYZ0B03Request IVYZ0B03 API处理方法 // ProcessIVYZ0B03Request IVYZ0B03 API处理方法
func ProcessIVYZ0B03Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { 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, &paramsDto); err != nil { if err := json.Unmarshal(params, &paramsDto); err != nil {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)
} }
@@ -48,4 +48,4 @@ func ProcessIVYZ0B03Request(ctx context.Context, params []byte, deps *processors
} }
return respBytes, nil return respBytes, nil
} }

View File

@@ -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, &paramsDto); 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
}

View File

@@ -7,7 +7,7 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/yushan"
) )
// ProcessJRZQ0B6YRequest JRZQ0B6Y 银行卡黑名单查询V1API处理方法 // ProcessJRZQ0B6YRequest JRZQ0B6Y 银行卡黑名单查询V1API处理方法
@@ -21,38 +21,16 @@ func ProcessJRZQ0B6YRequest(ctx context.Context, params []byte, deps *processors
return nil, errors.Join(processors.ErrInvalidParam, err) 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{}{ reqData := map[string]interface{}{
"data": map[string]interface{}{ "name": paramsDto.Name,
"name": encryptedName, "cardId": paramsDto.BankCard,
"cardId": encryptedBankCard, "cardNo": paramsDto.IDCard,
"cardNo": encryptedIDCard, "phone": paramsDto.MobileNo,
"phone": encryptedMobileNo,
},
} }
respBytes, err := deps.YushanService.CallAPI(ctx, "FIN019", reqData) respBytes, err := deps.YushanService.CallAPI(ctx, "FIN019", reqData)
if err != nil { if err != nil {
if errors.Is(err, westdex.ErrDatasource) { if errors.Is(err, yushan.ErrDatasource) {
return nil, errors.Join(processors.ErrDatasource, err) return nil, errors.Join(processors.ErrDatasource, err)
} else { } else {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)

View File

@@ -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, &paramsDto); 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
}

View File

@@ -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, &paramsDto); 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
}

View File

@@ -7,7 +7,7 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/yushan"
) )
// ProcessJRZQ9A1WRequest JRZQ9A1W 银行卡鉴权V1API处理方法 // ProcessJRZQ9A1WRequest JRZQ9A1W 银行卡鉴权V1API处理方法
@@ -20,39 +20,16 @@ func ProcessJRZQ9A1WRequest(ctx context.Context, params []byte, deps *processors
if err := deps.Validator.ValidateStruct(paramsDto); err != nil { if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
return nil, errors.Join(processors.ErrInvalidParam, err) 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{}{ reqData := map[string]interface{}{
"data": map[string]interface{}{ "name": paramsDto.Name,
"name": encryptedName, "cardId": paramsDto.BankCard,
"cardId": encryptedBankCard, "cardNo": paramsDto.IDCard,
"cardNo": encryptedIDCard, "phone": paramsDto.MobileNo,
"phone": encryptedMobileNo,
},
} }
respBytes, err := deps.YushanService.CallAPI(ctx, "PCB145", reqData) respBytes, err := deps.YushanService.CallAPI(ctx, "PCB145", reqData)
if err != nil { if err != nil {
if errors.Is(err, westdex.ErrDatasource) { if errors.Is(err, yushan.ErrDatasource) {
return nil, errors.Join(processors.ErrDatasource, err) return nil, errors.Join(processors.ErrDatasource, err)
} else { } else {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)

View File

@@ -22,7 +22,7 @@ func ProcessQCXG6B4ERequest(ctx context.Context, params []byte, deps *processors
} }
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"vin": paramsDto.VINCode, "vin": paramsDto.VINCode,
"authorized": paramsDto.Authorized, "authorized": paramsDto.Authorized,
} }
@@ -43,4 +43,3 @@ func ProcessQCXG6B4ERequest(ctx context.Context, params []byte, deps *processors
return respBytes, nil return respBytes, nil
} }

View File

@@ -7,7 +7,7 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/westdex" "tyapi-server/internal/infrastructure/external/yushan"
) )
// ProcessQCXG7A2BRequest QCXG7A2B API处理方法 // ProcessQCXG7A2BRequest QCXG7A2B API处理方法
@@ -27,7 +27,7 @@ func ProcessQCXG7A2BRequest(ctx context.Context, params []byte, deps *processors
respBytes, err := deps.YushanService.CallAPI(ctx, "CAR061", reqData) respBytes, err := deps.YushanService.CallAPI(ctx, "CAR061", reqData)
if err != nil { if err != nil {
if errors.Is(err, westdex.ErrDatasource) { if errors.Is(err, yushan.ErrDatasource) {
return nil, errors.Join(processors.ErrDatasource, err) return nil, errors.Join(processors.ErrDatasource, err)
} else { } else {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)

View File

@@ -38,9 +38,9 @@ func ProcessQYGL2ACDRequest(ctx context.Context, params []byte, deps *processors
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"data": map[string]interface{}{ "data": map[string]interface{}{
"entname": encryptedEntName, "name": encryptedEntName,
"realname": encryptedLegalPerson, "oper_name": encryptedLegalPerson,
"idcard": encryptedEntCode, "keyword": encryptedEntCode,
}, },
} }
@@ -54,4 +54,4 @@ func ProcessQYGL2ACDRequest(ctx context.Context, params []byte, deps *processors
} }
return respBytes, nil return respBytes, nil
} }

View File

@@ -24,9 +24,6 @@ func ProcessQYGL2B5CRequest(ctx context.Context, params []byte, deps *processors
// 两选一校验EntName 和 EntCode 至少传一个 // 两选一校验EntName 和 EntCode 至少传一个
var keyword string var keyword string
if paramsDto.EntName != "" && paramsDto.EntCode != "" {
return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, errors.New("企业名称和企业统一信用代码只能传其中一个"))
}
if paramsDto.EntName == "" && paramsDto.EntCode == "" { if paramsDto.EntName == "" && paramsDto.EntCode == "" {
return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, errors.New("必须提供企业名称或企业统一信用代码中的其中一个")) 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{}{ reqData := map[string]interface{}{
"keyword": keyword, "keyword": keyword,
"authorized": paramsDto.Authorized, "authorized": paramsDto.Authorized,
} }
@@ -60,4 +57,3 @@ func ProcessQYGL2B5CRequest(ctx context.Context, params []byte, deps *processors
return respBytes, nil return respBytes, nil
} }

View File

@@ -4,6 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "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) return nil, errors.Join(processors.ErrInvalidParam, err)
} }
// 条件验证逻辑 // 验证逻辑
var nameValue string
if paramsDto.Type == "per" { if paramsDto.Type == "per" {
// 当失信被执行人类型为个人时,idCardNum 必填 // 个人查询:idCardNum 必填
if paramsDto.IDCardNum == "" { fmt.Print("个人")
return nil, errors.Join(processors.ErrInvalidParam, errors.New("当失信被执行人类型为个人时,身份证件号不能为空")) 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" { } else if paramsDto.Type == "ent" {
// 当查询为企业时,name 和 entMark 两者必填其一 // 企业查询:name 和 entMark 两者必填其一
if paramsDto.Name == "" && paramsDto.EntMark == "" { if paramsDto.EntName == "" && paramsDto.EntCode == "" {
return nil, errors.Join(processors.ErrInvalidParam, errors.New("当查询为企业时,企业名称和企业标识统一代码注册号两者必填其一")) 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{}{ reqData := map[string]interface{}{
"name": paramsDto.Name, "idCardNum": paramsDto.IDCard,
"idCardNum": paramsDto.IDCardNum, "name": nameValue,
"entMark": paramsDto.EntMark, "entMark": paramsDto.EntCode,
"type": paramsDto.Type, "type": paramsDto.Type,
} }

View File

@@ -24,18 +24,18 @@ func ProcessQYGL4B2ERequest(ctx context.Context, params []byte, deps *processors
// 设置默认值 // 设置默认值
pageSize := paramsDto.PageSize pageSize := paramsDto.PageSize
if pageSize == 0 { if pageSize == 0 {
pageSize = 20 pageSize = int64(20)
} }
pageNum := paramsDto.PageNum pageNum := paramsDto.PageNum
if pageNum == 0 { if pageNum == 0 {
pageNum = 1 pageNum = int64(1)
} }
// 构建API调用参数 // 构建API调用参数
apiParams := map[string]string{ apiParams := map[string]string{
"keyword": paramsDto.EntCode, "keyword": paramsDto.EntCode,
"pageSize": strconv.Itoa(pageSize), "pageSize": strconv.FormatInt(pageSize, 10),
"pageNum": strconv.Itoa(pageNum), "pageNum": strconv.FormatInt(pageNum, 10),
} }
// 调用天眼查API - 税收违法 // 调用天眼查API - 税收违法

View File

@@ -24,18 +24,18 @@ func ProcessQYGL5A3CRequest(ctx context.Context, params []byte, deps *processors
// 设置默认值 // 设置默认值
pageSize := paramsDto.PageSize pageSize := paramsDto.PageSize
if pageSize == 0 { if pageSize == 0 {
pageSize = 20 pageSize = int64(20)
} }
pageNum := paramsDto.PageNum pageNum := paramsDto.PageNum
if pageNum == 0 { if pageNum == 0 {
pageNum = 1 pageNum = int64(1)
} }
// 构建API调用参数 // 构建API调用参数
apiParams := map[string]string{ apiParams := map[string]string{
"keyword": paramsDto.EntCode, "keyword": paramsDto.EntCode,
"pageSize": strconv.Itoa(pageSize), "pageSize": strconv.FormatInt(pageSize, 10),
"pageNum": strconv.Itoa(pageNum), "pageNum": strconv.FormatInt(pageNum, 10),
} }
// 调用天眼查API - 对外投资历史 // 调用天眼查API - 对外投资历史

View File

@@ -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, &paramsDto); 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
}

View File

@@ -4,6 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "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 { if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
return nil, errors.Join(processors.ErrInvalidParam, err) return nil, errors.Join(processors.ErrInvalidParam, err)
} }
fmt.Println("paramsDto", paramsDto)
// 构建请求数据,将项目规范的字段名转换为 XingweiService 需要的字段名 // 构建请求数据,将项目规范的字段名转换为 XingweiService 需要的字段名
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"idCardNum": paramsDto.IDCard, "idCardNum": paramsDto.IDCard,
} }
// 如果传了身份证,则添加到请求数据中
if paramsDto.MobileNo != "" {
reqData["phoneNumber"] = paramsDto.MobileNo
}
// 如果传了企业统一信用代码,则添加到请求数据中
if paramsDto.EntCode != "" {
reqData["ucc"] = paramsDto.EntCode
}
// 调用行为数据API使用指定的project_id // 调用行为数据API使用指定的project_id
projectID := "CDJ-1101695397213958144" projectID := "CDJ-1101695397213958144"
fmt.Println("reqData", reqData)
respBytes, err := deps.XingweiService.CallAPI(ctx, projectID, reqData) respBytes, err := deps.XingweiService.CallAPI(ctx, projectID, reqData)
if err != nil { if err != nil {
if errors.Is(err, xingwei.ErrNotFound) { if errors.Is(err, xingwei.ErrNotFound) {

View File

@@ -42,4 +42,4 @@ func ProcessQYGL6F2DRequest(ctx context.Context, params []byte, deps *processors
} }
return respBytes, nil return respBytes, nil
} }

View File

@@ -7,6 +7,7 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/zhicha"
) )
// ProcessQYGL6S1BRequest QYGL6S1B API处理方法 - 董监高司法综合信息核验 // ProcessQYGL6S1BRequest QYGL6S1B API处理方法 - 董监高司法综合信息核验
@@ -21,30 +22,28 @@ func ProcessQYGL6S1BRequest(ctx context.Context, params []byte, deps *processors
return nil, errors.Join(processors.ErrInvalidParam, err) return nil, errors.Join(processors.ErrInvalidParam, err)
} }
encryptedPhone, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) encryptedIdCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard)
if err != nil { if err != nil {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)
} }
// 构建API调用参数 // 构建API调用参数
apiParams := map[string]string{ reqData := map[string]interface{}{
"idCard": encryptedPhone, "idCard": encryptedIdCard,
"authorized": paramsDto.Authorized, "authorized": paramsDto.Authorized,
} }
// 调用天眼查API - respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI043", reqData)
response, err := deps.TianYanChaService.CallAPI(ctx, "ZCI043", apiParams)
if err != nil { 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调用是否成功 // 将响应数据转换为JSON字节
if !response.Success { respBytes, err := json.Marshal(respData)
return nil, errors.Join(processors.ErrDatasource, errors.New(response.Message))
}
// 返回天眼查响应数据
respBytes, err := json.Marshal(response.Data)
if err != nil { if err != nil {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)
} }

View File

@@ -4,6 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"strconv" "strconv"
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
@@ -16,6 +17,7 @@ func ProcessQYGL7C1ARequest(ctx context.Context, params []byte, deps *processors
if err := json.Unmarshal(params, &paramsDto); err != nil { if err := json.Unmarshal(params, &paramsDto); err != nil {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)
} }
fmt.Println("paramsDto", paramsDto)
if err := deps.Validator.ValidateStruct(paramsDto); err != nil { if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
return nil, errors.Join(processors.ErrInvalidParam, err) return nil, errors.Join(processors.ErrInvalidParam, err)
@@ -24,18 +26,18 @@ func ProcessQYGL7C1ARequest(ctx context.Context, params []byte, deps *processors
// 设置默认值 // 设置默认值
pageSize := paramsDto.PageSize pageSize := paramsDto.PageSize
if pageSize == 0 { if pageSize == 0 {
pageSize = 20 pageSize = int64(20)
} }
pageNum := paramsDto.PageNum pageNum := paramsDto.PageNum
if pageNum == 0 { if pageNum == 0 {
pageNum = 1 pageNum = int64(1)
} }
// 构建API调用参数 // 构建API调用参数
apiParams := map[string]string{ apiParams := map[string]string{
"keyword": paramsDto.EntCode, "keyword": paramsDto.EntCode,
"pageSize": strconv.Itoa(pageSize), "pageSize": strconv.FormatInt(pageSize, 10),
"pageNum": strconv.Itoa(pageNum), "pageNum": strconv.FormatInt(pageNum, 10),
} }
// 调用天眼查API - 经营异常 // 调用天眼查API - 经营异常

View File

@@ -24,18 +24,18 @@ func ProcessQYGL7D9ARequest(ctx context.Context, params []byte, deps *processors
// 设置默认值 // 设置默认值
pageSize := paramsDto.PageSize pageSize := paramsDto.PageSize
if pageSize == 0 { if pageSize == 0 {
pageSize = 20 pageSize = int64(20)
} }
pageNum := paramsDto.PageNum pageNum := paramsDto.PageNum
if pageNum == 0 { if pageNum == 0 {
pageNum = 1 pageNum = int64(1)
} }
// 构建API调用参数 // 构建API调用参数
apiParams := map[string]string{ apiParams := map[string]string{
"keyword": paramsDto.EntCode, "keyword": paramsDto.EntCode,
"pageSize": strconv.Itoa(pageSize), "pageSize": strconv.FormatInt(pageSize, 10),
"pageNum": strconv.Itoa(pageNum), "pageNum": strconv.FormatInt(pageNum, 10),
} }
// 调用天眼查API - 欠税公告 // 调用天眼查API - 欠税公告

View File

@@ -24,18 +24,18 @@ func ProcessQYGL8B4DRequest(ctx context.Context, params []byte, deps *processors
// 设置默认值 // 设置默认值
pageSize := paramsDto.PageSize pageSize := paramsDto.PageSize
if pageSize == 0 { if pageSize == 0 {
pageSize = 20 pageSize = int64(20)
} }
pageNum := paramsDto.PageNum pageNum := paramsDto.PageNum
if pageNum == 0 { if pageNum == 0 {
pageNum = 1 pageNum = int64(1)
} }
// 构建API调用参数 // 构建API调用参数
apiParams := map[string]string{ apiParams := map[string]string{
"keyword": paramsDto.EntCode, "keyword": paramsDto.EntCode,
"pageSize": strconv.Itoa(pageSize), "pageSize": strconv.FormatInt(pageSize, 10),
"pageNum": strconv.Itoa(pageNum), "pageNum": strconv.FormatInt(pageNum, 10),
} }
// 调用天眼查API - 融资历史 // 调用天眼查API - 融资历史

View File

@@ -24,18 +24,18 @@ func ProcessQYGL9E2FRequest(ctx context.Context, params []byte, deps *processors
// 设置默认值 // 设置默认值
pageSize := paramsDto.PageSize pageSize := paramsDto.PageSize
if pageSize == 0 { if pageSize == 0 {
pageSize = 20 pageSize = int64(20)
} }
pageNum := paramsDto.PageNum pageNum := paramsDto.PageNum
if pageNum == 0 { if pageNum == 0 {
pageNum = 1 pageNum = int64(1)
} }
// 构建API调用参数 // 构建API调用参数
apiParams := map[string]string{ apiParams := map[string]string{
"keyword": paramsDto.EntCode, "keyword": paramsDto.EntCode,
"pageSize": strconv.Itoa(pageSize), "pageSize": strconv.FormatInt(pageSize, 10),
"pageNum": strconv.Itoa(pageNum), "pageNum": strconv.FormatInt(pageNum, 10),
} }
// 调用天眼查API - 行政处罚 // 调用天眼查API - 行政处罚

View File

@@ -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, &paramsDto); 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
}

View File

@@ -23,9 +23,9 @@ func ProcessYYSY8F3ARequest(ctx context.Context, params []byte, deps *processors
// 构建请求数据,直接传递姓名、身份证、手机号 // 构建请求数据,直接传递姓名、身份证、手机号
reqData := map[string]interface{}{ reqData := map[string]interface{}{
"name": paramsDto.Name, "name": paramsDto.Name,
"idCardNum": paramsDto.IDCard, "idCardNum": paramsDto.IDCard,
"phoneNumber": paramsDto.MobileNo, "phoneNumber": paramsDto.MobileNo,
} }
// 调用行为数据API使用指定的project_id // 调用行为数据API使用指定的project_id

View File

@@ -105,4 +105,4 @@ func (r *GormProductDocumentationRepository) CountByProductID(ctx context.Contex
var count int64 var count int64
err := r.GetDB(ctx).Model(&entities.ProductDocumentation{}).Where("product_id = ?", productID).Count(&count).Error err := r.GetDB(ctx).Model(&entities.ProductDocumentation{}).Where("product_id = ?", productID).Count(&count).Error
return count, err return count, err
} }