This commit is contained in:
Mrx
2026-03-26 11:31:11 +08:00
parent 8bbd098f97
commit a73097aed3
2 changed files with 20 additions and 14 deletions

View File

@@ -319,15 +319,28 @@ func (s *ApiApplicationServiceImpl) callExternalApi(ctx context.Context, cmd *co
callContext) callContext)
if err != nil { if err != nil {
mappedErrorType := entities.ApiCallErrorSystem
if errors.Is(err, processors.ErrDatasource) { if errors.Is(err, processors.ErrDatasource) {
return "", ErrSystem mappedErrorType = entities.ApiCallErrorDatasource
} else if errors.Is(err, processors.ErrInvalidParam) { } else if errors.Is(err, processors.ErrInvalidParam) {
return "", ErrInvalidParam mappedErrorType = entities.ApiCallErrorInvalidParam
} else if errors.Is(err, processors.ErrNotFound) { } else if errors.Is(err, processors.ErrNotFound) {
return "", ErrQueryEmpty mappedErrorType = entities.ApiCallErrorQueryEmpty
} else {
return "", ErrSystem
} }
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 return string(response), nil

View File

@@ -295,23 +295,16 @@ func (s *ShujubaoService) CallAPI(ctx context.Context, apiPath string, params ma
// 成功码只有这三类:其它 code 都走统一错误映射返回 // 成功码只有这三类:其它 code 都走统一错误映射返回
if code != "10000" && code != "200" && code != "0" { 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) shujubaoErr := NewShujubaoErrorFromCode(code, shujubaoResp.Message)
if queryEmptyErr := GetQueryEmptyErrByCode(code); queryEmptyErr != nil { if queryEmptyErr := GetQueryEmptyErrByCode(code); queryEmptyErr != nil {
err = errors.Join(queryEmptyErr, shujubaoErr) err = errors.Join(queryEmptyErr, shujubaoErr)
if s.logger != nil { if s.logger != nil {
s.logger.LogError(requestID, transactionID, apiPath, err, logParams) s.logger.LogError(requestID, transactionID, apiPath, err, paramsForLog(params))
} }
return nil, err return nil, err
} }
if s.logger != nil { 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) return nil, errors.Join(ErrDatasource, shujubaoErr)
} }