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"
"github.com/Masterminds/squirrel"
"github.com/bytedance/sonic"
"github.com/tidwall/gjson"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -1277,27 +1276,26 @@ func (a *ApiRequestService) ProcessG37SC01Request(ctx context.Context, params []
"data": map[string]interface{}{
"name": a.westDexService.Encrypt(name.String()),
"idcard": a.westDexService.Encrypt(idCard.String()),
"auth_authorizeFileCode": a.westDexService.Encrypt("CON0120250730743901"),
},
}
resp, callApiErr := a.westDexService.CallAPI("G37SC01", request)
if callApiErr != nil {
return nil, callApiErr
}
// 第一步:提取外层的 data 字段
dataResult := gjson.GetBytes(resp, "data")
if !dataResult.Exists() {
return nil, fmt.Errorf("外层 data 字段不存在")
}
// 解析 data 字符串为 JSON 对象
parsedData := gjson.Parse(dataResult.String())
sxbzxr := parsedData.Get("sxbzxr")
if !sxbzxr.Exists() {
return nil, fmt.Errorf("内层 sxbzxr 字段不存在")
parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
if parseErr != nil {
return nil, parseErr
}
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parseResult, "G37SC0101.G37SC0102.content")
if contentResult.Exists() {
return &APIInternalResult{
Data: []byte(sxbzxr.Raw),
Data: []byte(contentResult.Raw),
}, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
}
// G36SC01 自然人限高信息
@@ -1313,27 +1311,26 @@ func (a *ApiRequestService) ProcessG36SC01Request(ctx context.Context, params []
"data": map[string]interface{}{
"name": a.westDexService.Encrypt(name.String()),
"idcard": a.westDexService.Encrypt(idCard.String()),
"auth_authorizeFileCode": a.westDexService.Encrypt("CON0120250730743901"),
},
}
resp, callApiErr := a.westDexService.CallAPI("G36SC01", request)
if callApiErr != nil {
return nil, callApiErr
}
// 第一步:提取外层的 data 字段
dataResult := gjson.GetBytes(resp, "data")
if !dataResult.Exists() {
return nil, fmt.Errorf("外层 data 字段不存在")
}
// 解析 data 字符串为 JSON 对象
parsedData := gjson.Parse(dataResult.String())
xgbzxr := parsedData.Get("xgbzxr")
if !xgbzxr.Exists() {
return nil, fmt.Errorf("内层 xgbzxr 字段不存在")
parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
if parseErr != nil {
return nil, parseErr
}
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parseResult, "G36SC0101.G36SC0102.content")
if contentResult.Exists() {
return &APIInternalResult{
Data: []byte(xgbzxr.Raw),
Data: []byte(contentResult.Raw),
}, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
}
// G22SC01 自然人司法模型
@@ -1349,30 +1346,28 @@ func (a *ApiRequestService) ProcessG22SC01Request(ctx context.Context, params []
"data": map[string]interface{}{
"name": a.westDexService.Encrypt(name.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)
if callApiErr != nil {
return nil, callApiErr
}
// 第一步:提取外层的 data 字段
dataResult := gjson.GetBytes(resp, "data")
if !dataResult.Exists() {
return nil, fmt.Errorf("外层 data 字段不存在")
}
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)
// 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse
parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
if parseErr != nil {
return nil, parseErr
}
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parseResult, "G22SC0101.G22SC0102.content")
if contentResult.Exists() {
return &APIInternalResult{
Data: marshal,
Data: []byte(contentResult.Raw),
}, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
}
// Q03SC01 企业涉诉信息
@@ -1388,85 +1383,27 @@ func (a *ApiRequestService) ProcessQ03SC01Request(ctx context.Context, params []
"data": map[string]interface{}{
"uscc": a.westDexService.Encrypt(entCode.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)
if callApiErr != nil {
return nil, callApiErr
}
// 第一步:提取外层的 data 字段
dataResult := gjson.GetBytes(resp, "data")
if !dataResult.Exists() {
return nil, fmt.Errorf("外层 data 字段不存在")
parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
if parseErr != nil {
return nil, parseErr
}
// 保留原有的递归解析和序列化逻辑
parseResult, err := lzUtils.RecursiveParse(dataResult.Raw)
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)
}
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parseResult, "Q03SC0101.Q03SC0102.content")
if contentResult.Exists() {
return &APIInternalResult{
Data: result,
Data: []byte(contentResult.Raw),
}, nil
} else {
return nil, fmt.Errorf("找不到数据")
}
}
// 出境限制查询

View File

@@ -1,6 +1,10 @@
package lzUtils
import "github.com/bytedance/sonic"
import (
"encoding/json"
"github.com/bytedance/sonic"
)
func RecursiveParse(data interface{}) (interface{}, error) {
switch v := data.(type) {
@@ -33,3 +37,20 @@ func RecursiveParse(data interface{}) (interface{}, error) {
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
}