fix
This commit is contained in:
@@ -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"
|
||||
)
|
||||
@@ -1275,29 +1274,28 @@ func (a *ApiRequestService) ProcessG37SC01Request(ctx context.Context, params []
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"name": a.westDexService.Encrypt(name.String()),
|
||||
"idcard": a.westDexService.Encrypt(idCard.String()),
|
||||
"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 字段不存在")
|
||||
parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
|
||||
if parseErr != nil {
|
||||
return nil, parseErr
|
||||
}
|
||||
|
||||
// 解析 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{
|
||||
Data: []byte(contentResult.Raw),
|
||||
}, nil
|
||||
} else {
|
||||
return nil, fmt.Errorf("找不到数据")
|
||||
}
|
||||
return &APIInternalResult{
|
||||
Data: []byte(sxbzxr.Raw),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// G36SC01 自然人限高信息
|
||||
@@ -1311,29 +1309,28 @@ func (a *ApiRequestService) ProcessG36SC01Request(ctx context.Context, params []
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"name": a.westDexService.Encrypt(name.String()),
|
||||
"idcard": a.westDexService.Encrypt(idCard.String()),
|
||||
"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 字段不存在")
|
||||
parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
|
||||
if parseErr != nil {
|
||||
return nil, parseErr
|
||||
}
|
||||
|
||||
// 解析 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{
|
||||
Data: []byte(contentResult.Raw),
|
||||
}, nil
|
||||
} else {
|
||||
return nil, fmt.Errorf("找不到数据")
|
||||
}
|
||||
return &APIInternalResult{
|
||||
Data: []byte(xgbzxr.Raw),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// G22SC01 自然人司法模型
|
||||
@@ -1347,32 +1344,30 @@ func (a *ApiRequestService) ProcessG22SC01Request(ctx context.Context, params []
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"name": a.westDexService.Encrypt(name.String()),
|
||||
"idcard": a.westDexService.Encrypt(idCard.String()),
|
||||
"inquired_auth": a.westDexService.GetDateRange(),
|
||||
"name": a.westDexService.Encrypt(name.String()),
|
||||
"idcard": a.westDexService.Encrypt(idCard.String()),
|
||||
"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 字段不存在")
|
||||
// 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse
|
||||
parseResult, parseErr := lzUtils.ParseJsonResponse(resp)
|
||||
if parseErr != nil {
|
||||
return nil, parseErr
|
||||
}
|
||||
|
||||
parseResult, err := lzUtils.RecursiveParse(dataResult.Raw)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("递归反序列化")
|
||||
// 通过gjson获取指定路径的数据
|
||||
contentResult := gjson.GetBytes(parseResult, "G22SC0101.G22SC0102.content")
|
||||
if contentResult.Exists() {
|
||||
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 企业涉诉信息
|
||||
@@ -1386,87 +1381,29 @@ func (a *ApiRequestService) ProcessQ03SC01Request(ctx context.Context, params []
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"uscc": a.westDexService.Encrypt(entCode.String()),
|
||||
"org_name": a.westDexService.Encrypt(entName.String()),
|
||||
"inquired_auth": a.westDexService.GetDateRange(),
|
||||
"uscc": a.westDexService.Encrypt(entCode.String()),
|
||||
"org_name": a.westDexService.Encrypt(entName.String()),
|
||||
"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("{}")
|
||||
}
|
||||
// 通过gjson获取指定路径的数据
|
||||
contentResult := gjson.GetBytes(parseResult, "Q03SC0101.Q03SC0102.content")
|
||||
if contentResult.Exists() {
|
||||
return &APIInternalResult{
|
||||
Data: []byte(contentResult.Raw),
|
||||
}, nil
|
||||
} 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
|
||||
}
|
||||
|
||||
// 出境限制查询
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user