f
This commit is contained in:
33
config.yaml
33
config.yaml
@@ -653,3 +653,36 @@ shujubao:
|
|||||||
max_backups: 5
|
max_backups: 5
|
||||||
max_age: 30
|
max_age: 30
|
||||||
compress: true
|
compress: true
|
||||||
|
|
||||||
|
|
||||||
|
# ===========================================
|
||||||
|
# 🌐 诺尔智汇配置
|
||||||
|
# ===========================================
|
||||||
|
nuoer:
|
||||||
|
url: "https://api.enolfax.com/enol/api"
|
||||||
|
app_id: "t4qO2mR3"
|
||||||
|
app_secret: "d1515bf9ed2f2fe063b5f4f7e2c50f0ec65bfd58"
|
||||||
|
timeout: 4s
|
||||||
|
logging:
|
||||||
|
enabled: true
|
||||||
|
log_dir: "logs/external_services"
|
||||||
|
service_name: "nuoer"
|
||||||
|
use_daily: true
|
||||||
|
enable_level_separation: true
|
||||||
|
# 各级别配置
|
||||||
|
level_configs:
|
||||||
|
info:
|
||||||
|
max_size: 100
|
||||||
|
max_backups: 5
|
||||||
|
max_age: 30
|
||||||
|
compress: true
|
||||||
|
error:
|
||||||
|
max_size: 200
|
||||||
|
max_backups: 10
|
||||||
|
max_age: 90
|
||||||
|
compress: true
|
||||||
|
warn:
|
||||||
|
max_size: 100
|
||||||
|
max_backups: 5
|
||||||
|
max_age: 30
|
||||||
|
compress: true
|
||||||
@@ -191,3 +191,14 @@ sms:
|
|||||||
captcha_enabled: false # 是否启用滑块验证码
|
captcha_enabled: false # 是否启用滑块验证码
|
||||||
captcha_secret: "" # 阿里云验证码密钥(可选)
|
captcha_secret: "" # 阿里云验证码密钥(可选)
|
||||||
scene_id: "wynt39to" # 阿里云验证码场景ID
|
scene_id: "wynt39to" # 阿里云验证码场景ID
|
||||||
|
|
||||||
|
# 诺尔智汇配置
|
||||||
|
nuoer:
|
||||||
|
url: "https://api.enolfax.com/enol/api"
|
||||||
|
app_id: "t4qO2mR3"
|
||||||
|
app_secret: "d1515bf9ed2f2fe063b5f4f7e2c50f0ec65bfd58"
|
||||||
|
development:
|
||||||
|
enable_cors: true
|
||||||
|
cors_allowed_origins: "http://localhost:5173,http://localhost:8080"
|
||||||
|
cors_allowed_methods: "GET,POST,PUT,PATCH,DELETE,OPTIONS"
|
||||||
|
cors_allowed_headers: "Origin,Content-Type,Accept,Authorization,X-Requested-With,Access-Id"
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ type Config struct {
|
|||||||
Jiguang JiguangConfig `mapstructure:"jiguang"`
|
Jiguang JiguangConfig `mapstructure:"jiguang"`
|
||||||
Shumai ShumaiConfig `mapstructure:"shumai"`
|
Shumai ShumaiConfig `mapstructure:"shumai"`
|
||||||
Shujubao ShujubaoConfig `mapstructure:"shujubao"`
|
Shujubao ShujubaoConfig `mapstructure:"shujubao"`
|
||||||
|
Nuoer NuoerConfig `mapstructure:"nuoer"`
|
||||||
PDFGen PDFGenConfig `mapstructure:"pdfgen"`
|
PDFGen PDFGenConfig `mapstructure:"pdfgen"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -681,6 +682,33 @@ type ShujubaoLevelFileConfig struct {
|
|||||||
Compress bool `mapstructure:"compress"`
|
Compress bool `mapstructure:"compress"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NuoerConfig 诺尔智汇配置
|
||||||
|
type NuoerConfig struct {
|
||||||
|
URL string `mapstructure:"url"`
|
||||||
|
AppID string `mapstructure:"app_id"`
|
||||||
|
AppSecret string `mapstructure:"app_secret"`
|
||||||
|
Timeout time.Duration `mapstructure:"timeout"`
|
||||||
|
|
||||||
|
Logging NuoerLoggingConfig `mapstructure:"logging"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NuoerLoggingConfig 诺尔智汇日志配置
|
||||||
|
type NuoerLoggingConfig struct {
|
||||||
|
Enabled bool `mapstructure:"enabled"`
|
||||||
|
LogDir string `mapstructure:"log_dir"`
|
||||||
|
UseDaily bool `mapstructure:"use_daily"`
|
||||||
|
EnableLevelSeparation bool `mapstructure:"enable_level_separation"`
|
||||||
|
LevelConfigs map[string]NuoerLevelFileConfig `mapstructure:"level_configs"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NuoerLevelFileConfig 诺尔智汇日志级别配置
|
||||||
|
type NuoerLevelFileConfig struct {
|
||||||
|
MaxSize int `mapstructure:"max_size"`
|
||||||
|
MaxBackups int `mapstructure:"max_backups"`
|
||||||
|
MaxAge int `mapstructure:"max_age"`
|
||||||
|
Compress bool `mapstructure:"compress"`
|
||||||
|
}
|
||||||
|
|
||||||
// PDFGenConfig PDF生成服务配置
|
// PDFGenConfig PDF生成服务配置
|
||||||
type PDFGenConfig struct {
|
type PDFGenConfig struct {
|
||||||
DevelopmentURL string `mapstructure:"development_url"` // 开发环境服务地址
|
DevelopmentURL string `mapstructure:"development_url"` // 开发环境服务地址
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import (
|
|||||||
"hyapi-server/internal/infrastructure/external/email"
|
"hyapi-server/internal/infrastructure/external/email"
|
||||||
"hyapi-server/internal/infrastructure/external/jiguang"
|
"hyapi-server/internal/infrastructure/external/jiguang"
|
||||||
"hyapi-server/internal/infrastructure/external/muzi"
|
"hyapi-server/internal/infrastructure/external/muzi"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
"hyapi-server/internal/infrastructure/external/ocr"
|
"hyapi-server/internal/infrastructure/external/ocr"
|
||||||
"hyapi-server/internal/infrastructure/external/shujubao"
|
"hyapi-server/internal/infrastructure/external/shujubao"
|
||||||
"hyapi-server/internal/infrastructure/external/shumai"
|
"hyapi-server/internal/infrastructure/external/shumai"
|
||||||
@@ -403,6 +404,10 @@ func NewContainer() *Container {
|
|||||||
func(cfg *config.Config) (*shujubao.ShujubaoService, error) {
|
func(cfg *config.Config) (*shujubao.ShujubaoService, error) {
|
||||||
return shujubao.NewShujubaoServiceWithConfig(cfg)
|
return shujubao.NewShujubaoServiceWithConfig(cfg)
|
||||||
},
|
},
|
||||||
|
// NuoerService - 诺尔智汇服务
|
||||||
|
func(cfg *config.Config) (*nuoer.NuoerService, error) {
|
||||||
|
return nuoer.NewNuoerServiceWithConfig(cfg)
|
||||||
|
},
|
||||||
func(cfg *config.Config) *yushan.YushanService {
|
func(cfg *config.Config) *yushan.YushanService {
|
||||||
return yushan.NewYushanService(
|
return yushan.NewYushanService(
|
||||||
cfg.Yushan.URL,
|
cfg.Yushan.URL,
|
||||||
|
|||||||
@@ -1079,3 +1079,156 @@ type JRZQ1P5GReq 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"`
|
||||||
AuthAuthorizeFileCode string `json:"auth_authorize_file_code" validate:"required"`
|
AuthAuthorizeFileCode string `json:"auth_authorize_file_code" validate:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type JRZQBHZ4Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type QCXGM4CLReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV8V8Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV9V9Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV1O0Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV2O1Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type IVYZV1O6Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type QYGLV4S6Req struct {
|
||||||
|
EntCode string `json:"ent_code" validate:"required,validUSCI"`
|
||||||
|
EntName string `json:"ent_name" validate:"required,min=1,validEnterpriseName"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV7D1Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV07TReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQVZ3YReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQVZ2YReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQVT72Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV5F4Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type QYGLVR76Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type IVYZVXF6Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type IVYZVJJ6Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV7MDReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV3HMReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQVT43Req struct {
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV87MReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV0MDReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQVZXFReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FLXGG0S4Req struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQVZTFReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQV4TFReq struct {
|
||||||
|
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||||
|
Name string `json:"name" validate:"required,min=1,validName"`
|
||||||
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JRZQVKK6Req 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"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import (
|
|||||||
"hyapi-server/internal/infrastructure/external/alicloud"
|
"hyapi-server/internal/infrastructure/external/alicloud"
|
||||||
"hyapi-server/internal/infrastructure/external/jiguang"
|
"hyapi-server/internal/infrastructure/external/jiguang"
|
||||||
"hyapi-server/internal/infrastructure/external/muzi"
|
"hyapi-server/internal/infrastructure/external/muzi"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
"hyapi-server/internal/infrastructure/external/shujubao"
|
"hyapi-server/internal/infrastructure/external/shujubao"
|
||||||
"hyapi-server/internal/infrastructure/external/shumai"
|
"hyapi-server/internal/infrastructure/external/shumai"
|
||||||
"hyapi-server/internal/infrastructure/external/tianyancha"
|
"hyapi-server/internal/infrastructure/external/tianyancha"
|
||||||
@@ -66,6 +67,7 @@ func NewApiRequestService(
|
|||||||
xingweiService *xingwei.XingweiService,
|
xingweiService *xingwei.XingweiService,
|
||||||
jiguangService *jiguang.JiguangService,
|
jiguangService *jiguang.JiguangService,
|
||||||
shumaiService *shumai.ShumaiService,
|
shumaiService *shumai.ShumaiService,
|
||||||
|
nuoerService *nuoerext.NuoerService,
|
||||||
validator interfaces.RequestValidator,
|
validator interfaces.RequestValidator,
|
||||||
productManagementService *services.ProductManagementService,
|
productManagementService *services.ProductManagementService,
|
||||||
cfg *appconfig.Config,
|
cfg *appconfig.Config,
|
||||||
@@ -81,6 +83,7 @@ func NewApiRequestService(
|
|||||||
xingweiService,
|
xingweiService,
|
||||||
jiguangService,
|
jiguangService,
|
||||||
shumaiService,
|
shumaiService,
|
||||||
|
nuoerService,
|
||||||
validator,
|
validator,
|
||||||
productManagementService,
|
productManagementService,
|
||||||
cfg,
|
cfg,
|
||||||
@@ -101,6 +104,7 @@ func NewApiRequestServiceWithRepos(
|
|||||||
xingweiService *xingwei.XingweiService,
|
xingweiService *xingwei.XingweiService,
|
||||||
jiguangService *jiguang.JiguangService,
|
jiguangService *jiguang.JiguangService,
|
||||||
shumaiService *shumai.ShumaiService,
|
shumaiService *shumai.ShumaiService,
|
||||||
|
nuoerService *nuoerext.NuoerService,
|
||||||
validator interfaces.RequestValidator,
|
validator interfaces.RequestValidator,
|
||||||
productManagementService *services.ProductManagementService,
|
productManagementService *services.ProductManagementService,
|
||||||
cfg *appconfig.Config,
|
cfg *appconfig.Config,
|
||||||
@@ -127,6 +131,7 @@ func NewApiRequestServiceWithRepos(
|
|||||||
xingweiService,
|
xingweiService,
|
||||||
jiguangService,
|
jiguangService,
|
||||||
shumaiService,
|
shumaiService,
|
||||||
|
nuoerService,
|
||||||
validator,
|
validator,
|
||||||
combService,
|
combService,
|
||||||
reportRepo,
|
reportRepo,
|
||||||
@@ -181,6 +186,7 @@ func registerAllProcessors(combService *comb.CombService) {
|
|||||||
"FLXG3A9B": flxg.ProcessFLXG3A9BRequest,
|
"FLXG3A9B": flxg.ProcessFLXG3A9BRequest,
|
||||||
"FLXGK5D2": flxg.ProcessFLXGK5D2Request,
|
"FLXGK5D2": flxg.ProcessFLXGK5D2Request,
|
||||||
"FLXGDJG3": flxg.ProcessFLXGDJG3Request, //董监高司法综合信息核验
|
"FLXGDJG3": flxg.ProcessFLXGDJG3Request, //董监高司法综合信息核验
|
||||||
|
"FLXGG0S4": flxg.ProcessFLXGG0S4Request, //个人诉讼定制版
|
||||||
// JRZQ系列处理器
|
// JRZQ系列处理器
|
||||||
"JRZQ8203": jrzq.ProcessJRZQ8203Request,
|
"JRZQ8203": jrzq.ProcessJRZQ8203Request,
|
||||||
"JRZQ0A03": jrzq.ProcessJRZQ0A03Request,
|
"JRZQ0A03": jrzq.ProcessJRZQ0A03Request,
|
||||||
@@ -214,7 +220,25 @@ func registerAllProcessors(combService *comb.CombService) {
|
|||||||
"JRZQ1P5G": jrzq.ProcessJRZQ1P5GRequest, // 全国自然人借贷压力指数查询(2)
|
"JRZQ1P5G": jrzq.ProcessJRZQ1P5GRequest, // 全国自然人借贷压力指数查询(2)
|
||||||
"JRZQOCRE": jrzq.ProcessJRZQOCREERequest, // 银行卡OCR数卖
|
"JRZQOCRE": jrzq.ProcessJRZQOCREERequest, // 银行卡OCR数卖
|
||||||
"JRZQOCRY": jrzq.ProcessJRZQOCRYERequest, // 银行卡OCR数据宝
|
"JRZQOCRY": jrzq.ProcessJRZQOCRYERequest, // 银行卡OCR数据宝
|
||||||
|
"JRZQBHZ4": jrzq.ProcessJRZQBHZ4Request, // 支付行为指数诺尔
|
||||||
|
"JRZQV8V8": jrzq.ProcessJRZQV8V8Request, //风险量级V8
|
||||||
|
"JRZQV9V9": jrzq.ProcessJRZQV9V9Request, //风险量级V9
|
||||||
|
"JRZQV1O0": jrzq.ProcessJRZQV1O0Request, //风险量级V10
|
||||||
|
"JRZQV2O1": jrzq.ProcessJRZQV2O1Request, //信用全景V21
|
||||||
|
"JRZQV7D1": jrzq.ProcessJRZQV7D1Request, //借贷意向验证
|
||||||
|
"JRZQV07T": jrzq.ProcessJRZQV07TRequest, //洞侦多头履约行为
|
||||||
|
"JRZQVZ3Y": jrzq.ProcessJRZQVZ3YRequest, //租赁申请意向
|
||||||
|
"JRZQVZ2Y": jrzq.ProcessJRZQVZ2YRequest, //租赁申请意向V22
|
||||||
|
"JRZQV5F4": jrzq.ProcessJRZQV5F4Request, //风险变量V5F4
|
||||||
|
"JRZQV7MD": jrzq.ProcessJRZQV7MDRequest, //特殊名单
|
||||||
|
"JRZQV3HM": jrzq.ProcessJRZQV3HMRequest, //债务逾期黑名单V3_1
|
||||||
|
"JRZQVT43": jrzq.ProcessJRZQVT43Request, //投诉风险筛查V709
|
||||||
|
"JRZQV87M": jrzq.ProcessJRZQV87MReqest, //黑名单V110_c10
|
||||||
|
"JRZQV0MD": jrzq.ProcessJRZQV0MDRequest, //特殊名单1010
|
||||||
|
"JRZQVZXF": jrzq.ProcessJRZQVZXFRequest, //智享分
|
||||||
|
"JRZQVZTF": jrzq.ProcessJRZQVZTFRequest, //智瞳-通用版
|
||||||
|
"JRZQV4TF": jrzq.ProcessJRZQV4TFRequest, //智瞳分尊享版
|
||||||
|
"JRZQVKK6": jrzq.ProcessJRZQVKK6Request, //坤羽模型V3-标签版
|
||||||
// QYGL系列处理器
|
// QYGL系列处理器
|
||||||
"QYGL8261": qygl.ProcessQYGL8261Request,
|
"QYGL8261": qygl.ProcessQYGL8261Request,
|
||||||
"QYGL2ACD": qygl.ProcessQYGL2ACDRequest,
|
"QYGL2ACD": qygl.ProcessQYGL2ACDRequest,
|
||||||
@@ -248,6 +272,8 @@ func registerAllProcessors(combService *comb.CombService) {
|
|||||||
"QYGLUY3S": qygl.ProcessQYGLUY3SRequest, //企业经营状态全景查询
|
"QYGLUY3S": qygl.ProcessQYGLUY3SRequest, //企业经营状态全景查询
|
||||||
"QYGLDJ12": qygl.ProcessQYGLDJ12Request, //企业年报信息核验
|
"QYGLDJ12": qygl.ProcessQYGLDJ12Request, //企业年报信息核验
|
||||||
"QYGL8848": qygl.ProcessQYGL8848Request, //企业税收违法核查
|
"QYGL8848": qygl.ProcessQYGL8848Request, //企业税收违法核查
|
||||||
|
"QYGLVR76": qygl.ProcessQYGLVR76Request, //人企关联
|
||||||
|
"QYGLV4S6": qygl.ProcessQYGLV4S6Request, //企业诉讼定制版
|
||||||
|
|
||||||
// YYSY系列处理器
|
// YYSY系列处理器
|
||||||
"YYSY35TA": yysy.ProcessYYSY35TARequest, //运营商归属地数卖
|
"YYSY35TA": yysy.ProcessYYSY35TARequest, //运营商归属地数卖
|
||||||
@@ -329,6 +355,9 @@ func registerAllProcessors(combService *comb.CombService) {
|
|||||||
"IVYZ38SR": ivyz.ProcessIVYZ38SRRequest, //婚姻状态核验(双人)
|
"IVYZ38SR": ivyz.ProcessIVYZ38SRRequest, //婚姻状态核验(双人)
|
||||||
"IVYZ48SR": ivyz.ProcessIVYZ48SRRequest, //婚姻状态核验V2(双人)
|
"IVYZ48SR": ivyz.ProcessIVYZ48SRRequest, //婚姻状态核验V2(双人)
|
||||||
"IVYZ5E22": ivyz.ProcessIVYZ5E22Request, //双人婚姻评估查询zhicha版本
|
"IVYZ5E22": ivyz.ProcessIVYZ5E22Request, //双人婚姻评估查询zhicha版本
|
||||||
|
"IVYZV1O6": ivyz.ProcessIVYZV1O6Request, //身份风险V106
|
||||||
|
"IVYZVXF6": ivyz.ProcessIVYZVXF6Request, //消费能力
|
||||||
|
"IVYZVJJ6": ivyz.ProcessIVYZVJJ6Request, //收入等级
|
||||||
|
|
||||||
// COMB系列处理器 - 只注册有自定义逻辑的组合包
|
// COMB系列处理器 - 只注册有自定义逻辑的组合包
|
||||||
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode
|
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode
|
||||||
@@ -362,6 +391,7 @@ func registerAllProcessors(combService *comb.CombService) {
|
|||||||
"QCXG5U0Z": qcxg.ProcessQCXG5U0ZRequest, // 车辆静态信息查询 10479
|
"QCXG5U0Z": qcxg.ProcessQCXG5U0ZRequest, // 车辆静态信息查询 10479
|
||||||
"QCXGY7F2": qcxg.ProcessQCXGY7F2Request, // 二手车VIN估值 10443
|
"QCXGY7F2": qcxg.ProcessQCXGY7F2Request, // 二手车VIN估值 10443
|
||||||
"QCXG3M7Z": qcxg.ProcessQCXG3M7ZRequest, //人车关系核验(ETC)10093 月更
|
"QCXG3M7Z": qcxg.ProcessQCXG3M7ZRequest, //人车关系核验(ETC)10093 月更
|
||||||
|
"QCXGM4CL": qcxg.ProcessQCXGM4CLRequest, // 名下车辆诺尔
|
||||||
|
|
||||||
// DWBG系列处理器 - 多维报告
|
// DWBG系列处理器 - 多维报告
|
||||||
"DWBG6A2C": dwbg.ProcessDWBG6A2CRequest,
|
"DWBG6A2C": dwbg.ProcessDWBG6A2CRequest,
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package services
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"reflect"
|
|
||||||
"strings"
|
|
||||||
"hyapi-server/internal/domains/api/dto"
|
"hyapi-server/internal/domains/api/dto"
|
||||||
product_services "hyapi-server/internal/domains/product/services"
|
product_services "hyapi-server/internal/domains/product/services"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FormField 表单字段配置
|
// FormField 表单字段配置
|
||||||
@@ -275,6 +275,32 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string
|
|||||||
"IVYZ48SR": &dto.IVYZ48SRReq{}, //婚姻状态核验V2(双人)
|
"IVYZ48SR": &dto.IVYZ48SRReq{}, //婚姻状态核验V2(双人)
|
||||||
"IVYZ5E22": &dto.IVYZ5E22Req{}, //双人婚姻评估查询zhicha版本
|
"IVYZ5E22": &dto.IVYZ5E22Req{}, //双人婚姻评估查询zhicha版本
|
||||||
"DWBG5SAM": &dto.DWBG5SAMReq{}, //海宇指迷报告
|
"DWBG5SAM": &dto.DWBG5SAMReq{}, //海宇指迷报告
|
||||||
|
"QCXGM4CL": &dto.QCXGM4CLReq{}, //名下车辆诺尔
|
||||||
|
"JRZQBHZ4": &dto.JRZQBHZ4Req{}, //支付行为指数诺尔
|
||||||
|
"JRZQV8V8": &dto.JRZQV8V8Req{}, //风险量级V8
|
||||||
|
"JRZQV9V9": &dto.JRZQV9V9Req{}, //风险量级V9
|
||||||
|
"JRZQV1O0": &dto.JRZQV1O0Req{}, //风险量级V10
|
||||||
|
"JRZQV2O1": &dto.JRZQV2O1Req{}, //信用全景V21
|
||||||
|
"IVYZV1O6": &dto.IVYZV1O6Req{}, //身份风险V106
|
||||||
|
"JRZQV7D1": &dto.JRZQV7D1Req{}, //借贷意向验证
|
||||||
|
"JRZQV07T": &dto.JRZQV07TReq{}, //洞侦多头履约行为
|
||||||
|
"JRZQVZ3Y": &dto.JRZQVZ3YReq{}, //租赁申请意向
|
||||||
|
"JRZQVZ2Y": &dto.JRZQVZ2YReq{}, //租赁申请意向V22
|
||||||
|
"JRZQV5F4": &dto.JRZQV5F4Req{}, //风险变量V5F4
|
||||||
|
"QYGLVR76": &dto.QYGLVR76Req{}, //人企关联
|
||||||
|
"IVYZVXF6": &dto.IVYZVXF6Req{}, //消费能力
|
||||||
|
"IVYZVJJ6": &dto.IVYZVJJ6Req{}, //收入等级VJJ6
|
||||||
|
"JRZQV7MD": &dto.JRZQV7MDReq{}, //特殊名单
|
||||||
|
"JRZQV3HM": &dto.JRZQV3HMReq{}, //债务逾期黑名单V3_1
|
||||||
|
"JRZQVT43": &dto.JRZQVT43Req{}, //投诉风险筛查V709
|
||||||
|
"JRZQV87M": &dto.JRZQV87MReq{}, //黑名单V110_c10
|
||||||
|
"JRZQV0MD": &dto.JRZQV0MDReq{}, //特殊名单
|
||||||
|
"JRZQVZXF": &dto.JRZQVZXFReq{}, //智享分
|
||||||
|
"QYGLV4S6": &dto.QYGLV4S6Req{}, //企业诉讼定制版
|
||||||
|
"FLXGG0s4": &dto.FLXGG0S4Req{}, //个人涉诉定制版
|
||||||
|
"JRZQVZTF": &dto.JRZQVZTFReq{}, //智瞳-通用版
|
||||||
|
"JRZQV4TF": &dto.JRZQV4TFReq{}, //智瞳分尊享版
|
||||||
|
"JRZQVKK6": &dto.JRZQVKK6Req{}, //坤羽模型V3-标签版
|
||||||
}
|
}
|
||||||
|
|
||||||
// 优先返回已配置的DTO
|
// 优先返回已配置的DTO
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"hyapi-server/internal/infrastructure/external/alicloud"
|
"hyapi-server/internal/infrastructure/external/alicloud"
|
||||||
"hyapi-server/internal/infrastructure/external/jiguang"
|
"hyapi-server/internal/infrastructure/external/jiguang"
|
||||||
"hyapi-server/internal/infrastructure/external/muzi"
|
"hyapi-server/internal/infrastructure/external/muzi"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
"hyapi-server/internal/infrastructure/external/shujubao"
|
"hyapi-server/internal/infrastructure/external/shujubao"
|
||||||
"hyapi-server/internal/infrastructure/external/shumai"
|
"hyapi-server/internal/infrastructure/external/shumai"
|
||||||
"hyapi-server/internal/infrastructure/external/tianyancha"
|
"hyapi-server/internal/infrastructure/external/tianyancha"
|
||||||
@@ -40,6 +41,7 @@ type ProcessorDependencies struct {
|
|||||||
XingweiService *xingwei.XingweiService
|
XingweiService *xingwei.XingweiService
|
||||||
JiguangService *jiguang.JiguangService
|
JiguangService *jiguang.JiguangService
|
||||||
ShumaiService *shumai.ShumaiService
|
ShumaiService *shumai.ShumaiService
|
||||||
|
NuoerService *nuoer.NuoerService
|
||||||
Validator interfaces.RequestValidator
|
Validator interfaces.RequestValidator
|
||||||
CombService CombServiceInterface // Changed to interface to break import cycle
|
CombService CombServiceInterface // Changed to interface to break import cycle
|
||||||
Options *commands.ApiCallOptions // 添加Options支持
|
Options *commands.ApiCallOptions // 添加Options支持
|
||||||
@@ -67,6 +69,7 @@ func NewProcessorDependencies(
|
|||||||
xingweiService *xingwei.XingweiService,
|
xingweiService *xingwei.XingweiService,
|
||||||
jiguangService *jiguang.JiguangService,
|
jiguangService *jiguang.JiguangService,
|
||||||
shumaiService *shumai.ShumaiService,
|
shumaiService *shumai.ShumaiService,
|
||||||
|
nuoerService *nuoer.NuoerService,
|
||||||
validator interfaces.RequestValidator,
|
validator interfaces.RequestValidator,
|
||||||
combService CombServiceInterface, // Changed to interface
|
combService CombServiceInterface, // Changed to interface
|
||||||
reportRepo repositories.ReportRepository,
|
reportRepo repositories.ReportRepository,
|
||||||
@@ -84,6 +87,7 @@ func NewProcessorDependencies(
|
|||||||
XingweiService: xingweiService,
|
XingweiService: xingweiService,
|
||||||
JiguangService: jiguangService,
|
JiguangService: jiguangService,
|
||||||
ShumaiService: shumaiService,
|
ShumaiService: shumaiService,
|
||||||
|
NuoerService: nuoerService,
|
||||||
Validator: validator,
|
Validator: validator,
|
||||||
CombService: combService,
|
CombService: combService,
|
||||||
Options: nil, // 初始化为nil,在调用时设置
|
Options: nil, // 初始化为nil,在调用时设置
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package flxg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessFLXGG0S4Request FLXGG0S4 API处理方法 - 个人诉讼定制版
|
||||||
|
func ProcessFLXGG0S4Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.FLXGG0S4Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "personalLawsuit_cv1"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package ivyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessIVYZV1O6Request IVYZV1O6 API处理方法 -身份风险V106
|
||||||
|
func ProcessIVYZV1O6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.IVYZV1O6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "idRiskTagV106"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package ivyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessIVYZVJJ6Request IVYZVJJ6 API处理方法 -收入等级
|
||||||
|
func ProcessIVYZVJJ6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.IVYZVJJ6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "tax_income_level_v2"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package ivyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessIVYZVXF6Request IVYZVXF6 API处理方法 -消费能力
|
||||||
|
func ProcessIVYZVXF6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.IVYZVXF6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "consumerTagV1"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQBHZ4Request JRZQBHZ4 API处理方法 - 支付行为指数博汇
|
||||||
|
func ProcessJRZQBHZ4Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQBHZ4Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "paymentTagS26"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV07TRequest JRZQV07T API处理方法 - 洞侦多头履约行为
|
||||||
|
func ProcessJRZQV07TRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV07TReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV23"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV0MDRequest JRZQV0MDRequest API处理方法 - 特殊名单
|
||||||
|
func ProcessJRZQV0MDRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV0MDReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "blackListV110"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV1O0Request JRZQV1O0 API处理方法 - 风险量级V10
|
||||||
|
func ProcessJRZQV1O0Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV1O0Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV9"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV2O1Request JRZQV2O1 API处理方法 - 信用全景V21
|
||||||
|
func ProcessJRZQV2O1Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV2O1Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV21"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV3HMRequest JRZQV3HM API处理方法 - 债务逾期黑名单V3_1
|
||||||
|
func ProcessJRZQV3HMRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV3HMReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV12"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV4TFRequest JRZQV4TFRequest API处理方法 - 智瞳分尊享版
|
||||||
|
|
||||||
|
func ProcessJRZQV4TFRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV4TFReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "zhitong_ultra_v4_score"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV5F4Request JRZQV5F4 API处理方法 - 风险变量V5F4
|
||||||
|
func ProcessJRZQV5F4Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV5F4Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV5"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV7D1Request JRZQV7D1 API处理方法 - 借贷意向验证
|
||||||
|
func ProcessJRZQV7D1Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV7D1Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV11"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZ3YRequest JRZQVZ3Y API处理方法 - 特殊名单
|
||||||
|
func ProcessJRZQV7MDRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV7MDReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV12"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV87MReqest JRZQV87MReq API处理方法 - 黑名单V110_c10
|
||||||
|
func ProcessJRZQV87MReqest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV87MReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "blackListV110_c10"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV8V8Request JRZQV8V8 API处理方法 - 风险量级V8
|
||||||
|
func ProcessJRZQV8V8Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV8V8Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV8"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV9V9Request JRZQV9V9 API处理方法 - 风险量级V9
|
||||||
|
func ProcessJRZQV9V9Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV9V9Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV9"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVKK6Request JRZQVKK6Request API处理方法 - 坤羽模型V3-标签版
|
||||||
|
|
||||||
|
func ProcessJRZQVKK6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVKK6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "kunyu_fix_v3_tg_model"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVT43Request JRZQVT43 API处理方法 - 投诉风险筛查V709
|
||||||
|
func ProcessJRZQVT43Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVT43Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "mobileRiskV709"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVT72Request JRZQVT72 API处理方法 - 团伙欺诈风险识别
|
||||||
|
func ProcessJRZQVT72Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVT72Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "idRelationRisk"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZ2YRequest JRZQVZ2Y API处理方法 - 借贷申请意向V22
|
||||||
|
func ProcessJRZQVZ2YRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZ2YReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV22"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZ3YRequest JRZQVZ3Y API处理方法 - 租赁申请意向
|
||||||
|
func ProcessJRZQVZ3YRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZ3YReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV18"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZTFRequest JRZQVZTFRequest API处理方法 - 智瞳-通用版
|
||||||
|
|
||||||
|
func ProcessJRZQVZTFRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZTFReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "zhiTongModelG"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package jrzq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZXFRequest JRZQVZXFRequest API处理方法 - 智享分
|
||||||
|
|
||||||
|
func ProcessJRZQVZXFRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZXFReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "zhixiangScore"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessFLXGG0S4Request FLXGG0S4 API处理方法 - 个人诉讼定制版
|
||||||
|
func ProcessFLXGG0S4Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.FLXGG0S4Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "personalLawsuit_cv1"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessIVYZV1O6Request IVYZV1O6 API处理方法 -身份风险V106
|
||||||
|
func ProcessIVYZV1O6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.IVYZV1O6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "idRiskTagV106"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessIVYZVJJ6Request IVYZVJJ6 API处理方法 -收入等级
|
||||||
|
func ProcessIVYZVJJ6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.IVYZVJJ6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "tax_income_level_v2"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessIVYZVXF6Request IVYZVXF6 API处理方法 -消费能力
|
||||||
|
func ProcessIVYZVXF6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.IVYZVXF6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "consumerTagV1"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQBHZ4Request JRZQBHZ4 API处理方法 - 支付行为指数博汇
|
||||||
|
func ProcessJRZQBHZ4Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQBHZ4Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "paymentTagS26"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV07TRequest JRZQV07T API处理方法 - 洞侦多头履约行为
|
||||||
|
func ProcessJRZQV07TRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV07TReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV23"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV0MDRequest JRZQV0MDRequest API处理方法 - 特殊名单
|
||||||
|
func ProcessJRZQV0MDRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV0MDReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "blackListV110"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV1O0Request JRZQV1O0 API处理方法 - 风险量级V10
|
||||||
|
func ProcessJRZQV1O0Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV1O0Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV9"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV2O1Request JRZQV2O1 API处理方法 - 信用全景V21
|
||||||
|
func ProcessJRZQV2O1Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV2O1Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV21"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV3HMRequest JRZQV3HM API处理方法 - 债务逾期黑名单V3_1
|
||||||
|
func ProcessJRZQV3HMRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV3HMReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV12"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV4TFRequest JRZQV4TFRequest API处理方法 - 智瞳分尊享版
|
||||||
|
|
||||||
|
func ProcessJRZQV4TFRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV4TFReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "zhitong_ultra_v4_score"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV5F4Request JRZQV5F4 API处理方法 - 风险变量V5F4
|
||||||
|
func ProcessJRZQV5F4Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV5F4Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV5"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV7D1Request JRZQV7D1 API处理方法 - 借贷意向验证
|
||||||
|
func ProcessJRZQV7D1Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV7D1Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV11"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZ3YRequest JRZQVZ3Y API处理方法 - 特殊名单
|
||||||
|
func ProcessJRZQV7MDRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV7MDReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV12"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV87MReqest JRZQV87MReq API处理方法 - 黑名单V110_c10
|
||||||
|
func ProcessJRZQV87MReqest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV87MReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "blackListV110_c10"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV8V8Request JRZQV8V8 API处理方法 - 风险量级V8
|
||||||
|
func ProcessJRZQV8V8Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV8V8Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV8"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQV9V9Request JRZQV9V9 API处理方法 - 风险量级V9
|
||||||
|
func ProcessJRZQV9V9Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQV9V9Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV9"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVKK6Request JRZQVKK6Request API处理方法 - 坤羽模型V3-标签版
|
||||||
|
|
||||||
|
func ProcessJRZQVKK6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVKK6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "kunyu_fix_v3_tg_model"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVT43Request JRZQVT43 API处理方法 - 投诉风险筛查V709
|
||||||
|
func ProcessJRZQVT43Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVT43Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "mobileRiskV709"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZ2YRequest JRZQVZ2Y API处理方法 - 借贷申请意向V22
|
||||||
|
func ProcessJRZQVZ2YRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZ2YReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV22"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZ3YRequest JRZQVZ3Y API处理方法 - 租赁申请意向
|
||||||
|
func ProcessJRZQVZ3YRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZ3YReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "loanRiskTagV18"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZTFRequest JRZQVZTFRequest API处理方法 - 智瞳-通用版
|
||||||
|
|
||||||
|
func ProcessJRZQVZTFRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZTFReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "zhiTongModelG"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessJRZQVZXFRequest JRZQVZXFRequest API处理方法 - 智享分
|
||||||
|
|
||||||
|
func ProcessJRZQVZXFRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.JRZQVZXFReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"name": paramsDto.Name,
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
"mobile": paramsDto.MobileNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "zhixiangScore"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessQCXGM4CLRequest QCXGM4CL API处理方法 - 名下车辆诺尔
|
||||||
|
func ProcessQCXGM4CLRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.QCXGM4CLReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "id_vehicle_query_102"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessQYGLV4S6Request QYGLV4S6 API处理方法 -企业诉讼定制版
|
||||||
|
|
||||||
|
func ProcessQYGLV4S6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.QYGLV4S6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"entCode": paramsDto.EntCode,
|
||||||
|
"entName": paramsDto.EntName,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "personalLawsuit_cv2"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
nuoerext "hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessQYGLVR76Request QYGLVR76 API处理方法 -人企关联
|
||||||
|
func ProcessQYGLVR76Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.QYGLVR76Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "idRelationV101"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoerext.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoerext.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package qcxg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessQCXGM4CLRequest QCXGM4CL API处理方法 - 名下车辆诺尔
|
||||||
|
func ProcessQCXGM4CLRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.QCXGM4CLReq
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "id_vehicle_query_102"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package qygl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessQYGLV4S6Request QYGLV4S6 API处理方法 -企业诉讼定制版
|
||||||
|
|
||||||
|
func ProcessQYGLV4S6Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.QYGLV4S6Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"entCode": paramsDto.EntCode,
|
||||||
|
"entName": paramsDto.EntName,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "personalLawsuit_cv2"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package qygl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"hyapi-server/internal/domains/api/dto"
|
||||||
|
"hyapi-server/internal/domains/api/services/processors"
|
||||||
|
"hyapi-server/internal/infrastructure/external/nuoer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessQYGLVR76Request QYGLVR76 API处理方法 -人企关联
|
||||||
|
func ProcessQYGLVR76Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.QYGLVR76Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
body := map[string]string{
|
||||||
|
"idCard": paramsDto.IDCard,
|
||||||
|
}
|
||||||
|
|
||||||
|
nuoerDoCheckAPIKey := "idRelationV101"
|
||||||
|
ApiPath := "/v1/doCheck"
|
||||||
|
|
||||||
|
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, nuoer.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, nuoer.ErrNotFound) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
38
internal/infrastructure/external/nuoer/crypto.go
vendored
Normal file
38
internal/infrastructure/external/nuoer/crypto.go
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/md5"
|
||||||
|
"encoding/hex"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Sign 根据 body 业务参数与 secret 生成 MD5 签名。
|
||||||
|
// 规则:排除空值参数,按 key 的 ASCII 升序排序,拼接「参数名+参数值」后追加 secret,再 MD5(小写十六进制)。
|
||||||
|
func Sign(body map[string]string, secret string) string {
|
||||||
|
if len(body) == 0 {
|
||||||
|
return genMD5(secret)
|
||||||
|
}
|
||||||
|
|
||||||
|
keys := make([]string, 0, len(body))
|
||||||
|
for k, v := range body {
|
||||||
|
if strings.TrimSpace(v) == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
keys = append(keys, k)
|
||||||
|
}
|
||||||
|
sort.Strings(keys)
|
||||||
|
|
||||||
|
var sb strings.Builder
|
||||||
|
for _, k := range keys {
|
||||||
|
sb.WriteString(k)
|
||||||
|
sb.WriteString(body[k])
|
||||||
|
}
|
||||||
|
sb.WriteString(secret)
|
||||||
|
return genMD5(sb.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
func genMD5(s string) string {
|
||||||
|
sum := md5.Sum([]byte(s))
|
||||||
|
return hex.EncodeToString(sum[:])
|
||||||
|
}
|
||||||
21
internal/infrastructure/external/nuoer/crypto_test.go
vendored
Normal file
21
internal/infrastructure/external/nuoer/crypto_test.go
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestSign(t *testing.T) {
|
||||||
|
body := map[string]string{
|
||||||
|
"name": "张三",
|
||||||
|
"mobile": "13290879000",
|
||||||
|
"idCard": "330129199511153412",
|
||||||
|
}
|
||||||
|
secret := "secret"
|
||||||
|
got := Sign(body, secret)
|
||||||
|
if got == "" {
|
||||||
|
t.Fatal("sign should not be empty")
|
||||||
|
}
|
||||||
|
// 文档示例:name张三mobile13290879000idCard330129199511153412secret
|
||||||
|
want := genMD5("idCard330129199511153412mobile13290879000name张三secret")
|
||||||
|
if got != want {
|
||||||
|
t.Fatalf("sign mismatch: got %s want %s", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
141
internal/infrastructure/external/nuoer/nuoer_errors.go
vendored
Normal file
141
internal/infrastructure/external/nuoer/nuoer_errors.go
vendored
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 平台层 code 返回码(见文档2)
|
||||||
|
const (
|
||||||
|
CodeSuccess = 0 // 成功
|
||||||
|
CodeResponseError = -1 // 响应异常
|
||||||
|
)
|
||||||
|
|
||||||
|
// 业务层 busiCode 返回码(见文档2)
|
||||||
|
const (
|
||||||
|
BusiCodeSuccess = 10 // 查询成功【计费】
|
||||||
|
BusiCodeNotFound = 1000 // 数据未查得
|
||||||
|
BusiCodeInsufficientFund = 1001 // 账户余额不足
|
||||||
|
BusiCodeAccountNotFound = 1002 // 账户信息不存在
|
||||||
|
BusiCodeAppIDError = 1003 // appId异常
|
||||||
|
BusiCodeProductError = 1004 // 产品编号异常
|
||||||
|
BusiCodeAccountError = 1005 // 账号信息异常
|
||||||
|
BusiCodeOverdraftLimit = 1006 // 透支余额已达上限
|
||||||
|
BusiCodeDataRequestError = 1007 // 数据请求异常
|
||||||
|
BusiCodeServiceNotOpen = 1009 // 服务尚未开通
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrDatasource = errors.New("数据源异常")
|
||||||
|
ErrSystem = errors.New("系统异常")
|
||||||
|
ErrNotFound = errors.New("查询为空")
|
||||||
|
)
|
||||||
|
|
||||||
|
// platformCodeDesc 平台层 code -> 描述
|
||||||
|
var platformCodeDesc = map[int]string{
|
||||||
|
CodeSuccess: "成功",
|
||||||
|
CodeResponseError: "响应异常",
|
||||||
|
}
|
||||||
|
|
||||||
|
// busiCodeDesc 业务层 busiCode -> 描述
|
||||||
|
var busiCodeDesc = map[int]string{
|
||||||
|
BusiCodeSuccess: "查询成功【计费】",
|
||||||
|
BusiCodeNotFound: "数据未查得",
|
||||||
|
BusiCodeInsufficientFund: "账户余额不足",
|
||||||
|
BusiCodeAccountNotFound: "账户信息不存在",
|
||||||
|
BusiCodeAppIDError: "appId异常",
|
||||||
|
BusiCodeProductError: "产品编号异常",
|
||||||
|
BusiCodeAccountError: "账号信息异常",
|
||||||
|
BusiCodeOverdraftLimit: "透支余额已达上限",
|
||||||
|
BusiCodeDataRequestError: "数据请求异常",
|
||||||
|
BusiCodeServiceNotOpen: "服务尚未开通",
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPlatformCodeDesc 根据平台 code 获取描述
|
||||||
|
func GetPlatformCodeDesc(code int) string {
|
||||||
|
if desc, ok := platformCodeDesc[code]; ok {
|
||||||
|
return desc
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBusiCodeDesc 根据 busiCode 获取描述
|
||||||
|
func GetBusiCodeDesc(busiCode int) string {
|
||||||
|
if desc, ok := busiCodeDesc[busiCode]; ok {
|
||||||
|
return desc
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// nuoerError 诺尔智汇平台层错误(响应 code 字段)
|
||||||
|
type nuoerError struct {
|
||||||
|
Code int
|
||||||
|
Message string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *nuoerError) Error() string {
|
||||||
|
return fmt.Sprintf("诺尔智汇返回错误,code: %d,msg: %s", e.Code, e.Message)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewNuoerError 创建平台层错误
|
||||||
|
func NewNuoerError(code int, message string) *nuoerError {
|
||||||
|
if message == "" {
|
||||||
|
if desc := GetPlatformCodeDesc(code); desc != "" {
|
||||||
|
message = desc
|
||||||
|
} else {
|
||||||
|
message = "诺尔智汇返回未知错误"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &nuoerError{Code: code, Message: message}
|
||||||
|
}
|
||||||
|
|
||||||
|
// nuoerBusiError 诺尔智汇业务层错误(data.busiCode 字段)
|
||||||
|
type nuoerBusiError struct {
|
||||||
|
BusiCode int
|
||||||
|
BusiMsg string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *nuoerBusiError) Error() string {
|
||||||
|
return fmt.Sprintf("诺尔智汇业务错误,busiCode: %d,busiMsg: %s", e.BusiCode, e.BusiMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewNuoerBusiError 创建业务层错误
|
||||||
|
func NewNuoerBusiError(busiCode int, busiMsg string) *nuoerBusiError {
|
||||||
|
if busiMsg == "" {
|
||||||
|
if desc := GetBusiCodeDesc(busiCode); desc != "" {
|
||||||
|
busiMsg = desc
|
||||||
|
} else {
|
||||||
|
busiMsg = "诺尔智汇业务返回未知错误"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &nuoerBusiError{BusiCode: busiCode, BusiMsg: busiMsg}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNotFoundErrByBusiCode 将 busiCode 映射为「查询为空」类错误(不扣费场景)
|
||||||
|
func GetNotFoundErrByBusiCode(busiCode int) error {
|
||||||
|
switch busiCode {
|
||||||
|
case BusiCodeNotFound:
|
||||||
|
return ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetErrByBusiCode 将 busiCode 映射为内部哨兵错误,供处理器 errors.Is 判断
|
||||||
|
func GetErrByBusiCode(busiCode int) error {
|
||||||
|
if busiCode == BusiCodeSuccess {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if notFound := GetNotFoundErrByBusiCode(busiCode); notFound != nil {
|
||||||
|
return notFound
|
||||||
|
}
|
||||||
|
return ErrDatasource
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetErrByPlatformCode 将平台 code 映射为内部哨兵错误
|
||||||
|
func GetErrByPlatformCode(code int) error {
|
||||||
|
if code == CodeSuccess {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return ErrDatasource
|
||||||
|
}
|
||||||
64
internal/infrastructure/external/nuoer/nuoer_factory.go
vendored
Normal file
64
internal/infrastructure/external/nuoer/nuoer_factory.go
vendored
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"hyapi-server/internal/config"
|
||||||
|
"hyapi-server/internal/shared/external_logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewNuoerServiceWithConfig 使用配置创建诺尔智汇服务
|
||||||
|
func NewNuoerServiceWithConfig(cfg *config.Config) (*NuoerService, error) {
|
||||||
|
loggingConfig := external_logger.ExternalServiceLoggingConfig{
|
||||||
|
Enabled: cfg.Nuoer.Logging.Enabled,
|
||||||
|
LogDir: cfg.Nuoer.Logging.LogDir,
|
||||||
|
ServiceName: "nuoer",
|
||||||
|
UseDaily: cfg.Nuoer.Logging.UseDaily,
|
||||||
|
EnableLevelSeparation: cfg.Nuoer.Logging.EnableLevelSeparation,
|
||||||
|
LevelConfigs: make(map[string]external_logger.ExternalServiceLevelFileConfig),
|
||||||
|
}
|
||||||
|
|
||||||
|
for level, levelCfg := range cfg.Nuoer.Logging.LevelConfigs {
|
||||||
|
loggingConfig.LevelConfigs[level] = external_logger.ExternalServiceLevelFileConfig{
|
||||||
|
MaxSize: levelCfg.MaxSize,
|
||||||
|
MaxBackups: levelCfg.MaxBackups,
|
||||||
|
MaxAge: levelCfg.MaxAge,
|
||||||
|
Compress: levelCfg.Compress,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
logger, err := external_logger.NewExternalServiceLogger(loggingConfig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout := cfg.Nuoer.Timeout
|
||||||
|
if timeout <= 0 {
|
||||||
|
timeout = defaultRequestTimeout
|
||||||
|
}
|
||||||
|
|
||||||
|
return NewNuoerService(
|
||||||
|
cfg.Nuoer.URL,
|
||||||
|
cfg.Nuoer.AppID,
|
||||||
|
cfg.Nuoer.AppSecret,
|
||||||
|
timeout,
|
||||||
|
logger,
|
||||||
|
), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewNuoerServiceWithLogging 使用自定义日志配置创建诺尔智汇服务
|
||||||
|
func NewNuoerServiceWithLogging(url, appID, appSecret string, timeout time.Duration, loggingConfig external_logger.ExternalServiceLoggingConfig) (*NuoerService, error) {
|
||||||
|
loggingConfig.ServiceName = "nuoer"
|
||||||
|
|
||||||
|
logger, err := external_logger.NewExternalServiceLogger(loggingConfig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return NewNuoerService(url, appID, appSecret, timeout, logger), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewNuoerServiceSimple 创建无日志的诺尔智汇服务
|
||||||
|
func NewNuoerServiceSimple(url, appID, appSecret string, timeout time.Duration) *NuoerService {
|
||||||
|
return NewNuoerService(url, appID, appSecret, timeout, nil)
|
||||||
|
}
|
||||||
253
internal/infrastructure/external/nuoer/nuoer_service.go
vendored
Normal file
253
internal/infrastructure/external/nuoer/nuoer_service.go
vendored
Normal file
@@ -0,0 +1,253 @@
|
|||||||
|
package nuoer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"crypto/md5"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"hyapi-server/internal/shared/external_logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
const defaultRequestTimeout = 4 * time.Second
|
||||||
|
|
||||||
|
// nuoerResponse 诺尔智汇通用响应
|
||||||
|
type nuoerResponse struct {
|
||||||
|
Code int `json:"code"`
|
||||||
|
Msg string `json:"msg"`
|
||||||
|
SeqNo string `json:"seqNo"`
|
||||||
|
Data interface{} `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// serviceConfig 诺尔智汇服务运行时配置
|
||||||
|
type serviceConfig struct {
|
||||||
|
URL string
|
||||||
|
AppID string
|
||||||
|
AppSecret string
|
||||||
|
Timeout time.Duration
|
||||||
|
}
|
||||||
|
|
||||||
|
// NuoerService 诺尔智汇服务
|
||||||
|
type NuoerService struct {
|
||||||
|
config serviceConfig
|
||||||
|
logger *external_logger.ExternalServiceLogger
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewNuoerService 创建诺尔智汇服务实例
|
||||||
|
func NewNuoerService(url, appID, appSecret string, timeout time.Duration, logger *external_logger.ExternalServiceLogger) *NuoerService {
|
||||||
|
if timeout <= 0 {
|
||||||
|
timeout = defaultRequestTimeout
|
||||||
|
}
|
||||||
|
return &NuoerService{
|
||||||
|
config: serviceConfig{
|
||||||
|
URL: url,
|
||||||
|
AppID: appID,
|
||||||
|
AppSecret: appSecret,
|
||||||
|
Timeout: timeout,
|
||||||
|
},
|
||||||
|
logger: logger,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *NuoerService) generateRequestID() string {
|
||||||
|
timestamp := time.Now().UnixNano()
|
||||||
|
hash := md5.Sum([]byte(fmt.Sprintf("%d_%s", timestamp, s.config.AppID)))
|
||||||
|
return fmt.Sprintf("nuoer_%x", hash[:8])
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *NuoerService) CallAPI(ctx context.Context, apiKey, apiPath string, body map[string]string) (*nuoerResponse, error) {
|
||||||
|
requestURL := strings.TrimSuffix(s.config.URL, "/")
|
||||||
|
if apiPath != "" {
|
||||||
|
if !strings.HasPrefix(apiPath, "/") {
|
||||||
|
apiPath = "/" + apiPath
|
||||||
|
}
|
||||||
|
requestURL += apiPath
|
||||||
|
}
|
||||||
|
|
||||||
|
requestID := s.generateRequestID()
|
||||||
|
startTime := time.Now()
|
||||||
|
|
||||||
|
var transactionID string
|
||||||
|
if id, ok := ctx.Value("transaction_id").(string); ok {
|
||||||
|
transactionID = id
|
||||||
|
}
|
||||||
|
|
||||||
|
// 对调用方传入的 body 全量参与加签(排除空值,按 key 升序,见 Sign)
|
||||||
|
sign := Sign(body, s.config.AppSecret)
|
||||||
|
|
||||||
|
requestPayload := map[string]interface{}{
|
||||||
|
"appId": s.config.AppID,
|
||||||
|
"sign": sign,
|
||||||
|
"apiKey": apiKey,
|
||||||
|
"body": body,
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogRequest(requestID, transactionID, apiKey, requestURL)
|
||||||
|
}
|
||||||
|
|
||||||
|
bodyBytes, err := json.Marshal(requestPayload)
|
||||||
|
if err != nil {
|
||||||
|
err = errors.Join(ErrSystem, err)
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(ctx, http.MethodPost, requestURL, bytes.NewBuffer(bodyBytes))
|
||||||
|
if err != nil {
|
||||||
|
err = errors.Join(ErrSystem, err)
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
client := &http.Client{Timeout: s.config.Timeout}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
err = wrapHTTPError(err)
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
respBody, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
err = errors.Join(ErrSystem, err)
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogResponse(requestID, transactionID, apiKey, resp.StatusCode, time.Since(startTime))
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
err = errors.Join(ErrDatasource, fmt.Errorf("HTTP状态码 %d", resp.StatusCode))
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var nuoerResp nuoerResponse
|
||||||
|
if err := json.Unmarshal(respBody, &nuoerResp); err != nil {
|
||||||
|
err = errors.Join(ErrSystem, fmt.Errorf("响应解析失败: %w", err))
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if nuoerResp.Code != CodeSuccess {
|
||||||
|
nuoerErr := NewNuoerError(nuoerResp.Code, nuoerResp.Msg)
|
||||||
|
err = errors.Join(GetErrByPlatformCode(nuoerResp.Code), nuoerErr)
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, nuoerErr, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if nuoerResp.Data == nil {
|
||||||
|
err = errors.Join(ErrSystem, errors.New("响应 data 为空"))
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
busiCode, busiMsg, ok := parseDataBusiInfo(nuoerResp.Data)
|
||||||
|
if !ok {
|
||||||
|
err = errors.Join(ErrSystem, errors.New("响应 data 无法解析 busiCode"))
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if busiCode != BusiCodeSuccess {
|
||||||
|
busiErr := NewNuoerBusiError(busiCode, busiMsg)
|
||||||
|
err = errors.Join(GetErrByBusiCode(busiCode), busiErr)
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, busiErr, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanedData, err := stripBusiMetaFromData(nuoerResp.Data)
|
||||||
|
if err != nil {
|
||||||
|
err = errors.Join(ErrSystem, fmt.Errorf("响应 data 清理失败: %w", err))
|
||||||
|
if s.logger != nil {
|
||||||
|
s.logger.LogError(requestID, transactionID, apiKey, err, requestPayload)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
nuoerResp.Data = cleanedData
|
||||||
|
|
||||||
|
return &nuoerResp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// nuoerDataBusiMeta 业务层状态字段,仅用于解析校验,不对外返回
|
||||||
|
type nuoerDataBusiMeta struct {
|
||||||
|
BusiCode int `json:"busiCode"`
|
||||||
|
BusiMsg string `json:"busiMsg"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseDataBusiInfo 从各接口不同的 data 结构中解析 busiCode、busiMsg
|
||||||
|
func parseDataBusiInfo(data interface{}) (busiCode int, busiMsg string, ok bool) {
|
||||||
|
if data == nil {
|
||||||
|
return 0, "", false
|
||||||
|
}
|
||||||
|
raw, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
return 0, "", false
|
||||||
|
}
|
||||||
|
var meta nuoerDataBusiMeta
|
||||||
|
if err := json.Unmarshal(raw, &meta); err != nil {
|
||||||
|
return 0, "", false
|
||||||
|
}
|
||||||
|
return meta.BusiCode, meta.BusiMsg, true
|
||||||
|
}
|
||||||
|
|
||||||
|
// stripBusiMetaFromData 去掉 data 中的 busiCode、busiMsg,仅保留业务载荷
|
||||||
|
func stripBusiMetaFromData(data interface{}) (interface{}, error) {
|
||||||
|
raw, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var payload map[string]interface{}
|
||||||
|
if err := json.Unmarshal(raw, &payload); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
delete(payload, "busiCode")
|
||||||
|
delete(payload, "busiMsg")
|
||||||
|
return payload, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapHTTPError(err error) error {
|
||||||
|
if err == context.DeadlineExceeded {
|
||||||
|
return errors.Join(ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if netErr, ok := err.(interface{ Timeout() bool }); ok && netErr.Timeout() {
|
||||||
|
return errors.Join(ErrDatasource, err)
|
||||||
|
}
|
||||||
|
switch err.Error() {
|
||||||
|
case "context deadline exceeded", "timeout", "Client.Timeout exceeded", "net/http: request canceled":
|
||||||
|
return errors.Join(ErrDatasource, err)
|
||||||
|
default:
|
||||||
|
return errors.Join(ErrSystem, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user