@@ -47,16 +47,21 @@ func NewApiRequestService(c config.Config, westDexService *WestDexService, yusha
type APIResponseData struct {
ApiID string ` json:"apiID" `
Data json . RawMessage ` json:"data" ` // 这里用 RawMessage 来存储原始的 data
TaskID string ` json:"task_id,omitempty" `
IsAsync bool ` json:"is_async,omitempty" `
Sort int64 ` json:"sort" `
Success bool ` json:"success" `
Timestamp string ` json:"timestamp" `
Error string ` json:"error,omitempty" `
}
type APIInternalResult struct {
IsAsync bool ` json:"is_async,omitempty" `
TaskID string ` json:"task_id,omitempty" `
Data json . RawMessage ` json:"data" `
}
// ProcessRequests 处理请求
func ( a * ApiRequestService ) ProcessRequests ( params [ ] byte , productID int64 ) ( [ ] byte , error ) {
var ctx , cancel = context . WithCancel ( context . Background ( ) )
defer cancel ( )
func ( a * ApiRequestService ) ProcessRequests ( ctx context . Context , params [ ] byte , productID int64 ) ( [ ] byte , error ) {
build := a . productFeatureModel . SelectBuilder ( ) . Where ( squirrel . Eq {
"product_id" : productID ,
} )
@@ -66,11 +71,11 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
}
var featureIDs [ ] int64
isImportantMap := make ( map [ int64 ] int64 , len ( productFeatureList ) )
sortMap := make ( map [ int64 ] int64 , len ( productFeatureList ) ) // 新增
sortMap := make ( map [ int64 ] int64 , len ( productFeatureList ) )
for _ , pf := range productFeatureList {
featureIDs = append ( featureIDs , pf . FeatureId )
isImportantMap [ pf . FeatureId ] = pf . IsImportant
sortMap [ pf . FeatureId ] = pf . Sort // 新增
sortMap [ pf . FeatureId ] = pf . Sort
}
if len ( featureIDs ) == 0 {
return nil , errors . New ( "featureIDs 是空的" )
@@ -92,13 +97,16 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
retryNum = 5
)
childCtx , cancel := context . WithCancel ( ctx )
defer cancel ( )
for i , feature := range featureList {
wg . Add ( 1 )
go func ( i int , feature * model . Feature ) {
defer wg . Done ( )
select {
case <- ctx . Done ( ) :
case <- childC tx . Done ( ) :
return
default :
}
@@ -109,15 +117,14 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
}
timestamp := time . Now ( ) . Format ( "2006-01-02 15:04:05" )
var (
resp json . RawMessage
resp * APIInternalResult
preprocessErr error
)
// 若 isImportantMap[feature.ID] == 1, 则表示需要在出错时重试
isImportant := isImportantMap [ feature . Id ] == 1
tryCount := 0
for {
tryCount ++
resp , preprocessErr = a . PreprocessRequestApi ( params , feature . ApiId )
resp , preprocessErr = a . PreprocessRequestApi ( childCtx , params, feature . ApiId )
if preprocessErr == nil {
break
}
@@ -130,7 +137,13 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
if preprocessErr != nil {
result . Timestamp = timestamp
result . Error = preprocessErr . Error ( )
result . Data = resp
if resp != nil {
result . Data = resp . Data
if resp . IsAsync {
result . IsAsync = true
result . TaskID = resp . TaskID
}
}
resultsCh <- result
errorsCh <- fmt . Errorf ( "请求失败: %v" , preprocessErr )
atomic . AddInt32 ( & errorCount , 1 )
@@ -140,9 +153,13 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
return
}
result . Data = resp
result . Data = resp . Data
result . Success = true
result . Timestamp = timestamp
if resp . IsAsync {
result . IsAsync = true
result . TaskID = resp . TaskID
}
resultsCh <- result
} ( i , feature )
}
@@ -152,7 +169,6 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
close ( resultsCh )
close ( errorsCh )
} ( )
// 收集所有结果并合并
var responseData [ ] APIResponseData
for result := range resultsCh {
responseData = append ( responseData , result )
@@ -174,7 +190,7 @@ func (a *ApiRequestService) ProcessRequests(params []byte, productID int64) ([]b
}
// ------------------------------------请求处理器--------------------------
var requestProcessors = map [ string ] func ( * ApiRequestService , [ ] byte ) ( [ ] byte , error ) {
var requestProcessors = map [ string ] func ( * ApiRequestService , context . Context , [ ] byte ) ( * APIInternalResult , error ) {
"G09SC02" : ( * ApiRequestService ) . ProcessG09SC02Request ,
"G27BJ05" : ( * ApiRequestService ) . ProcessG27BJ05Request ,
"G26BJ05" : ( * ApiRequestService ) . ProcessG26BJ05Request ,
@@ -197,6 +213,7 @@ var requestProcessors = map[string]func(*ApiRequestService, []byte) ([]byte, err
"CAR061" : ( * ApiRequestService ) . ProcessCAR061Request , // 名下车辆
"CAR074" : ( * ApiRequestService ) . ProcessCAR074Request , // 车辆出险信息
"CAR058" : ( * ApiRequestService ) . ProcessCAR058Request , // 车辆维保记录
"CAR059" : ( * ApiRequestService ) . ProcessCAR059Request , // 车辆维保记录结果查询
"CAR079" : ( * ApiRequestService ) . ProcessCAR079Request , // 车架号查车
"CAR066" : ( * ApiRequestService ) . ProcessCAR066Request , // 车辆过户次数
"CAR100" : ( * ApiRequestService ) . ProcessCAR100Request , // 车辆估值
@@ -221,15 +238,15 @@ var requestProcessors = map[string]func(*ApiRequestService, []byte) ([]byte, err
}
// PreprocessRequestApi 调用指定的请求处理函数
func ( a * ApiRequestService ) PreprocessRequestApi ( params [ ] byte , apiID string ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) PreprocessRequestApi ( ctx context . Context , params [ ] byte , apiID string ) ( * APIInternalResult , error ) {
if processor , exists := requestProcessors [ apiID ] ; exists {
return processor ( a , params ) // 调用 ApiRequestService 方法
return processor ( a , ctx , params ) // 调用 ApiRequestService 方法
}
return nil , errors . New ( "api请求, 未找到相应的处理程序" )
}
func ( a * ApiRequestService ) ProcessG09SC02Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG09SC02Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -255,13 +272,15 @@ func (a *ApiRequestService) ProcessG09SC02Request(params []byte) ([]byte, error)
if err != nil {
return nil , err
}
return jsonResponse , nil
return & APIInternalResult {
Data : jsonResponse ,
} , nil
} else {
return nil , errors . New ( "查询为空" )
}
}
func ( a * ApiRequestService ) ProcessG27BJ05Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG27BJ05Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
mobile := gjson . GetBytes ( params , "mobile" )
@@ -311,10 +330,12 @@ func (a *ApiRequestService) ProcessG27BJ05Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "编码修改后的 data 失败: %v" , err )
}
return modifiedData , nil
return & APIInternalResult {
Data : modifiedData ,
} , nil
}
func ( a * ApiRequestService ) ProcessG26BJ05Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG26BJ05Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
mobile := gjson . GetBytes ( params , "mobile" )
@@ -364,10 +385,12 @@ func (a *ApiRequestService) ProcessG26BJ05Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "编码修改后的 data 失败: %v" , err )
}
return modifiedData , nil
return & APIInternalResult {
Data : modifiedData ,
} , nil
}
func ( a * ApiRequestService ) ProcessG34BJ03Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG34BJ03Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -393,13 +416,15 @@ func (a *ApiRequestService) ProcessG34BJ03Request(params []byte) ([]byte, error)
if err != nil {
return nil , err
}
return jsonResponse , nil
return & APIInternalResult {
Data : jsonResponse ,
} , nil
} else {
return nil , errors . New ( "查询为空" )
}
}
func ( a * ApiRequestService ) ProcessG35SC01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG35SC01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -451,10 +476,12 @@ func (a *ApiRequestService) ProcessG35SC01Request(params []byte) ([]byte, error)
return nil , fmt . Errorf ( "编码最终的 JSON 对象失败: %v" , err )
}
return finalDataBytes , nil
return & APIInternalResult {
Data : finalDataBytes ,
} , nil
}
func ( a * ApiRequestService ) ProcessG28BJ05Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG28BJ05Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
mobile := gjson . GetBytes ( params , "mobile" )
@@ -504,10 +531,12 @@ func (a *ApiRequestService) ProcessG28BJ05Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "编码修改后的 data 失败: %v" , err )
}
return modifiedData , nil
return & APIInternalResult {
Data : modifiedData ,
} , nil
}
func ( a * ApiRequestService ) ProcessG05HZ01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG05HZ01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
idCard := gjson . GetBytes ( params , "id_card" )
if ! idCard . Exists ( ) {
@@ -535,14 +564,16 @@ func (a *ApiRequestService) ProcessG05HZ01Request(params []byte) ([]byte, error)
return nil , fmt . Errorf ( "响应中缺少 data 字段" )
}
// 返回 data 字段的内容
return [ ] byte ( data . Raw ) , nil
return & APIInternalResult {
Data : [ ] byte ( data . Raw ) ,
} , nil
}
// code 不等于 "0000",返回错误
return nil , fmt . Errorf ( "响应code错误%s" , code . String ( ) )
}
func ( a * ApiRequestService ) ProcessQ23SC01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessQ23SC01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
entName := gjson . GetBytes ( params , "ent_name" )
entCode := gjson . GetBytes ( params , "ent_code" )
@@ -596,10 +627,12 @@ func (a *ApiRequestService) ProcessQ23SC01Request(params []byte) ([]byte, error)
if statusResult . Exists ( ) || statusResult . Int ( ) == - 1 {
return nil , fmt . Errorf ( "企业涉诉为空: %+v" , finalDataBytes )
}
return finalDataBytes , nil
return & APIInternalResult {
Data : finalDataBytes ,
} , nil
}
func ( a * ApiRequestService ) ProcessG15BJ02Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG15BJ02Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
mobile := gjson . GetBytes ( params , "mobile" )
@@ -626,13 +659,15 @@ func (a *ApiRequestService) ProcessG15BJ02Request(params []byte) ([]byte, error)
code := dataResult . Int ( )
// 处理允许的 code 值
if code == 1000 || code == 1003 || code == 1004 || code == 1005 {
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
return nil , fmt . Errorf ( "三要素核验失败: %+v" , resp )
}
func ( a * ApiRequestService ) ProcessG17BJ02Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG17BJ02Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
mobile := gjson . GetBytes ( params , "mobile" )
@@ -657,13 +692,15 @@ func (a *ApiRequestService) ProcessG17BJ02Request(params []byte) ([]byte, error)
code := dataResult . Int ( )
// 处理允许的 code 值
if code == 1000 || code == 1001 {
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
return nil , fmt . Errorf ( "手机二要素核验失败: %+v" , resp )
}
func ( a * ApiRequestService ) ProcessG08SC02Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG08SC02Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -681,10 +718,12 @@ func (a *ApiRequestService) ProcessG08SC02Request(params []byte) ([]byte, error)
if callApiErr != nil {
return nil , callApiErr
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
func ( a * ApiRequestService ) ProcessKZEYSRequest ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessKZEYSRequest ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -738,11 +777,13 @@ func (a *ApiRequestService) ProcessKZEYSRequest(params []byte) ([]byte, error) {
}
dataRaw := respData . Raw
// 成功返回
return [ ] byte ( dataRaw ) , nil
return & APIInternalResult {
Data : [ ] byte ( dataRaw ) ,
} , nil
}
// 人车核验
func ( a * ApiRequestService ) ProcessP_C_B332Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessP_C_B332Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
carType := gjson . GetBytes ( params , "car_type" )
carLicense := gjson . GetBytes ( params , "car_license" )
@@ -759,11 +800,13 @@ func (a *ApiRequestService) ProcessP_C_B332Request(params []byte) ([]byte, error
if err != nil {
return nil , fmt . Errorf ( "人车核验查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 车辆出险信息
func ( a * ApiRequestService ) ProcessCAR074Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessCAR074Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
vinCode := gjson . GetBytes ( params , "vin_code" )
if ! vinCode . Exists ( ) {
return nil , errors . New ( "api请求, CAR074, 获取相关参数失败" )
@@ -776,11 +819,13 @@ func (a *ApiRequestService) ProcessCAR074Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "车辆出险信息查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 车辆维保记录
func ( a * ApiRequestService ) ProcessCAR058Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessCAR058Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
vinCode := gjson . GetBytes ( params , "vin_code" )
carType := gjson . GetBytes ( params , "car_driving_permit" )
if ! vinCode . Exists ( ) || ! carType . Exists ( ) {
@@ -794,13 +839,131 @@ func (a *ApiRequestService) ProcessCAR058Request(params []byte) ([]byte, error)
}
resp , err := a . yushanService . request ( "CAR058" , request )
if err != nil {
return nil , fmt . Errorf ( "人车核验 查询失败: %+v" , err )
return nil , fmt . Errorf ( "车辆维保记录 查询失败: %+v" , err )
}
return resp , nil
orderID := gjson . GetBytes ( resp , "orderId" ) . String ( )
if orderID == "" {
return nil , fmt . Errorf ( "获取订单ID失败" )
}
// 如果需要查询结果( queryID > 0) , 直接调用ProcessCAR059Request
// 构建查询参数
queryParams := map [ string ] interface { } {
"order_id" : orderID ,
}
queryBytes , _ := json . Marshal ( queryParams )
// 直接调用ProcessCAR059Request进行查询, 传递上级context
result , err := a . ProcessCAR059Request ( ctx , queryBytes )
if err != nil {
return nil , err
}
// 返回CAR058响应与CAR059结果的组合
return & APIInternalResult {
Data : result . Data , // 原始CAR058响应
} , nil
}
// 车辆维保记录结果查询
func ( a * ApiRequestService ) ProcessCAR059Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
orderID := gjson . GetBytes ( params , "order_id" )
if ! orderID . Exists ( ) {
return nil , errors . New ( "api请求, CAR059, 获取相关参数失败" )
}
retryCount := 0
if gjson . GetBytes ( params , "retry_count" ) . Exists ( ) {
retryCount = int ( gjson . GetBytes ( params , "retry_count" ) . Int ( ) )
}
// 构建请求参数
request := map [ string ] interface { } {
"orderId" : orderID . String ( ) ,
}
// 调用API
resp , err := a . yushanService . request ( "CAR059" , request )
if err != nil {
if resp != nil {
// 使用gjson解析返回结果中的状态码
retcode := gjson . GetBytes ( resp , "retcode" ) . String ( )
logx . Infof ( "车辆维保记录查询任务,订单号: %s, 状态码: %s, 重试次数: %d" ,
orderID . String ( ) , retcode , retryCount )
// 根据不同状态码进行不同处理
switch retcode {
case "warn_029" : // 未查询到结果,请稍后重试
logx . Infof ( "车辆维保记录查询任务,订单号: %s, 未查询到结果,需要重试" , orderID . String ( ) )
// 检查重试次数
maxRetries := 10
if retryCount >= maxRetries {
fmt . Errorf ( "车辆维保记录查询任务已达最大重试次数 %d, 停止重试, 订单号: %s" ,
maxRetries , orderID . String ( ) )
}
// 计算延迟时间
var delay time . Duration
if retryCount == 0 {
delay = 0 // 第一次无延迟
} else {
// 指数退避策略
baseDelay := 3 * time . Second
maxDelay := 1 * time . Hour
delay = baseDelay
for i := 1 ; i < int ( retryCount ) ; i ++ {
delay = delay * 2
if delay > maxDelay {
delay = maxDelay
break
}
}
}
// 检查ctx是否已经有超时
deadline , hasDeadline := ctx . Deadline ( )
if hasDeadline {
timeRemaining := time . Until ( deadline )
if timeRemaining <= delay {
// 如果剩余时间不足, 使用剩余时间的90%作为超时
delay = time . Duration ( float64 ( timeRemaining ) * 0.9 )
logx . Infof ( "调整延迟时间以适应上下文超时,新延迟: %v" , delay )
}
}
// 等待指定延迟时间
logx . Infof ( "安排延迟重试,订单号: %s, 延迟: %v, 重试次数: %d" ,
orderID . String ( ) , delay , retryCount + 1 )
select {
case <- time . After ( delay ) :
// 延迟时间到,继续处理
case <- ctx . Done ( ) :
// 上下文被取消,返回错误
return nil , ctx . Err ( )
}
// 构建新的重试参数
retryParams := map [ string ] interface { } {
"order_id" : orderID . String ( ) ,
"retry_count" : retryCount + 1 ,
}
retryBytes , _ := json . Marshal ( retryParams )
// 递归调用自身进行重试
return a . ProcessCAR059Request ( ctx , retryBytes )
}
}
return nil , fmt . Errorf ( "车辆维保记录结果查询失败: %+v" , err )
}
logx . Infof ( "车辆维保记录查询任务完成,订单号: %s, 结果数据长度: %d" ,
orderID . String ( ) , len ( resp ) )
return & APIInternalResult {
Data : resp ,
} , nil
}
// 车架号查车
func ( a * ApiRequestService ) ProcessCAR079Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessCAR079Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
vinCode := gjson . GetBytes ( params , "vin_code" )
if ! vinCode . Exists ( ) {
return nil , errors . New ( "api请求, CAR079, 获取相关参数失败" )
@@ -813,11 +976,13 @@ func (a *ApiRequestService) ProcessCAR079Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "车架号查车查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 车辆过户次数
func ( a * ApiRequestService ) ProcessCAR066Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessCAR066Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
vinCode := gjson . GetBytes ( params , "vin_code" )
if ! vinCode . Exists ( ) {
return nil , errors . New ( "api请求, CAR066, 获取相关参数失败" )
@@ -830,11 +995,13 @@ func (a *ApiRequestService) ProcessCAR066Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "车辆过户次数查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 车辆估值
func ( a * ApiRequestService ) ProcessCAR100Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessCAR100Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
vinCode := gjson . GetBytes ( params , "vin_code" )
carLicense := gjson . GetBytes ( params , "car_license" )
if ! vinCode . Exists ( ) || ! carLicense . Exists ( ) {
@@ -850,11 +1017,13 @@ func (a *ApiRequestService) ProcessCAR100Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "车辆估值查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 银行卡黑名单
func ( a * ApiRequestService ) ProcessFIN019Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessFIN019Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
mobile := gjson . GetBytes ( params , "mobile" )
@@ -873,11 +1042,13 @@ func (a *ApiRequestService) ProcessFIN019Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "银行卡黑名单查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 名下车辆
func ( a * ApiRequestService ) ProcessCAR061Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessCAR061Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
idCard := gjson . GetBytes ( params , "id_card" )
if ! idCard . Exists ( ) {
@@ -890,10 +1061,12 @@ func (a *ApiRequestService) ProcessCAR061Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "名下车辆查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
func ( a * ApiRequestService ) ProcessG10SC02Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG10SC02Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
// 提取男方和女方信息
nameMan := gjson . GetBytes ( params , "nameMan" )
idCardMan := gjson . GetBytes ( params , "idCardMan" )
@@ -937,14 +1110,16 @@ func (a *ApiRequestService) ProcessG10SC02Request(params []byte) ([]byte, error)
if err != nil {
return nil , err
}
return jsonResponse , nil
return & APIInternalResult {
Data : jsonResponse ,
} , nil
} else {
return nil , errors . New ( "查询为空" )
}
}
// 手机号码风险
func ( a * ApiRequestService ) ProcessG03HZ01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG03HZ01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
mobile := gjson . GetBytes ( params , "mobile" )
if ! mobile . Exists ( ) {
@@ -969,11 +1144,13 @@ func (a *ApiRequestService) ProcessG03HZ01Request(params []byte) ([]byte, error)
if ! data . Exists ( ) {
return nil , fmt . Errorf ( "查询手机号码风险失败, %s" , string ( resp ) )
}
return [ ] byte ( data . Raw ) , nil
return & APIInternalResult {
Data : [ ] byte ( data . Raw ) ,
} , nil
}
// 手机在网时长
func ( a * ApiRequestService ) ProcessG02BJ02Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG02BJ02Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
mobile := gjson . GetBytes ( params , "mobile" )
if ! mobile . Exists ( ) {
@@ -999,11 +1176,13 @@ func (a *ApiRequestService) ProcessG02BJ02Request(params []byte) ([]byte, error)
if ! data . Exists ( ) {
return nil , fmt . Errorf ( "查询手机在网时长失败, %s" , string ( resp ) )
}
return [ ] byte ( data . Raw ) , nil
return & APIInternalResult {
Data : [ ] byte ( data . Raw ) ,
} , nil
}
// 手机二次卡
func ( a * ApiRequestService ) ProcessG19BJ02Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG19BJ02Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
mobile := gjson . GetBytes ( params , "mobile" )
startDate := gjson . GetBytes ( params , "startDate" )
if ! mobile . Exists ( ) {
@@ -1029,11 +1208,13 @@ func (a *ApiRequestService) ProcessG19BJ02Request(params []byte) ([]byte, error)
if ! data . Exists ( ) {
return nil , fmt . Errorf ( "手机二次卡失败, %s" , string ( resp ) )
}
return [ ] byte ( data . Raw ) , nil
return & APIInternalResult {
Data : [ ] byte ( data . Raw ) ,
} , nil
}
// 银行卡四要素
func ( a * ApiRequestService ) ProcessG20GZ01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG20GZ01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
mobile := gjson . GetBytes ( params , "mobile" )
@@ -1077,11 +1258,13 @@ func (a *ApiRequestService) ProcessG20GZ01Request(params []byte) ([]byte, error)
return nil , fmt . Errorf ( "重新编码 data 失败: %v" , err )
}
return resultBytes , nil
return & APIInternalResult {
Data : resultBytes ,
} , nil
}
// G37SC01 自然人失信信息
func ( a * ApiRequestService ) ProcessG37SC01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG37SC01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -1111,11 +1294,13 @@ func (a *ApiRequestService) ProcessG37SC01Request(params []byte) ([]byte, error)
if ! sxbzxr . Exists ( ) {
return nil , fmt . Errorf ( "内层 sxbzxr 字段不存在" )
}
return [ ] byte ( sxbzxr . Raw ) , nil
return & APIInternalResult {
Data : [ ] byte ( sxbzxr . Raw ) ,
} , nil
}
// G36SC01 自然人限高信息
func ( a * ApiRequestService ) ProcessG36SC01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG36SC01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -1145,11 +1330,13 @@ func (a *ApiRequestService) ProcessG36SC01Request(params []byte) ([]byte, error)
if ! xgbzxr . Exists ( ) {
return nil , fmt . Errorf ( "内层 xgbzxr 字段不存在" )
}
return [ ] byte ( xgbzxr . Raw ) , nil
return & APIInternalResult {
Data : [ ] byte ( xgbzxr . Raw ) ,
} , nil
}
// G22SC01 自然人司法模型
func ( a * ApiRequestService ) ProcessG22SC01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessG22SC01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -1182,11 +1369,13 @@ func (a *ApiRequestService) ProcessG22SC01Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "序列化失败: %v" , err )
}
return marshal , nil
return & APIInternalResult {
Data : marshal ,
} , nil
}
// Q03SC01 企业涉诉信息
func ( a * ApiRequestService ) ProcessQ03SC01Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessQ03SC01Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
entName := gjson . GetBytes ( params , "ent_name" )
entCode := gjson . GetBytes ( params , "ent_code" )
@@ -1219,11 +1408,13 @@ func (a *ApiRequestService) ProcessQ03SC01Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "序列化失败: %v" , err )
}
return marshal , nil
return & APIInternalResult {
Data : marshal ,
} , nil
}
// 出境限制查询
func ( a * ApiRequestService ) ProcessCOM187Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessCOM187Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
if ! name . Exists ( ) {
return nil , errors . New ( "api请求, COM187, 获取相关参数失败" )
@@ -1236,11 +1427,13 @@ func (a *ApiRequestService) ProcessCOM187Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "出境限制查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 手机月消费档次查询
func ( a * ApiRequestService ) ProcessMOB035Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessMOB035Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
mobile := gjson . GetBytes ( params , "mobile" )
if ! mobile . Exists ( ) {
return nil , errors . New ( "api请求, MOB035, 获取相关参数失败" )
@@ -1253,11 +1446,13 @@ func (a *ApiRequestService) ProcessMOB035Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "手机月消费档次查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 学历信息验证
func ( a * ApiRequestService ) ProcessPCB915Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessPCB915Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
certificateNumber := gjson . GetBytes ( params , "certificate_number" )
@@ -1275,11 +1470,13 @@ func (a *ApiRequestService) ProcessPCB915Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "学历信息验证失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 反诈反赌风险核验
func ( a * ApiRequestService ) ProcessRIS031Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessRIS031Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
keyword := gjson . GetBytes ( params , "keyword" )
typeName := gjson . GetBytes ( params , "type" )
@@ -1295,11 +1492,13 @@ func (a *ApiRequestService) ProcessRIS031Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "反诈反赌风险核验失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 手机号空号检测
func ( a * ApiRequestService ) ProcessPCB601Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessPCB601Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
mobile := gjson . GetBytes ( params , "mobile" )
if ! mobile . Exists ( ) {
return nil , errors . New ( "api请求, PCB601, 获取相关参数失败" )
@@ -1312,11 +1511,13 @@ func (a *ApiRequestService) ProcessPCB601Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "手机号空号检测失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 银行卡归属地查询
func ( a * ApiRequestService ) ProcessPCB148Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessPCB148Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
bankCard := gjson . GetBytes ( params , "bank_card" )
if ! bankCard . Exists ( ) {
return nil , errors . New ( "api请求, PCB148, 获取相关参数失败" )
@@ -1329,11 +1530,13 @@ func (a *ApiRequestService) ProcessPCB148Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "银行卡归属地查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 银行卡姓名二要素验证
func ( a * ApiRequestService ) ProcessFIN011Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessFIN011Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
bankCard := gjson . GetBytes ( params , "bank_card" )
@@ -1349,11 +1552,13 @@ func (a *ApiRequestService) ProcessFIN011Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "银行卡姓名二要素验证失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 银行卡号码二要素验证
func ( a * ApiRequestService ) ProcessFIN020Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessFIN020Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
idCard := gjson . GetBytes ( params , "id_card" )
bankCard := gjson . GetBytes ( params , "bank_card" )
@@ -1369,11 +1574,13 @@ func (a *ApiRequestService) ProcessFIN020Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "银行卡号码二要素验证失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 银行卡三要素综合验证
func ( a * ApiRequestService ) ProcessFIN018Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessFIN018Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
bankCard := gjson . GetBytes ( params , "bank_card" )
@@ -1391,11 +1598,13 @@ func (a *ApiRequestService) ProcessFIN018Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "银行卡三要素综合验证失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 手机号码风险评估
func ( a * ApiRequestService ) ProcessMOB032Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessMOB032Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
mobile := gjson . GetBytes ( params , "mobile" )
if ! mobile . Exists ( ) {
return nil , errors . New ( "api请求, MOB032, 获取相关参数失败" )
@@ -1408,11 +1617,13 @@ func (a *ApiRequestService) ProcessMOB032Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "手机号码风险评估失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 手机号贩毒反诈风险查询
func ( a * ApiRequestService ) ProcessFIN032Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessFIN032Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
keyword := gjson . GetBytes ( params , "keyword" )
typeName := gjson . GetBytes ( params , "type" )
@@ -1428,11 +1639,13 @@ func (a *ApiRequestService) ProcessFIN032Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "手机号贩毒反诈风险查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 技能资格证书
func ( a * ApiRequestService ) ProcessHRD004Request ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessHRD004Request ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
name := gjson . GetBytes ( params , "name" )
idCard := gjson . GetBytes ( params , "id_card" )
@@ -1448,11 +1661,13 @@ func (a *ApiRequestService) ProcessHRD004Request(params []byte) ([]byte, error)
if err != nil {
return nil , fmt . Errorf ( "HRD004请求失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 手机归属地查询
func ( a * ApiRequestService ) ProcessMobilelocalRequest ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessMobilelocalRequest ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
mobile := gjson . GetBytes ( params , "mobile" )
if ! mobile . Exists ( ) {
return nil , errors . New ( "api请求, mobilelocal, 获取相关参数失败" )
@@ -1466,11 +1681,13 @@ func (a *ApiRequestService) ProcessMobilelocalRequest(params []byte) ([]byte, er
if err != nil {
return nil , fmt . Errorf ( "手机归属地查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}
// 身份证归属地查询
func ( a * ApiRequestService ) ProcessSfzRequest ( params [ ] byte ) ( [ ] byte , error ) {
func ( a * ApiRequestService ) ProcessSfzRequest ( ctx context . Context , params [ ] byte ) ( * APIInternalResult , error ) {
idCard := gjson . GetBytes ( params , "id_card" )
if ! idCard . Exists ( ) {
return nil , errors . New ( "api请求, sfz, 获取相关参数失败" )
@@ -1484,5 +1701,7 @@ func (a *ApiRequestService) ProcessSfzRequest(params []byte) ([]byte, error) {
if err != nil {
return nil , fmt . Errorf ( "身份证归属地查询失败: %+v" , err )
}
return resp , nil
return & APIInternalResult {
Data : resp ,
} , nil
}