add
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user