diff --git a/internal/application/api/api_application_service.go b/internal/application/api/api_application_service.go index 6f033ee..a2533e0 100644 --- a/internal/application/api/api_application_service.go +++ b/internal/application/api/api_application_service.go @@ -319,15 +319,28 @@ func (s *ApiApplicationServiceImpl) callExternalApi(ctx context.Context, cmd *co callContext) if err != nil { + mappedErrorType := entities.ApiCallErrorSystem if errors.Is(err, processors.ErrDatasource) { - return "", ErrSystem + mappedErrorType = entities.ApiCallErrorDatasource } else if errors.Is(err, processors.ErrInvalidParam) { - return "", ErrInvalidParam + mappedErrorType = entities.ApiCallErrorInvalidParam } else if errors.Is(err, processors.ErrNotFound) { - return "", ErrQueryEmpty - } else { - return "", ErrSystem + mappedErrorType = entities.ApiCallErrorQueryEmpty } + + s.logger.Error("调用第三方接口失败", + zap.String("transaction_id", validation.ApiCall.TransactionId), + zap.String("api_name", cmd.ApiName), + zap.String("error_type", mappedErrorType), + zap.Error(err)) + + if mappedErrorType == entities.ApiCallErrorInvalidParam { + return "", ErrInvalidParam + } + if mappedErrorType == entities.ApiCallErrorQueryEmpty { + return "", ErrQueryEmpty + } + return "", ErrSystem } return string(response), nil diff --git a/internal/infrastructure/external/shujubao/shujubao_service.go b/internal/infrastructure/external/shujubao/shujubao_service.go index d19f9c7..1666c69 100644 --- a/internal/infrastructure/external/shujubao/shujubao_service.go +++ b/internal/infrastructure/external/shujubao/shujubao_service.go @@ -295,23 +295,16 @@ func (s *ShujubaoService) CallAPI(ctx context.Context, apiPath string, params ma // 成功码只有这三类:其它 code 都走统一错误映射返回 if code != "10000" && code != "200" && code != "0" { - // 将上游失败返回码单独记录到日志参数中,便于排查与统计 - logParams := paramsForLog(params) - if logParams == nil { - logParams = map[string]interface{}{} - } - logParams["shujubao_return_code"] = code - shujubaoErr := NewShujubaoErrorFromCode(code, shujubaoResp.Message) if queryEmptyErr := GetQueryEmptyErrByCode(code); queryEmptyErr != nil { err = errors.Join(queryEmptyErr, shujubaoErr) if s.logger != nil { - s.logger.LogError(requestID, transactionID, apiPath, err, logParams) + s.logger.LogError(requestID, transactionID, apiPath, err, paramsForLog(params)) } return nil, err } if s.logger != nil { - s.logger.LogError(requestID, transactionID, apiPath, shujubaoErr, logParams) + s.logger.LogError(requestID, transactionID, apiPath, shujubaoErr, paramsForLog(params)) } return nil, errors.Join(ErrDatasource, shujubaoErr) }