fix
This commit is contained in:
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 出境限制查询
|
// 出境限制查询
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user