Compare commits
2 Commits
cd1db5276a
...
8675961207
| Author | SHA1 | Date | |
|---|---|---|---|
| 8675961207 | |||
| 4bd6f51728 |
@@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
"tyapi-server/internal/domains/api/dto"
|
"tyapi-server/internal/domains/api/dto"
|
||||||
"tyapi-server/internal/domains/api/services/processors"
|
"tyapi-server/internal/domains/api/services/processors"
|
||||||
"tyapi-server/internal/infrastructure/external/xingwei"
|
"tyapi-server/internal/infrastructure/external/zhicha"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ProcessFLXG7E8FRequest FLXG7E8F API处理方法 - 个人司法数据查询
|
// ProcessFLXG7E8FRequest FLXG7E8F API处理方法 - 个人司法数据查询
|
||||||
@@ -23,27 +23,222 @@ func ProcessFLXG7E8FRequest(ctx context.Context, params []byte, deps *processors
|
|||||||
if paramsDto.IDCard == "350681198611130611" || paramsDto.IDCard == "622301200006250550" || paramsDto.IDCard == "320682198910134998" || paramsDto.IDCard == "640102198708020925" || paramsDto.IDCard == "420624197310234034" || paramsDto.IDCard == "350104198501184416" || paramsDto.IDCard == "410521198606018056" || paramsDto.IDCard == "410482198504029333" {
|
if paramsDto.IDCard == "350681198611130611" || paramsDto.IDCard == "622301200006250550" || paramsDto.IDCard == "320682198910134998" || paramsDto.IDCard == "640102198708020925" || paramsDto.IDCard == "420624197310234034" || paramsDto.IDCard == "350104198501184416" || paramsDto.IDCard == "410521198606018056" || paramsDto.IDCard == "410482198504029333" {
|
||||||
return nil, errors.Join(processors.ErrNotFound, errors.New("查询为空"))
|
return nil, errors.Join(processors.ErrNotFound, errors.New("查询为空"))
|
||||||
}
|
}
|
||||||
// 构建请求数据,将项目规范的字段名转换为 XingweiService 需要的字段名
|
|
||||||
reqData := map[string]interface{}{
|
encryptedName, err := deps.ZhichaService.Encrypt(paramsDto.Name)
|
||||||
"name": paramsDto.Name,
|
if err != nil {
|
||||||
"idCardNum": paramsDto.IDCard,
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
"phoneNumber": paramsDto.MobileNo,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调用行为数据API,使用指定的project_id
|
encryptedIDCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard)
|
||||||
projectID := "CDJ-1101695378264092672"
|
|
||||||
respBytes, err := deps.XingweiService.CallAPI(ctx, projectID, reqData)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, xingwei.ErrNotFound) {
|
|
||||||
return nil, errors.Join(processors.ErrNotFound, err)
|
|
||||||
} else if errors.Is(err, xingwei.ErrDatasource) {
|
|
||||||
return nil, errors.Join(processors.ErrDatasource, err)
|
|
||||||
} else if errors.Is(err, xingwei.ErrSystem) {
|
|
||||||
return nil, errors.Join(processors.ErrSystem, err)
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
reqData := map[string]interface{}{
|
||||||
|
"name": encryptedName,
|
||||||
|
"idCard": encryptedIDCard,
|
||||||
|
"authorized": "1",
|
||||||
|
}
|
||||||
|
|
||||||
|
respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI006", reqData)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, zhicha.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
} else {
|
} else {
|
||||||
return nil, errors.Join(processors.ErrSystem, err)
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
respMap, ok := respData.(map[string]interface{})
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, errors.New("响应格式错误"))
|
||||||
|
}
|
||||||
|
|
||||||
|
result := map[string]interface{}{
|
||||||
|
"judicial_data": mapFLXG5A3BToJudicialData(respMap),
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(result)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
return respBytes, nil
|
return respBytes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func mapFLXG5A3BToJudicialData(resp map[string]interface{}) map[string]interface{} {
|
||||||
|
judicialData := map[string]interface{}{
|
||||||
|
"consumptionRestrictionList": mapXgbzxrToConsumptionRestriction(asSlice(resp["xgbzxr"])),
|
||||||
|
"breachCaseList": mapSxbzxrToBreachCaseList(asSlice(resp["sxbzxr"])),
|
||||||
|
"lawsuitStat": normalizeLawsuitStat(asMap(resp["entout"])),
|
||||||
|
}
|
||||||
|
|
||||||
|
return judicialData
|
||||||
|
}
|
||||||
|
|
||||||
|
func mapXgbzxrToConsumptionRestriction(items []interface{}) []map[string]interface{} {
|
||||||
|
result := make([]map[string]interface{}, 0, len(items))
|
||||||
|
for _, item := range items {
|
||||||
|
m := asMap(item)
|
||||||
|
if len(m) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
result = append(result, map[string]interface{}{
|
||||||
|
"caseNumber": m["ah"],
|
||||||
|
"id": m["id"],
|
||||||
|
"issueDate": m["fbrq"],
|
||||||
|
"executiveCourt": m["zxfy"],
|
||||||
|
"fileDate": m["larq"],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func mapSxbzxrToBreachCaseList(items []interface{}) []map[string]interface{} {
|
||||||
|
result := make([]map[string]interface{}, 0, len(items))
|
||||||
|
for _, item := range items {
|
||||||
|
m := asMap(item)
|
||||||
|
if len(m) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
result = append(result, map[string]interface{}{
|
||||||
|
"caseNumber": m["ah"],
|
||||||
|
"issueDate": m["fbrq"],
|
||||||
|
"id": m["id"],
|
||||||
|
"fileDate": m["larq"],
|
||||||
|
"fulfillStatus": m["lxqk"],
|
||||||
|
"estimatedJudgementAmount": m["pjje_gj"],
|
||||||
|
"province": m["sf"],
|
||||||
|
"sex": m["xb"],
|
||||||
|
"concreteDetails": m["xwqx"],
|
||||||
|
"obligation": m["yw"],
|
||||||
|
"executiveCourt": m["zxfy"],
|
||||||
|
"enforcementBasisOrganization": m["zxyjdw"],
|
||||||
|
"enforcementBasisNumber": m["zxyjwh"],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func normalizeLawsuitStat(entout map[string]interface{}) map[string]interface{} {
|
||||||
|
lawsuitStat := defaultLawsuitStat()
|
||||||
|
for k, v := range entout {
|
||||||
|
switch k {
|
||||||
|
case "cases_tree":
|
||||||
|
lawsuitStat[k] = normalizeCasesTree(asMap(v))
|
||||||
|
case "count":
|
||||||
|
lawsuitStat[k] = normalizeCount(asMap(v))
|
||||||
|
case "preservation", "administrative", "civil", "implement", "criminal", "bankrupt":
|
||||||
|
lawsuitStat[k] = normalizeCaseSection(asMap(v))
|
||||||
|
default:
|
||||||
|
lawsuitStat[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lawsuitStat
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultLawsuitStat() map[string]interface{} {
|
||||||
|
return map[string]interface{}{
|
||||||
|
"crc": 0,
|
||||||
|
"cases_tree": normalizeCasesTree(map[string]interface{}{}),
|
||||||
|
"count": normalizeCount(map[string]interface{}{}),
|
||||||
|
"preservation": normalizeCaseSection(map[string]interface{}{}),
|
||||||
|
"administrative": normalizeCaseSection(map[string]interface{}{}),
|
||||||
|
"civil": normalizeCaseSection(map[string]interface{}{}),
|
||||||
|
"implement": normalizeCaseSection(map[string]interface{}{}),
|
||||||
|
"criminal": normalizeCaseSection(map[string]interface{}{}),
|
||||||
|
"bankrupt": normalizeCaseSection(map[string]interface{}{}),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func normalizeCasesTree(src map[string]interface{}) map[string]interface{} {
|
||||||
|
dst := map[string]interface{}{
|
||||||
|
"administrative": []interface{}{},
|
||||||
|
"criminal": []interface{}{},
|
||||||
|
"civil": []interface{}{},
|
||||||
|
}
|
||||||
|
for _, key := range []string{"administrative", "criminal", "civil"} {
|
||||||
|
if v, ok := src[key]; ok {
|
||||||
|
dst[key] = asSlice(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dst
|
||||||
|
}
|
||||||
|
|
||||||
|
func normalizeCaseSection(src map[string]interface{}) map[string]interface{} {
|
||||||
|
dst := map[string]interface{}{
|
||||||
|
"cases": []interface{}{},
|
||||||
|
"count": normalizeCount(map[string]interface{}{}),
|
||||||
|
}
|
||||||
|
if v, ok := src["cases"]; ok {
|
||||||
|
dst["cases"] = asSlice(v)
|
||||||
|
}
|
||||||
|
if v, ok := src["count"]; ok {
|
||||||
|
dst["count"] = normalizeCount(asMap(v))
|
||||||
|
}
|
||||||
|
return dst
|
||||||
|
}
|
||||||
|
|
||||||
|
func normalizeCount(src map[string]interface{}) map[string]interface{} {
|
||||||
|
dst := map[string]interface{}{
|
||||||
|
"money_yuangao": 0,
|
||||||
|
"area_stat": "",
|
||||||
|
"count_jie_beigao": 0,
|
||||||
|
"count_total": 0,
|
||||||
|
"money_wei_yuangao": 0,
|
||||||
|
"count_wei_total": 0,
|
||||||
|
"money_wei_beigao": 0,
|
||||||
|
"count_other": 0,
|
||||||
|
"money_beigao": 0,
|
||||||
|
"count_yuangao": 0,
|
||||||
|
"money_jie_other": 0,
|
||||||
|
"money_total": 0,
|
||||||
|
"money_wei_total": 0,
|
||||||
|
"count_wei_yuangao": 0,
|
||||||
|
"ay_stat": "",
|
||||||
|
"count_beigao": 0,
|
||||||
|
"money_jie_yuangao": 0,
|
||||||
|
"jafs_stat": "",
|
||||||
|
"money_jie_beigao": 0,
|
||||||
|
"count_wei_beigao": 0,
|
||||||
|
"count_jie_other": 0,
|
||||||
|
"count_jie_total": 0,
|
||||||
|
"count_wei_other": 0,
|
||||||
|
"money_other": 0,
|
||||||
|
"count_jie_yuangao": 0,
|
||||||
|
"money_jie_total": 0,
|
||||||
|
"money_wei_other": 0,
|
||||||
|
"money_wei_percent": 0,
|
||||||
|
"larq_stat": "",
|
||||||
|
}
|
||||||
|
for k, v := range src {
|
||||||
|
dst[k] = v
|
||||||
|
}
|
||||||
|
return dst
|
||||||
|
}
|
||||||
|
|
||||||
|
func asMap(v interface{}) map[string]interface{} {
|
||||||
|
if v == nil {
|
||||||
|
return map[string]interface{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if m, ok := v.(map[string]interface{}); ok {
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
return map[string]interface{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func asSlice(v interface{}) []interface{} {
|
||||||
|
if v == nil {
|
||||||
|
return []interface{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if s, ok := v.([]interface{}); ok {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
return []interface{}{}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user