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"
) )
@@ -1275,29 +1274,28 @@ func (a *ApiRequestService) ProcessG37SC01Request(ctx context.Context, params []
request := map[string]interface{}{ request := map[string]interface{}{
"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 字段不存在")
} }
// 通过gjson获取指定路径的数据
// 解析 data 字符串为 JSON 对象 contentResult := gjson.GetBytes(parseResult, "G37SC0101.G37SC0102.content")
parsedData := gjson.Parse(dataResult.String()) if contentResult.Exists() {
sxbzxr := parsedData.Get("sxbzxr") return &APIInternalResult{
if !sxbzxr.Exists() { Data: []byte(contentResult.Raw),
return nil, fmt.Errorf("内层 sxbzxr 字段不存在") }, nil
} else {
return nil, fmt.Errorf("找不到数据")
} }
return &APIInternalResult{
Data: []byte(sxbzxr.Raw),
}, nil
} }
// G36SC01 自然人限高信息 // G36SC01 自然人限高信息
@@ -1311,29 +1309,28 @@ func (a *ApiRequestService) ProcessG36SC01Request(ctx context.Context, params []
request := map[string]interface{}{ request := map[string]interface{}{
"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 字段不存在")
} }
// 通过gjson获取指定路径的数据
// 解析 data 字符串为 JSON 对象 contentResult := gjson.GetBytes(parseResult, "G36SC0101.G36SC0102.content")
parsedData := gjson.Parse(dataResult.String()) if contentResult.Exists() {
xgbzxr := parsedData.Get("xgbzxr") return &APIInternalResult{
if !xgbzxr.Exists() { Data: []byte(contentResult.Raw),
return nil, fmt.Errorf("内层 xgbzxr 字段不存在") }, nil
} else {
return nil, fmt.Errorf("找不到数据")
} }
return &APIInternalResult{
Data: []byte(xgbzxr.Raw),
}, nil
} }
// G22SC01 自然人司法模型 // G22SC01 自然人司法模型
@@ -1347,32 +1344,30 @@ func (a *ApiRequestService) ProcessG22SC01Request(ctx context.Context, params []
request := map[string]interface{}{ request := map[string]interface{}{
"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
} }
// 通过gjson获取指定路径的数据
parseResult, err := lzUtils.RecursiveParse(dataResult.Raw) contentResult := gjson.GetBytes(parseResult, "G22SC0101.G22SC0102.content")
if err != nil { if contentResult.Exists() {
return nil, fmt.Errorf("递归反序列化") return &APIInternalResult{
Data: []byte(contentResult.Raw),
}, nil
} else {
return nil, fmt.Errorf("找不到数据")
} }
marshal, err := sonic.Marshal(parseResult)
if err != nil {
return nil, fmt.Errorf("序列化失败: %v", err)
}
return &APIInternalResult{
Data: marshal,
}, nil
} }
// Q03SC01 企业涉诉信息 // Q03SC01 企业涉诉信息
@@ -1386,87 +1381,29 @@ func (a *ApiRequestService) ProcessQ03SC01Request(ctx context.Context, params []
request := map[string]interface{}{ request := map[string]interface{}{
"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 &APIInternalResult{
return nil, fmt.Errorf("递归反序列化") Data: []byte(contentResult.Raw),
} }, nil
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 { } else {
dataMap["data"] = json.RawMessage("{}") return nil, fmt.Errorf("找不到数据")
} }
// 处理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{
Data: result,
}, nil
} }
// 出境限制查询 // 出境限制查询

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
}