This commit is contained in:
2026-07-08 21:56:39 +08:00
parent 9f985ea8c7
commit 9c933cd032
5 changed files with 199 additions and 17 deletions

View File

@@ -0,0 +1,80 @@
package dwbg
import (
"encoding/json"
"strings"
"tyapi-server/internal/domains/api/services/processors/flxg"
)
// unwrapSinanSubAPIMap 解包子接口响应中常见的 data / result 嵌套层。
func unwrapSinanSubAPIMap(m map[string]interface{}) map[string]interface{} {
if m == nil {
return nil
}
if data := asMap(m["data"]); data != nil {
return unwrapSinanSubAPIMap(data)
}
if result := asMap(m["result"]); result != nil && shouldUnwrapResult(m) {
return unwrapSinanSubAPIMap(result)
}
return m
}
func shouldUnwrapResult(m map[string]interface{}) bool {
for _, key := range []string{"level", "riskCode", "judicial_data", "lawsuitStat", "breachCaseList", "consumptionRestrictionList"} {
if _, ok := m[key]; ok {
return false
}
}
return true
}
func subAPIPayload(val interface{}) map[string]interface{} {
m := asMap(val)
if m == nil {
if s, ok := val.(string); ok {
s = strings.TrimSpace(s)
if s != "" && (strings.HasPrefix(s, "{") || strings.HasPrefix(s, "[")) {
var parsed map[string]interface{}
if json.Unmarshal([]byte(s), &parsed) == nil {
m = parsed
}
}
}
}
if m == nil {
return nil
}
return unwrapSinanSubAPIMap(m)
}
func flxg7e8fMap(apiData map[string]interface{}) map[string]interface{} {
payload := subAPIPayload(getMapValue(apiData, "FLXG7E8F"))
if payload == nil {
return nil
}
if jd := asMap(payload["judicial_data"]); jd != nil {
return map[string]interface{}{"judicial_data": jd}
}
if asMap(payload["lawsuitStat"]) != nil || payload["breachCaseList"] != nil || payload["consumptionRestrictionList"] != nil {
return map[string]interface{}{"judicial_data": payload}
}
return payload
}
func flxgdea9Map(apiData map[string]interface{}) map[string]interface{} {
return subAPIPayload(getMapValue(apiData, "FLXGDEA9"))
}
func flxgdea9Level(apiData map[string]interface{}) string {
payload := flxgdea9Map(apiData)
if payload == nil {
return ""
}
level := strings.TrimSpace(flxg.LevelFromPayload(payload))
if level == "0" {
return ""
}
return level
}