diff --git a/internal/domains/api/services/processors/ivyz/ivyz5e3f_processor.go b/internal/domains/api/services/processors/ivyz/ivyz5e3f_processor.go index 913c9c5..8453644 100644 --- a/internal/domains/api/services/processors/ivyz/ivyz5e3f_processor.go +++ b/internal/domains/api/services/processors/ivyz/ivyz5e3f_processor.go @@ -7,7 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/jiguang" + "tyapi-server/internal/infrastructure/external/zhicha" ) // ProcessIVYZ5E3FRequest IVYZ5E3F API处理方法 - 婚姻评估查询 @@ -21,57 +21,36 @@ func ProcessIVYZ5E3FRequest(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - // 构建极光请求参数(使用原始身份证和姓名) - reqData := map[string]interface{}{ - // 与 IVYZ9H2M 一致,极光使用 id_no 作为身份证字段 - "id_card": paramsDto.IDCard, - "name": paramsDto.Name, + encryptedName, err := deps.ZhichaService.Encrypt(paramsDto.Name) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) } - // 调用极光婚姻查询接口 - // apiCode: marriage-single(用于请求头) - // apiPath: marriage/single(用于URL路径) - respBytes, err := deps.JiguangService.CallAPI(ctx, "marriage-single", "marriage/single", reqData) + encryptedIDCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) if err != nil { - // 根据错误类型返回相应的错误 - if errors.Is(err, jiguang.ErrNotFound) { - return nil, errors.Join(processors.ErrNotFound, err) - } else if errors.Is(err, jiguang.ErrDatasource) { + return nil, errors.Join(processors.ErrSystem, err) + } + + reqData := map[string]interface{}{ + "name": encryptedName, + "idCard": encryptedIDCard, + "authorized": paramsDto.Authorized, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI029", reqData) + if err != nil { + if errors.Is(err, zhicha.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) } } - // 解析极光返回的数据 - // 现在的婚姻状态编码为(state): - // 0-结婚 1-离婚 2-未匹配(均为字符串) - var jgResp struct { - State string `json:"state"` - } - if err := json.Unmarshal(respBytes, &jgResp); err != nil { + // 将响应数据转换为JSON字节 + respBytes, err := json.Marshal(respData) + if err != nil { return nil, errors.Join(processors.ErrSystem, err) } - // 将极光的编码转换为旧的 state 定义: - // 1:已婚,2:未婚/未在民政局登记,3:离异 - var state string - switch jgResp.State { - case "0": // 结婚 - state = "1" - case "1": // 离婚 - state = "3" - case "2": // 未匹配 - state = "2" - default: - // 未知状态按未匹配处理 - state = "2" - } - - // 返回与之前一致的结构:{"state": "1/2/3"} - result := map[string]string{ - "state": state, - } - - return json.Marshal(result) + return respBytes, nil } diff --git a/internal/domains/api/services/processors/ivyz/ivyz81nc_processor.go b/internal/domains/api/services/processors/ivyz/ivyz81nc_processor.go index 3419d77..c9f6da9 100644 --- a/internal/domains/api/services/processors/ivyz/ivyz81nc_processor.go +++ b/internal/domains/api/services/processors/ivyz/ivyz81nc_processor.go @@ -7,7 +7,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/jiguang" + "tyapi-server/internal/infrastructure/external/zhicha" ) // ProcessIVYZ81NCRequest IVYZ81NC API处理方法 @@ -21,55 +21,49 @@ func ProcessIVYZ81NCRequest(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - // 构建极光请求参数(使用原始身份证和姓名) - reqData := map[string]interface{}{ - // 与 IVYZ9H2M 一致,极光使用 id_no 作为身份证字段 - "id_card": paramsDto.IDCard, - "name": paramsDto.Name, + encryptedName, err := deps.ZhichaService.Encrypt(paramsDto.Name) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) } - // 调用极光婚姻查询接口 - // apiCode: marriage-single(用于请求头) - // apiPath: marriage/single(用于URL路径) - respBytes, err := deps.JiguangService.CallAPI(ctx, "marriage-single", "marriage/single", reqData) + encryptedIDCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) if err != nil { - // 根据错误类型返回相应的错误 - if errors.Is(err, jiguang.ErrNotFound) { - return nil, errors.Join(processors.ErrNotFound, err) - } else if errors.Is(err, jiguang.ErrDatasource) { + return nil, errors.Join(processors.ErrSystem, err) + } + + reqData := map[string]interface{}{ + "name": encryptedName, + "idCard": encryptedIDCard, + "authorized": "1", // 默认值 + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI029", reqData) + if err != nil { + if errors.Is(err, zhicha.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) } } - // 解析极光返回的数据,期望格式为 {"state": "0"|"1"|"2"} - var jgResp struct { + // 解析响应数据,期望格式为 {"state": "1"} + var stateResp struct { State string `json:"state"` } - if err := json.Unmarshal(respBytes, &jgResp); err != nil { + + // 将 respData 转换为 JSON 字节再解析 + respDataBytes, err := json.Marshal(respData) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + if err := json.Unmarshal(respDataBytes, &stateResp); err != nil { return nil, errors.Join(processors.ErrSystem, err) } - // 将极光的 state 编码转换为旧的 state 语义: - // 极光:0-结婚 1-离婚 2-未匹配 - // 旧定义:1:已婚,2:未婚/未在民政局登记,3:离异 - var oldState string - switch jgResp.State { - case "0": // 结婚 - oldState = "1" - case "1": // 离婚 - oldState = "3" - case "2": // 未匹配 - oldState = "2" - default: - // 未知状态按未匹配处理 - oldState = "2" - } - - // 根据旧的 state 值转换为 81nc 格式 + // 根据 state 值转换为 81nc 格式 var opType, opTypeDesc string - switch oldState { + switch stateResp.State { case "1": // 已婚 opType = "IA" opTypeDesc = "结婚" diff --git a/internal/domains/api/services/processors/ivyz/ivyz9363_processor.go b/internal/domains/api/services/processors/ivyz/ivyz9363_processor.go index 0055910..acc7a9f 100644 --- a/internal/domains/api/services/processors/ivyz/ivyz9363_processor.go +++ b/internal/domains/api/services/processors/ivyz/ivyz9363_processor.go @@ -8,7 +8,7 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" - "tyapi-server/internal/infrastructure/external/jiguang" + "tyapi-server/internal/infrastructure/external/westdex" ) // ProcessIVYZ9363Request IVYZ9363 API处理方法 @@ -17,6 +17,7 @@ func ProcessIVYZ9363Request(ctx context.Context, params []byte, deps *processors if err := json.Unmarshal(params, ¶msDto); err != nil { return nil, errors.Join(processors.ErrSystem, err) } + if err := deps.Validator.ValidateStruct(paramsDto); err != nil { return nil, errors.Join(processors.ErrInvalidParam, err) } @@ -25,72 +26,43 @@ func ProcessIVYZ9363Request(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, errors.New("请正确填写身份信息")) } - // 构建极光双人婚姻查询请求参数 - // 极光入参:id_card_m / name_m / id_card_w / name_w / authCode - reqData := map[string]interface{}{ - "id_card_m": paramsDto.ManIDCard, - "name_m": paramsDto.ManName, - "id_card_w": paramsDto.WomanIDCard, - "name_w": paramsDto.WomanName, - "authCode": deps.CallContext.ContractCode, + encryptedManName, err := deps.WestDexService.Encrypt(paramsDto.ManName) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) } - // 调用极光双人婚姻查询接口 - // apiCode: marriage-double-v2(用于请求头) - // apiPath: marriage/double-v2(用于URL路径) - respBytes, err := deps.JiguangService.CallAPI(ctx, "marriage-double-v2", "marriage/double-v2", reqData) + encryptedManIDCard, err := deps.WestDexService.Encrypt(paramsDto.ManIDCard) if err != nil { - // 根据错误类型返回相应的错误 - if errors.Is(err, jiguang.ErrNotFound) { - return nil, errors.Join(processors.ErrNotFound, err) - } else if errors.Is(err, jiguang.ErrDatasource) { + return nil, errors.Join(processors.ErrSystem, err) + } + + encryptedWomanName, err := deps.WestDexService.Encrypt(paramsDto.WomanName) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + encryptedWomanIDCard, err := deps.WestDexService.Encrypt(paramsDto.WomanIDCard) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + reqData := map[string]interface{}{ + "data": map[string]interface{}{ + "name_man": encryptedManName, + "idcard_man": encryptedManIDCard, + "name_woman": encryptedWomanName, + "idcard_woman": encryptedWomanIDCard, + }, + } + + respBytes, err := deps.WestDexService.CallAPI(ctx, "G10XM02", reqData) + if err != nil { + if errors.Is(err, westdex.ErrDatasource) { return nil, errors.Join(processors.ErrDatasource, err) } else { return nil, errors.Join(processors.ErrSystem, err) } } - // 解析极光返回的数据,示例:"result": "0" - // 0 结婚 1 离婚 2 未匹配(均为字符串) - var jgResp struct { - Result string `json:"result"` - } - if err := json.Unmarshal(respBytes, &jgResp); err != nil { - return nil, errors.Join(processors.ErrSystem, err) - } - - // 将极光 result 映射为 81NC 业务类型 - // 0: 结婚 -> IA / 结婚 - // 1: 离婚 -> IB / 离婚 - // 2: 未匹配 -> INR / 匹配不成功 - var opType, opTypeDesc string - switch jgResp.Result { - case "0": - opType = "IA" - opTypeDesc = "结婚" - case "1": - opType = "IB" - opTypeDesc = "离婚" - case "2": - opType = "INR" - opTypeDesc = "匹配不成功" - default: - // 未知状态按未匹配处理 - opType = "INR" - opTypeDesc = "匹配不成功" - } - - // 构建当前接口对外约定的返回结构 - result := map[string]interface{}{ - "msg": "操作成功", - "code": 200, - "data": map[string]interface{}{ - "op_date": "", // 极光未提供日期,这里保持空串 - "op_type": opType, // IA / IB / INR - "op_type_desc": opTypeDesc, // 结婚 / 离婚 / 匹配不成功 - }, - "success": true, - } - - return json.Marshal(result) + return respBytes, nil } diff --git a/internal/infrastructure/external/jiguang/jiguang_service.go b/internal/infrastructure/external/jiguang/jiguang_service.go index 8054e2b..8788243 100644 --- a/internal/infrastructure/external/jiguang/jiguang_service.go +++ b/internal/infrastructure/external/jiguang/jiguang_service.go @@ -211,7 +211,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st } return nil, err } - j.logger.LogInfo(fmt.Sprintf("极光响应: %+v", jiguangResp)) + // 记录响应日志(不记录具体响应数据) if j.logger != nil { if jiguangResp.OrderID != "" {