This commit is contained in:
2025-08-18 16:47:19 +08:00
parent 29600670d2
commit 0b0548d495

View File

@@ -180,10 +180,7 @@ var requestProcessors = map[string]func(*ApiRequestService, []byte) ([]byte, err
"BehaviorRiskScan": (*ApiRequestService).ProcessBehaviorRiskScanRequest,
"YYSYBE08": (*ApiRequestService).ProcessYYSYBE08Request,
"YYSY09CD": (*ApiRequestService).ProcessYYSY09CDRequest,
"FLXGC9D1": (*ApiRequestService).ProcessFLXGC9D1Request,
"FLXG0687": (*ApiRequestService).ProcessFLXG0687Request,
"FLXG9687": (*ApiRequestService).ProcessFLXG9687Request,
"FLXG162A": (*ApiRequestService).ProcessFLXG162ARequest,
"FLXG3D56": (*ApiRequestService).ProcessFLXG3D56Request,
"FLXG0V4B": (*ApiRequestService).ProcesFLXG0V4BRequest,
"QYGL8271": (*ApiRequestService).ProcessQYGL8271Request,
@@ -215,7 +212,7 @@ func (a *ApiRequestService) ProcessPersonEnterpriseProRequest(params []byte) ([]
return nil, errors.New("api请求, PersonEnterprisePro, 获取相关参数失败")
}
resp, err := a.tianyuanapi.CallInterface("QYGL6F2D", map[string]interface{}{
resp, err := a.tianyuanapi.CallInterface("QYGLB4C0", map[string]interface{}{
"id_card": idCard.String(),
})
if err != nil {
@@ -543,15 +540,13 @@ func (a *ApiRequestService) ProcessPersonEnterpriseProRequest(params []byte) ([]
func (a *ApiRequestService) ProcesFLXG0V4BRequest(params []byte) ([]byte, error) {
name := gjson.GetBytes(params, "name")
idCard := gjson.GetBytes(params, "id_card")
mobile := gjson.GetBytes(params, "mobile")
if !name.Exists() || !idCard.Exists() || !mobile.Exists() {
if !name.Exists() || !idCard.Exists(){
return nil, errors.New("api请求, BehaviorRiskScan, 获取相关参数失败")
}
resp, err := a.tianyuanapi.CallInterface("FLXG0V4B", map[string]interface{}{
"name": name.String(),
"id_card": idCard.String(),
"mobile": mobile.String(),
"auth_date": generateAuthDateRange(),
})
if err != nil {
@@ -563,57 +558,15 @@ func (a *ApiRequestService) ProcesFLXG0V4BRequest(params []byte) ([]byte, error)
}
return respBytes, nil
}
// ProcessFLXGC9D1Request 黑灰产
func (a *ApiRequestService) ProcessFLXGC9D1Request(params []byte) ([]byte, error) {
name := gjson.GetBytes(params, "name")
idCard := gjson.GetBytes(params, "id_card")
mobile := gjson.GetBytes(params, "mobile")
if !name.Exists() || !idCard.Exists() || !mobile.Exists() {
return nil, errors.New("api请求, FLXGC9D1, 获取相关参数失败")
}
resp, err := a.tianyuanapi.CallInterface("FLXGC9D1", map[string]interface{}{
"name": name.String(),
"id_card": idCard.String(),
"mobile_no": mobile.String(),
})
if err != nil {
return nil, err
}
respBytes, err := convertTianyuanResponse(resp)
if err != nil {
return nil, err
}
flagBlackgraylevel := gjson.GetBytes(respBytes, "flag_blackgraylevel")
if !flagBlackgraylevel.Exists() || flagBlackgraylevel.String() != "1" {
return nil, fmt.Errorf("自然人黑灰产信息查询失败")
}
bglLevel := gjson.GetBytes(respBytes, "bgl_level")
if !bglLevel.Exists() {
return nil, fmt.Errorf("bgl_level 字段不存在")
}
return []byte(bglLevel.Raw), nil
}
// ProcessFLXG0687Request 反诈反赌核验
func (a *ApiRequestService) ProcessFLXG0687Request(params []byte) ([]byte, error) {
name := gjson.GetBytes(params, "name")
idCard := gjson.GetBytes(params, "id_card")
mobile := gjson.GetBytes(params, "mobile")
if !name.Exists() || !idCard.Exists() || !mobile.Exists() {
if !idCard.Exists() {
return nil, errors.New("api请求, FLXG0687, 获取相关参数失败")
}
resp, err := a.tianyuanapi.CallInterface("FLXG0687", map[string]interface{}{
"name": name.String(),
"id_card": idCard.String(),
"mobile_no": mobile.String(),
"id_card": idCard.String(),
})
if err != nil {
@@ -633,96 +586,7 @@ func (a *ApiRequestService) ProcessFLXG0687Request(params []byte) ([]byte, error
return []byte(Value.Raw), nil
}
// ProcessFLXG9687Request 电诈风险预警
func (a *ApiRequestService) ProcessFLXG9687Request(params []byte) ([]byte, error) {
name := gjson.GetBytes(params, "name")
idCard := gjson.GetBytes(params, "id_card")
mobile := gjson.GetBytes(params, "mobile")
if !name.Exists() || !idCard.Exists() || !mobile.Exists() {
return nil, errors.New("api请求, FLXG9687, 获取相关参数失败")
}
resp, err := a.tianyuanapi.CallInterface("FLXG9687", map[string]interface{}{
"name": name.String(),
"id_card": idCard.String(),
"mobile_no": mobile.String(),
})
if err != nil {
return nil, err
}
respBytes, err := convertTianyuanResponse(resp)
if err != nil {
return nil, err
}
flagTelefraudpredictstd := gjson.GetBytes(respBytes, "flag_telefraudpredictstd")
if !flagTelefraudpredictstd.Exists() || flagTelefraudpredictstd.String() != "1" {
return nil, fmt.Errorf("自然人电诈风险预警查询失败")
}
tfpsLevel := gjson.GetBytes(respBytes, "tfps_level")
if !tfpsLevel.Exists() {
return nil, fmt.Errorf("tfps_level 字段不存在")
}
return []byte(tfpsLevel.Raw), nil
}
// ProcessFLXG162ARequest 团伙欺诈
func (a *ApiRequestService) ProcessFLXG162ARequest(params []byte) ([]byte, error) {
name := gjson.GetBytes(params, "name")
idCard := gjson.GetBytes(params, "id_card")
mobile := gjson.GetBytes(params, "mobile")
if !name.Exists() || !idCard.Exists() || !mobile.Exists() {
return nil, errors.New("api请求, FLXG162A, 获取相关参数失败")
}
resp, err := a.tianyuanapi.CallInterface("FLXG162A", map[string]interface{}{
"name": name.String(),
"id_card": idCard.String(),
"mobile_no": mobile.String(),
})
if err != nil {
return nil, err
}
respBytes, err := convertTianyuanResponse(resp)
if err != nil {
return nil, err
}
flagFraudrelation := gjson.GetBytes(respBytes, "flag_fraudrelation")
if !flagFraudrelation.Exists() || flagFraudrelation.String() != "1" {
return nil, fmt.Errorf("自然人团伙欺诈排查查询失败")
}
frgListLevel := gjson.GetBytes(respBytes, "frg_list_level")
if !frgListLevel.Exists() {
return nil, fmt.Errorf("frg_list_level 字段不存在")
}
frgGroupNum := gjson.GetBytes(respBytes, "frg_group_num")
if !frgGroupNum.Exists() {
return nil, fmt.Errorf("frg_group_num 字段不存在")
}
// 构建包含两个字段的JSON响应
result := map[string]interface{}{
"frg_list_level": frgListLevel.Value(),
"frg_group_num": frgGroupNum.Value(),
}
resultJSON, err := json.Marshal(result)
if err != nil {
return nil, fmt.Errorf("序列化结果失败: %v", err)
}
return resultJSON, nil
}
// ProcessFLXG3D56Request 特殊名单
// ProcessFLXG3D56Request 违约失信
func (a *ApiRequestService) ProcessFLXG3D56Request(params []byte) ([]byte, error) {
name := gjson.GetBytes(params, "name")
idCard := gjson.GetBytes(params, "id_card")
@@ -745,20 +609,36 @@ func (a *ApiRequestService) ProcessFLXG3D56Request(params []byte) ([]byte, error
if err != nil {
return nil, err
}
// 获取 code 字段
codeResult := gjson.GetBytes(respBytes, "code")
validCodes := map[string]bool{"1006": true, "1007": true, "1008": true, "1009": true, "1010": true}
if !validCodes[codeResult.String()] {
return nil, fmt.Errorf("查询手机在网时长失败, %s", string(respBytes))
if !codeResult.Exists() {
return nil, fmt.Errorf("code 字段不存在")
}
if codeResult.String() != "00" {
return nil, fmt.Errorf("未匹配到相关结果")
}
data := gjson.GetBytes(respBytes, "data")
if !data.Exists() {
return nil, fmt.Errorf("查询手机在网时长失败, %s", string(respBytes))
// 获取 data 字段
dataResult := gjson.GetBytes(respBytes, "data")
if !dataResult.Exists() {
return nil, fmt.Errorf("data 字段不存在")
}
return []byte(data.Raw), nil
// 将 data 字段解析为 map
var dataMap map[string]interface{}
if err := json.Unmarshal([]byte(dataResult.Raw), &dataMap); err != nil {
return nil, fmt.Errorf("解析 data 字段失败: %v", err)
}
// 删除指定字段
delete(dataMap, "swift_number")
delete(dataMap, "DataStrategy")
// 重新编码为 JSON
modifiedData, err := json.Marshal(dataMap)
if err != nil {
return nil, fmt.Errorf("编码修改后的 data 失败: %v", err)
}
return modifiedData, nil
}
// ProcessIVYZ5733Request 婚姻状况
@@ -1281,9 +1161,8 @@ func (a *ApiRequestService) ProcessYYSY09CDRequest(params []byte) ([]byte, error
func (a *ApiRequestService) ProcessBehaviorRiskScanRequest(params []byte) ([]byte, error) {
name := gjson.GetBytes(params, "name")
idCard := gjson.GetBytes(params, "id_card")
mobile := gjson.GetBytes(params, "mobile")
if !name.Exists() || !idCard.Exists() || !mobile.Exists() {
if !name.Exists() || !idCard.Exists() {
return nil, errors.New("api请求, BehaviorRiskScan, 获取相关参数失败")
}
@@ -1293,17 +1172,10 @@ func (a *ApiRequestService) ProcessBehaviorRiskScanRequest(params []byte) ([]byt
data []byte
err error
}
results := make(chan apiResult, 4) // 4个风险检测项
results := make(chan apiResult, 1) // 4个风险检测项
// 并行调用两个不同的风险检测API
wg.Add(4)
// 黑灰产检测
go func() {
defer wg.Done()
respBytes, err := a.ProcessFLXGC9D1Request(params)
results <- apiResult{name: "black_gray_level", data: respBytes, err: err}
}()
wg.Add(1)
// 反赌反诈
go func() {
@@ -1312,20 +1184,6 @@ func (a *ApiRequestService) ProcessBehaviorRiskScanRequest(params []byte) ([]byt
results <- apiResult{name: "anti_fraud_gaming", data: respBytes, err: err}
}()
// 电诈风险预警
go func() {
defer wg.Done()
respBytes, err := a.ProcessFLXG9687Request(params)
results <- apiResult{name: "telefraud_level", data: respBytes, err: err}
}()
// 团伙欺诈
go func() {
defer wg.Done()
respBytes, err := a.ProcessFLXG162ARequest(params)
results <- apiResult{name: "fraud_group", data: respBytes, err: err}
}()
// 关闭结果通道
go func() {
wg.Wait()