From 3e5016b4391c1cbc14a98a7dab0d396d017c6c85 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Sat, 17 Jan 2026 14:09:42 +0800 Subject: [PATCH] f --- .../processors/ivyz/ivyz81nc_processor.go | 84 +++++++++++++------ 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/internal/domains/api/services/processors/ivyz/ivyz81nc_processor.go b/internal/domains/api/services/processors/ivyz/ivyz81nc_processor.go index aa23fa9..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/westdex" + "tyapi-server/internal/infrastructure/external/zhicha" ) // ProcessIVYZ81NCRequest IVYZ81NC API处理方法 @@ -21,45 +21,75 @@ func ProcessIVYZ81NCRequest(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - encryptedName, err := deps.WestDexService.Encrypt(paramsDto.Name) + encryptedName, err := deps.ZhichaService.Encrypt(paramsDto.Name) if err != nil { return nil, errors.Join(processors.ErrSystem, err) } - encryptedIDCard, err := deps.WestDexService.Encrypt(paramsDto.IDCard) + encryptedIDCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) if err != nil { return nil, errors.Join(processors.ErrSystem, err) } reqData := map[string]interface{}{ - "data": map[string]interface{}{ - "name": encryptedName, - "idcard": encryptedIDCard, - }, + "name": encryptedName, + "idCard": encryptedIDCard, + "authorized": "1", // 默认值 } - const maxRetries = 5 - var respBytes []byte - - for attempt := 0; attempt <= maxRetries; attempt++ { - var err error - respBytes, err = deps.WestDexService.CallAPI(ctx, "G09XM02", reqData) - if err == nil { - return respBytes, nil - } - - // 如果不是数据源异常,直接返回错误 - if !errors.Is(err, westdex.ErrDatasource) { + 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) } - - // 如果是最后一次尝试,返回错误 - if attempt == maxRetries { - return nil, errors.Join(processors.ErrDatasource, err) - } - - // 立即重试,不等待 } - return respBytes, nil + // 解析响应数据,期望格式为 {"state": "1"} + var stateResp struct { + State string `json:"state"` + } + + // 将 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 值转换为 81nc 格式 + var opType, opTypeDesc string + switch stateResp.State { + case "1": // 已婚 + opType = "IA" + opTypeDesc = "结婚" + case "2": // 未婚/未在民政局登记 + opType = "INR" + opTypeDesc = "匹配不成功" + case "3": // 离异 + opType = "IB" + opTypeDesc = "离婚" + default: + opType = "INR" + opTypeDesc = "匹配不成功" + } + + // 构建 81nc 格式响应 + result := map[string]interface{}{ + "code": "0", + "data": map[string]interface{}{ + "op_date": "", + "op_type": opType, + "op_type_desc": opTypeDesc, + }, + "message": "成功", + "seqNo": "", + } + + // 返回 81nc 格式响应 + return json.Marshal(result) }