This commit is contained in:
2025-08-06 21:29:35 +08:00
parent 43b926d668
commit f4ad8eac51
2 changed files with 80 additions and 122 deletions

View File

@@ -19,7 +19,6 @@ import (
"tyc-server/pkg/lzkit/lzUtils" "tyc-server/pkg/lzkit/lzUtils"
"github.com/Masterminds/squirrel" "github.com/Masterminds/squirrel"
"github.com/bytedance/sonic"
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
"github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/logx"
) )
@@ -1277,27 +1276,26 @@ func (a *ApiRequestService) ProcessG37SC01Request(ctx context.Context, params []
"data": map[string]interface{}{ "data": map[string]interface{}{
"name": a.westDexService.Encrypt(name.String()), "name": a.westDexService.Encrypt(name.String()),
"idcard": a.westDexService.Encrypt(idCard.String()), "idcard": a.westDexService.Encrypt(idCard.String()),
"auth_authorizeFileCode": a.westDexService.Encrypt("CON0120250730743901"),
}, },
} }
resp, callApiErr := a.westDexService.CallAPI("G37SC01", request) resp, callApiErr := a.westDexService.CallAPI("G37SC01", request)
if callApiErr != nil { if callApiErr != nil {
return nil, callApiErr return nil, callApiErr
} }
// 第一步:提取外层的 data 字段 parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
dataResult := gjson.GetBytes(resp, "data") if parseErr != nil {
if !dataResult.Exists() { return nil, parseErr
return nil, fmt.Errorf("外层 data 字段不存在")
}
// 解析 data 字符串为 JSON 对象
parsedData := gjson.Parse(dataResult.String())
sxbzxr := parsedData.Get("sxbzxr")
if !sxbzxr.Exists() {
return nil, fmt.Errorf("内层 sxbzxr 字段不存在")
} }
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parseResult, "G37SC0101.G37SC0102.content")
if contentResult.Exists() {
return &APIInternalResult{ return &APIInternalResult{
Data: []byte(sxbzxr.Raw), Data: []byte(contentResult.Raw),
}, nil }, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
} }
// G36SC01 自然人限高信息 // G36SC01 自然人限高信息
@@ -1313,27 +1311,26 @@ func (a *ApiRequestService) ProcessG36SC01Request(ctx context.Context, params []
"data": map[string]interface{}{ "data": map[string]interface{}{
"name": a.westDexService.Encrypt(name.String()), "name": a.westDexService.Encrypt(name.String()),
"idcard": a.westDexService.Encrypt(idCard.String()), "idcard": a.westDexService.Encrypt(idCard.String()),
"auth_authorizeFileCode": a.westDexService.Encrypt("CON0120250730743901"),
}, },
} }
resp, callApiErr := a.westDexService.CallAPI("G36SC01", request) resp, callApiErr := a.westDexService.CallAPI("G36SC01", request)
if callApiErr != nil { if callApiErr != nil {
return nil, callApiErr return nil, callApiErr
} }
// 第一步:提取外层的 data 字段 parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
dataResult := gjson.GetBytes(resp, "data") if parseErr != nil {
if !dataResult.Exists() { return nil, parseErr
return nil, fmt.Errorf("外层 data 字段不存在")
}
// 解析 data 字符串为 JSON 对象
parsedData := gjson.Parse(dataResult.String())
xgbzxr := parsedData.Get("xgbzxr")
if !xgbzxr.Exists() {
return nil, fmt.Errorf("内层 xgbzxr 字段不存在")
} }
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parseResult, "G36SC0101.G36SC0102.content")
if contentResult.Exists() {
return &APIInternalResult{ return &APIInternalResult{
Data: []byte(xgbzxr.Raw), Data: []byte(contentResult.Raw),
}, nil }, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
} }
// G22SC01 自然人司法模型 // G22SC01 自然人司法模型
@@ -1349,30 +1346,28 @@ func (a *ApiRequestService) ProcessG22SC01Request(ctx context.Context, params []
"data": map[string]interface{}{ "data": map[string]interface{}{
"name": a.westDexService.Encrypt(name.String()), "name": a.westDexService.Encrypt(name.String()),
"idcard": a.westDexService.Encrypt(idCard.String()), "idcard": a.westDexService.Encrypt(idCard.String()),
"inquired_auth": a.westDexService.GetDateRange(), "auth_authorizeFileCode": a.westDexService.Encrypt("CON0120250730743901"),
"inquired_auth": fmt.Sprintf("authed:%s", a.westDexService.GetDateRange()),
}, },
} }
resp, callApiErr := a.westDexService.CallAPI("G22SC01", request) resp, callApiErr := a.westDexService.CallAPI("G22SC01", request)
if callApiErr != nil { if callApiErr != nil {
return nil, callApiErr return nil, callApiErr
} }
// 第一步:提取外层的 data 字段 // 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse
dataResult := gjson.GetBytes(resp, "data") parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
if !dataResult.Exists() { if parseErr != nil {
return nil, fmt.Errorf("外层 data 字段不存在") return nil, parseErr
}
parseResult, err := lzUtils.RecursiveParse(dataResult.Raw)
if err != nil {
return nil, fmt.Errorf("递归反序列化")
}
marshal, err := sonic.Marshal(parseResult)
if err != nil {
return nil, fmt.Errorf("序列化失败: %v", err)
} }
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parseResult, "G22SC0101.G22SC0102.content")
if contentResult.Exists() {
return &APIInternalResult{ return &APIInternalResult{
Data: marshal, Data: []byte(contentResult.Raw),
}, nil }, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
} }
// Q03SC01 企业涉诉信息 // Q03SC01 企业涉诉信息
@@ -1388,85 +1383,27 @@ func (a *ApiRequestService) ProcessQ03SC01Request(ctx context.Context, params []
"data": map[string]interface{}{ "data": map[string]interface{}{
"uscc": a.westDexService.Encrypt(entCode.String()), "uscc": a.westDexService.Encrypt(entCode.String()),
"org_name": a.westDexService.Encrypt(entName.String()), "org_name": a.westDexService.Encrypt(entName.String()),
"inquired_auth": a.westDexService.GetDateRange(), "auth_authorizeFileCode": a.westDexService.Encrypt("CON0120250730743901"),
"inquired_auth": fmt.Sprintf("authed:%s", a.westDexService.GetDateRange()),
}, },
} }
resp, callApiErr := a.westDexService.CallAPI("Q03SC01", request) resp, callApiErr := a.westDexService.CallAPI("Q03SC01", request)
if callApiErr != nil { if callApiErr != nil {
return nil, callApiErr return nil, callApiErr
} }
// 第一步:提取外层的 data 字段 parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
dataResult := gjson.GetBytes(resp, "data") if parseErr != nil {
if !dataResult.Exists() { return nil, parseErr
return nil, fmt.Errorf("外层 data 字段不存在")
} }
// 通过gjson获取指定路径的数据
// 保留原有的递归解析和序列化逻辑 contentResult := gjson.GetBytes(parseResult, "Q03SC0101.Q03SC0102.content")
parseResult, err := lzUtils.RecursiveParse(dataResult.Raw) if contentResult.Exists() {
if err != nil {
return nil, fmt.Errorf("递归反序列化")
}
logx.Infof("parseResult: %v", parseResult)
marshal, err := sonic.Marshal(parseResult)
if err != nil {
return nil, fmt.Errorf("序列化失败: %v", err)
}
// 第二步使用gjson预处理数据
dataMap := make(map[string]interface{})
// 处理entout数据
entoutArray := gjson.GetBytes(marshal, "entout").Array()
if len(entoutArray) > 0 {
// 检查是否存在count字段来判断是否有数据
countField := entoutArray[0].Get("data.count")
if countField.Exists() {
// 有count字段表示有数据
entoutData := entoutArray[0].Get("data")
if entoutData.Exists() {
dataMap["data"] = json.RawMessage(entoutData.Raw)
}
} else {
// 没有count字段使用空对象
dataMap["data"] = json.RawMessage("{}")
}
} else {
dataMap["data"] = json.RawMessage("{}")
}
// 处理sxbzxr数据(失信被执行人)
sxbzxrArray := dataResult.Get("sxbzxr").Array()
if len(sxbzxrArray) > 0 {
sxbzxrList := sxbzxrArray[0].Get("sxbzxr")
if sxbzxrList.Exists() && len(sxbzxrList.Array()) > 0 {
dataMap["sxbzxr"] = json.RawMessage(sxbzxrList.Raw)
} else {
dataMap["sxbzxr"] = json.RawMessage("[]")
}
} else {
dataMap["sxbzxr"] = json.RawMessage("[]")
}
// 处理xgbzxr数据(限高被执行人)
xgbzxrArray := dataResult.Get("xgbzxr").Array()
if len(xgbzxrArray) > 0 {
xgbzxrList := xgbzxrArray[0].Get("xgbzxr")
if xgbzxrList.Exists() && len(xgbzxrList.Array()) > 0 {
dataMap["xgbzxr"] = json.RawMessage(xgbzxrList.Raw)
} else {
dataMap["xgbzxr"] = json.RawMessage("[]")
}
} else {
dataMap["xgbzxr"] = json.RawMessage("[]")
}
result, err := sonic.Marshal(dataMap)
if err != nil {
return nil, fmt.Errorf("序列化预处理数据失败: %v", err)
}
return &APIInternalResult{ return &APIInternalResult{
Data: result, Data: []byte(contentResult.Raw),
}, nil }, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
} }
// 出境限制查询 // 出境限制查询

View File

@@ -1,6 +1,10 @@
package lzUtils package lzUtils
import "github.com/bytedance/sonic" import (
"encoding/json"
"github.com/bytedance/sonic"
)
func RecursiveParse(data interface{}) (interface{}, error) { func RecursiveParse(data interface{}) (interface{}, error) {
switch v := data.(type) { switch v := data.(type) {
@@ -33,3 +37,20 @@ func RecursiveParse(data interface{}) (interface{}, error) {
return v, nil return v, nil
} }
} }
// ParseJsonResponse 直接解析JSON响应数据
// jsonResp: JSON响应数据
// Returns: 解析后的数据字节数组
func ParseJsonResponse(jsonResp []byte) ([]byte, error) {
parseResult, err := RecursiveParse(string(jsonResp))
if err != nil {
return nil, err
}
resultResp, marshalErr := json.Marshal(parseResult)
if marshalErr != nil {
return nil, err
}
return resultResp, nil
}