81 lines
2.0 KiB
Go
81 lines
2.0 KiB
Go
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
|
|
}
|