diff --git a/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go b/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go index ba7f8c0..62b4b11 100644 --- a/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go +++ b/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go @@ -13,6 +13,79 @@ import ( "github.com/tidwall/gjson" ) +// ProcessFLXG0V4BRequest FLXG0V4B API处理方法 +func ProcessFLXG0V4BRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.FLXG0V4BReq + if err := json.Unmarshal(params, ¶msDto); err != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) + } + + if err := deps.Validator.ValidateStruct(paramsDto); err != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, err) + } + + encryptedName, err := deps.WestDexService.Encrypt(paramsDto.Name) + if err != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) + } + + encryptedIDCard, err := deps.WestDexService.Encrypt(paramsDto.IDCard) + if err != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) + } + encryptedAuthAuthorizeFileCode, err := deps.WestDexService.Encrypt(deps.CallContext.ContractCode) + if err != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) + } + reqData := map[string]interface{}{ + "data": map[string]interface{}{ + "name": encryptedName, + "idcard": encryptedIDCard, + "auth_authorizeFileCode": encryptedAuthAuthorizeFileCode, + "inquired_auth": fmt.Sprintf("authed:%s", paramsDto.AuthDate), + }, + } + respBytes, err := deps.WestDexService.CallAPI("G22SC01", reqData) + if err != nil { + // 数据源错误 + if errors.Is(err, westdex.ErrDatasource) { + // 如果有返回内容,优先解析返回内容 + if respBytes != nil { + parsed, parseErr := ParseJsonResponse(respBytes) + if parseErr == nil { + // 通过gjson获取指定路径的数据 + contentResult := gjson.GetBytes(parsed, "G22SC0101.G22SC0102.content") + if contentResult.Exists() { + return []byte(contentResult.Raw), fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } + return parsed, fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } + // 解析失败,返回原始内容和系统错误 + return respBytes, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) + } + // 没有返回内容,直接返回数据源错误 + return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } + // 其他系统错误 + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) + } + + // 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse + parsed, parseErr := ParseJsonResponse(respBytes) + if parseErr != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) + } + + // 通过gjson获取指定路径的数据 + contentResult := gjson.GetBytes(parsed, "G22SC0101.G22SC0102.content") + if contentResult.Exists() { + return []byte(contentResult.Raw), nil + } else { + return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } + +} + // Content 数据内容 type FLXG0V4BResponse struct { Sxbzxr Sxbzxr `json:"sxbzxr"` // 失信被执行人 @@ -385,79 +458,6 @@ type XgbzxrItem struct { Fbrq string `json:"fbrq"` // 发布时间 } -// ProcessFLXG0V4BRequest FLXG0V4B API处理方法 -func ProcessFLXG0V4BRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { - var paramsDto dto.FLXG0V4BReq - if err := json.Unmarshal(params, ¶msDto); err != nil { - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) - } - - if err := deps.Validator.ValidateStruct(paramsDto); err != nil { - return nil, fmt.Errorf("%s: %w", processors.ErrInvalidParam, err) - } - - encryptedName, err := deps.WestDexService.Encrypt(paramsDto.Name) - if err != nil { - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) - } - - encryptedIDCard, err := deps.WestDexService.Encrypt(paramsDto.IDCard) - if err != nil { - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) - } - encryptedAuthAuthorizeFileCode, err := deps.WestDexService.Encrypt(deps.CallContext.ContractCode) - if err != nil { - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) - } - reqData := map[string]interface{}{ - "data": map[string]interface{}{ - "name": encryptedName, - "idcard": encryptedIDCard, - "auth_authorizeFileCode": encryptedAuthAuthorizeFileCode, - "inquired_auth": fmt.Sprintf("authed:%s", paramsDto.AuthDate), - }, - } - respBytes, err := deps.WestDexService.CallAPI("G22SC01", reqData) - if err != nil { - // 数据源错误 - if errors.Is(err, westdex.ErrDatasource) { - // 如果有返回内容,优先解析返回内容 - if respBytes != nil { - parsed, parseErr := ParseJsonResponse(respBytes) - if parseErr == nil { - // 通过gjson获取指定路径的数据 - contentResult := gjson.GetBytes(parsed, "G22SC0101.G22SC0102.content") - if contentResult.Exists() { - return []byte(contentResult.Raw), fmt.Errorf("%s: %w", processors.ErrDatasource, err) - } - return parsed, fmt.Errorf("%s: %w", processors.ErrDatasource, err) - } - // 解析失败,返回原始内容和系统错误 - return respBytes, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) - } - // 没有返回内容,直接返回数据源错误 - return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err) - } - // 其他系统错误 - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) - } - - // 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse - parsed, parseErr := ParseJsonResponse(respBytes) - if parseErr != nil { - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) - } - - // 通过gjson获取指定路径的数据 - contentResult := gjson.GetBytes(parsed, "G22SC0101.G22SC0102.content") - if contentResult.Exists() { - return []byte(contentResult.Raw), nil - }else{ - return nil,fmt.Errorf("%s: %w", processors.ErrDatasource, err) - } - -} - // ParseWestResponse 解析西部返回的响应数据(获取data字段后解析) // westResp: 西部返回的原始响应 // Returns: 解析后的数据字节数组 diff --git a/internal/domains/api/services/processors/qygl/qygl8271_processor.go b/internal/domains/api/services/processors/qygl/qygl8271_processor.go index 5d03548..4981634 100644 --- a/internal/domains/api/services/processors/qygl/qygl8271_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl8271_processor.go @@ -9,6 +9,8 @@ import ( "tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/infrastructure/external/westdex" + + "github.com/tidwall/gjson" ) // ProcessQYGL8271Request QYGL8271 API处理方法 @@ -40,18 +42,46 @@ func ProcessQYGL8271Request(ctx context.Context, params []byte, deps *processors "org_name": encryptedEntName, "uscc": encryptedEntCode, "auth_authorizeFileCode": encryptedAuthAuthorizeFileCode, - "inquired_auth": paramsDto.AuthDate, // AuthDate 有 encrypt:"false" 标签,不加密 + "inquired_auth": fmt.Sprintf("authed:%s", paramsDto.AuthDate), }, } respBytes, err := deps.WestDexService.CallAPI("Q03SC01", reqData) if err != nil { + // 数据源错误 if errors.Is(err, westdex.ErrDatasource) { + // 如果有返回内容,优先解析返回内容 + if respBytes != nil { + parsed, parseErr := ParseJsonResponse(respBytes) + if parseErr == nil { + // 通过gjson获取指定路径的数据 + contentResult := gjson.GetBytes(parsed, "Q03SC0101.Q03SC0102.content") + if contentResult.Exists() { + return []byte(contentResult.Raw), fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } + return parsed, fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } + // 解析失败,返回原始内容和系统错误 + return respBytes, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) + } + // 没有返回内容,直接返回数据源错误 return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err) - } else { - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) } + // 其他系统错误 + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) } - return respBytes, nil + // 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse + parsed, parseErr := ParseJsonResponse(respBytes) + if parseErr != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) + } + + // 通过gjson获取指定路径的数据 + contentResult := gjson.GetBytes(parsed, "Q03SC0101.Q03SC0102.content") + if contentResult.Exists() { + return []byte(contentResult.Raw), nil + } else { + return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } }