f
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user