f
This commit is contained in:
@@ -512,15 +512,19 @@ func processEntoutData(resultBytes []byte) map[string]interface{} {
|
|||||||
|
|
||||||
// 如果 entoutData 包含 "data" 字段,提取 data 字段的内容
|
// 如果 entoutData 包含 "data" 字段,提取 data 字段的内容
|
||||||
// 因为有些响应格式是 { "data": { "civil": {...} } },需要提取内部的 data
|
// 因为有些响应格式是 { "data": { "civil": {...} } },需要提取内部的 data
|
||||||
|
var actualData map[string]interface{}
|
||||||
if dataField, ok := entoutData["data"].(map[string]interface{}); ok {
|
if dataField, ok := entoutData["data"].(map[string]interface{}); ok {
|
||||||
entoutData = dataField
|
actualData = dataField
|
||||||
|
} else {
|
||||||
|
// 如果没有 data 字段,直接使用 entoutData(可能已经是 data 的内容)
|
||||||
|
actualData = entoutData
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理数据,将 "-" 转换为合适的默认值
|
// 清理数据,将 "-" 转换为合适的默认值
|
||||||
entoutData = cleanEntoutData(entoutData)
|
cleanedData := cleanEntoutData(actualData)
|
||||||
|
|
||||||
// 检查是否有有效数据
|
// 检查是否有有效数据
|
||||||
hasData := hasValidEntoutData(entoutData)
|
hasData := hasValidEntoutData(cleanedData)
|
||||||
if !hasData {
|
if !hasData {
|
||||||
return map[string]interface{}{
|
return map[string]interface{}{
|
||||||
"msg": "没有找到",
|
"msg": "没有找到",
|
||||||
@@ -530,7 +534,7 @@ func processEntoutData(resultBytes []byte) map[string]interface{} {
|
|||||||
// 构建返回格式
|
// 构建返回格式
|
||||||
entoutWrapped := map[string]interface{}{
|
entoutWrapped := map[string]interface{}{
|
||||||
"msg": "成功",
|
"msg": "成功",
|
||||||
"data": entoutData,
|
"data": cleanedData,
|
||||||
}
|
}
|
||||||
|
|
||||||
return entoutWrapped
|
return entoutWrapped
|
||||||
@@ -592,20 +596,28 @@ func cleanEntoutData(data map[string]interface{}) map[string]interface{} {
|
|||||||
"crc": cleanNumericValue,
|
"crc": cleanNumericValue,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理所有字段
|
// 处理所有字段,确保所有字段都被正确映射
|
||||||
for key, value := range data {
|
for key, value := range data {
|
||||||
|
if value == nil {
|
||||||
|
// 跳过 nil 值,但保留空对象和空数组
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if handler, ok := specialFields[key]; ok {
|
if handler, ok := specialFields[key]; ok {
|
||||||
cleaned[key] = handler(value)
|
cleaned[key] = handler(value)
|
||||||
} else {
|
} else {
|
||||||
cleaned[key] = cleanValue(value)
|
// 对于其他字段(如 cases_tree, civil, implement 等),使用 cleanValue 处理
|
||||||
|
cleanedValue := cleanValue(value)
|
||||||
|
// 只有当清理后的值不为空时才添加
|
||||||
|
if !isEmptyValue(cleanedValue) {
|
||||||
|
cleaned[key] = cleanedValue
|
||||||
|
} else if key == "cases_tree" {
|
||||||
|
// cases_tree 即使是空对象也保留,因为它是重要的结构字段
|
||||||
|
cleaned[key] = cleanedValue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保留 count 在根级别(兼容旧逻辑,如果存在)
|
|
||||||
if countVal, ok := data["count"]; ok {
|
|
||||||
cleaned["count"] = cleanCountData(countVal)
|
|
||||||
}
|
|
||||||
|
|
||||||
return cleaned
|
return cleaned
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -764,6 +776,17 @@ func cleanMapData(data map[string]interface{}) map[string]interface{} {
|
|||||||
cleaned := make(map[string]interface{})
|
cleaned := make(map[string]interface{})
|
||||||
hasValidData := false
|
hasValidData := false
|
||||||
|
|
||||||
|
// 定义需要保留的结构字段(即使为空也保留)
|
||||||
|
structuralFields := map[string]bool{
|
||||||
|
"cases_tree": true,
|
||||||
|
"civil": true,
|
||||||
|
"criminal": true,
|
||||||
|
"administrative": true,
|
||||||
|
"bankrupt": true,
|
||||||
|
"implement": true,
|
||||||
|
"preservation": true,
|
||||||
|
}
|
||||||
|
|
||||||
for key, value := range data {
|
for key, value := range data {
|
||||||
var cleanedValue interface{}
|
var cleanedValue interface{}
|
||||||
// 根据字段命名规律判断是否为数值字段
|
// 根据字段命名规律判断是否为数值字段
|
||||||
@@ -777,10 +800,13 @@ func cleanMapData(data map[string]interface{}) map[string]interface{} {
|
|||||||
// 检查是否有有效数据
|
// 检查是否有有效数据
|
||||||
if !isEmptyValue(cleanedValue) {
|
if !isEmptyValue(cleanedValue) {
|
||||||
hasValidData = true
|
hasValidData = true
|
||||||
|
} else if structuralFields[key] {
|
||||||
|
// 结构字段即使为空也保留,并标记为有数据
|
||||||
|
hasValidData = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果所有字段都是空值,返回空 map
|
// 如果所有字段都是空值且没有结构字段,返回空 map
|
||||||
if !hasValidData {
|
if !hasValidData {
|
||||||
return make(map[string]interface{})
|
return make(map[string]interface{})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user