From 594c238a99882874e7a6e84e4c8a323e24887984 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Fri, 25 Apr 2025 02:44:39 +0800 Subject: [PATCH] new fieature --- .../api/internal/service/apirequestService.go | 125 +++++++++++++++++- 1 file changed, 118 insertions(+), 7 deletions(-) diff --git a/app/user/cmd/api/internal/service/apirequestService.go b/app/user/cmd/api/internal/service/apirequestService.go index 9fb7c22..f5403c8 100644 --- a/app/user/cmd/api/internal/service/apirequestService.go +++ b/app/user/cmd/api/internal/service/apirequestService.go @@ -1867,11 +1867,42 @@ func (a *ApiRequestService) ProcessG09XM02Request(params []byte) ([]byte, error) }, } resp, err := a.westDexService.CallAPI("G09XM02", request) - if err != nil { + if err != nil && resp == nil { return nil, fmt.Errorf("婚姻状态查询失败: %v", err) } - // gjson.GetBytes(resp, "maritalStatus") - return resp, nil + result := gjson.GetBytes(resp, "data.data") + if !result.Exists() { + return nil, fmt.Errorf("婚姻状态查询失败") + } + + // 获取原始结果 + rawResult := result.String() + + // 根据结果转换状态码 + var statusCode string + switch { + case strings.HasPrefix(rawResult, "INR"): + statusCode = "0" // 匹配不成功 + case strings.HasPrefix(rawResult, "IA"): + statusCode = "1" // 结婚 + case strings.HasPrefix(rawResult, "IB"): + statusCode = "2" // 离婚 + default: + return nil, fmt.Errorf("婚姻状态查询失败,未知状态码: %s", statusCode) + } + + // 构建新的返回结果 + response := map[string]string{ + "status": statusCode, + } + + // 序列化为JSON + jsonResponse, err := json.Marshal(response) + if err != nil { + return nil, fmt.Errorf("序列化结果失败: %v", err) + } + + return jsonResponse, nil } func (a *ApiRequestService) ProcessG10XM02Request(params []byte) ([]byte, error) { @@ -1898,11 +1929,43 @@ func (a *ApiRequestService) ProcessG10XM02Request(params []byte) ([]byte, error) // 调用 API resp, callApiErr := a.westDexService.CallAPI("G10XM02", request) - if callApiErr != nil { + if callApiErr != nil && resp == nil { return nil, callApiErr } - return resp, nil + result := gjson.GetBytes(resp, "data.data") + if !result.Exists() { + return nil, fmt.Errorf("婚姻状态查询失败") + } + + // 获取原始结果 + rawResult := result.String() + + // 根据结果转换状态码 + var statusCode string + switch { + case strings.HasPrefix(rawResult, "INR"): + statusCode = "0" // 匹配不成功 + case strings.HasPrefix(rawResult, "IA"): + statusCode = "1" // 结婚 + case strings.HasPrefix(rawResult, "IB"): + statusCode = "2" // 离婚 + default: + return nil, fmt.Errorf("婚姻状态查询失败,未知状态码: %s", statusCode) + } + + // 构建新的返回结果 + response := map[string]string{ + "status": statusCode, + } + + // 序列化为JSON + jsonResponse, err := json.Marshal(response) + if err != nil { + return nil, fmt.Errorf("序列化结果失败: %v", err) + } + + return jsonResponse, nil } func (a *ApiRequestService) ProcessG11BJ06Request(params []byte) ([]byte, error) { idCard := gjson.GetBytes(params, "id_card") @@ -1917,10 +1980,58 @@ func (a *ApiRequestService) ProcessG11BJ06Request(params []byte) ([]byte, error) }, } resp, err := a.westDexService.CallAPI("G11BJ06", request) - if err != nil { + if err != nil && resp == nil { return nil, fmt.Errorf("教育经历核验查询失败: %v", err) } - return resp, nil + + // 解析响应 + codeResult := gjson.GetBytes(resp, "data.education_background.code") + if !codeResult.Exists() { + return nil, fmt.Errorf("教育经历核验查询失败: 返回数据缺少code字段") + } + + code := codeResult.String() + + var result map[string]interface{} + + switch code { + case "9100": + // 查询成功有结果 + eduResultArray := gjson.GetBytes(resp, "data.education_background.data").Array() + var processedEduData []interface{} + + // 提取每个元素中Raw字段的实际内容 + for _, item := range eduResultArray { + var eduInfo interface{} + if err := json.Unmarshal([]byte(item.Raw), &eduInfo); err != nil { + return nil, fmt.Errorf("解析教育信息失败: %v", err) + } + processedEduData = append(processedEduData, eduInfo) + } + + result = map[string]interface{}{ + "data": processedEduData, + "status": 1, + } + case "9000": + // 查询成功无结果 + result = map[string]interface{}{ + "data": []interface{}{}, + "status": 0, + } + default: + // 其他情况视为错误 + errMsg := gjson.GetBytes(resp, "data.education_background.msg").String() + return nil, fmt.Errorf("教育经历核验查询失败: %s (code: %s)", errMsg, code) + } + + // 将结果转为JSON字节 + jsonResult, err := json.Marshal(result) + if err != nil { + return nil, fmt.Errorf("处理教育经历查询结果失败: %v", err) + } + + return jsonResult, nil } func (a *ApiRequestService) ProcessG29BJ05Request(params []byte) ([]byte, error) { idCard := gjson.GetBytes(params, "id_card")