From 4b78edc071ec41b599811f099a634b8202c363cf Mon Sep 17 00:00:00 2001 From: Mrx <18278715334@163.com> Date: Thu, 4 Jun 2026 15:01:15 +0800 Subject: [PATCH] f --- .../external/jiguang/jiguang_service.go | 48 +++++++------------ 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/internal/infrastructure/external/jiguang/jiguang_service.go b/internal/infrastructure/external/jiguang/jiguang_service.go index 34b6989..d48e3e8 100644 --- a/internal/infrastructure/external/jiguang/jiguang_service.go +++ b/internal/infrastructure/external/jiguang/jiguang_service.go @@ -3,7 +3,6 @@ package jiguang import ( "bytes" "context" - "crypto/md5" "encoding/json" "errors" "fmt" @@ -88,20 +87,12 @@ func NewJiguangService(url, appID, appSecret string, signMethod SignMethod, time } } -// generateRequestID 生成请求ID -func (j *JiguangService) generateRequestID() string { - timestamp := time.Now().UnixNano() - hash := md5.Sum([]byte(fmt.Sprintf("%d_%s", timestamp, j.config.AppID))) - return fmt.Sprintf("jiguang_%x", hash[:8]) -} - // CallAPI 调用极光API // apiCode: API服务编码(如 marriage-single-v2),用于请求头 // apiPath: API路径(如 marriage/single-v2),用于URL路径 // params: 请求参数(会作为JSON body发送) func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath string, params map[string]interface{}) (resp []byte, err error) { startTime := time.Now() - requestID := j.generateRequestID() // 生成时间戳(毫秒) timestamp := strconv.FormatInt(time.Now().UnixMilli(), 10) @@ -117,7 +108,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st if signErr != nil { err = errors.Join(ErrSystem, fmt.Errorf("生成签名失败: %w", signErr)) if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, err, params) + j.logger.LogError("", transactionID, apiCode, err, params) } return nil, err } @@ -125,17 +116,12 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st // 构建完整的请求URL,使用apiPath作为路径 requestURL := strings.TrimSuffix(j.config.URL, "/") + "/" + strings.TrimPrefix(apiPath, "/") - // 记录请求日志 - if j.logger != nil { - j.logger.LogRequest(requestID, transactionID, apiCode, requestURL) - } - // 将请求参数转换为JSON jsonData, marshalErr := json.Marshal(params) if marshalErr != nil { err = errors.Join(ErrSystem, marshalErr) if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, err, params) + j.logger.LogError("", transactionID, apiCode, err, params) } return nil, err } @@ -145,7 +131,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st if newRequestErr != nil { err = errors.Join(ErrSystem, newRequestErr) if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, err, params) + j.logger.LogError("", transactionID, apiCode, err, params) } return nil, err } @@ -185,7 +171,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st err = errors.Join(ErrSystem, clientDoErr) } if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, err, params) + j.logger.LogError("", transactionID, apiCode, err, params) } return nil, err } @@ -194,7 +180,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st if closeErr != nil { // 记录关闭错误 if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, errors.Join(ErrSystem, fmt.Errorf("关闭响应体失败: %w", closeErr)), params) + j.logger.LogError("", transactionID, apiCode, errors.Join(ErrSystem, fmt.Errorf("关闭响应体失败: %w", closeErr)), params) } } }(httpResp.Body) @@ -207,7 +193,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st if readErr != nil { err = errors.Join(ErrSystem, readErr) if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, err, params) + j.logger.LogError("", transactionID, apiCode, err, params) } return nil, err } @@ -216,7 +202,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st if httpResp.StatusCode != http.StatusOK { err = errors.Join(ErrSystem, fmt.Errorf("极光请求失败,状态码: %d", httpResp.StatusCode)) if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, err, params) + j.logger.LogError("", transactionID, apiCode, err, params) } return nil, err } @@ -226,19 +212,19 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st if err := json.Unmarshal(bodyBytes, &jiguangResp); err != nil { err = errors.Join(ErrSystem, fmt.Errorf("响应解析失败: %w", err)) if j.logger != nil { - j.logger.LogError(requestID, transactionID, apiCode, err, params) + j.logger.LogError("", transactionID, apiCode, err, params) } return nil, err } jiguangResp.normalize() - // 记录响应日志(不记录具体响应数据) + // order_id 为极光侧请求唯一标识,作为日志 request_id + requestID := jiguangResp.OrderID + + // 记录请求/响应日志(不记录具体响应数据) if j.logger != nil { - if jiguangResp.OrderID != "" { - j.logger.LogResponseWithID(requestID, transactionID, apiCode, httpResp.StatusCode, duration, jiguangResp.OrderID) - } else { - j.logger.LogResponse(requestID, transactionID, apiCode, httpResp.StatusCode, duration) - } + j.logger.LogRequest(requestID, transactionID, apiCode, requestURL) + j.logger.LogResponse(requestID, transactionID, apiCode, httpResp.StatusCode, duration) } // 检查业务状态码 @@ -272,13 +258,13 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st } // 记录错误日志 if j.logger != nil { - j.logger.LogErrorWithResponseID(requestID, transactionID, apiCode, jiguangErr, params, jiguangResp.OrderID) + j.logger.LogError(requestID, transactionID, apiCode, jiguangErr, params) } return nil, errors.Join(ErrNotFound, jiguangErr) } // 记录错误日志(查无记录的情况不记录错误日志) if j.logger != nil { - j.logger.LogErrorWithResponseID(requestID, transactionID, apiCode, jiguangErr, params, jiguangResp.OrderID) + j.logger.LogError(requestID, transactionID, apiCode, jiguangErr, params) } if jiguangErr.IsQueryFailed() { return nil, errors.Join(ErrDatasource, jiguangErr) @@ -302,7 +288,7 @@ func (j *JiguangService) CallAPI(ctx context.Context, apiCode string, apiPath st if err != nil { err = errors.Join(ErrSystem, fmt.Errorf("业务数据序列化失败: %w", err)) if j.logger != nil { - j.logger.LogErrorWithResponseID(requestID, transactionID, apiCode, err, params, jiguangResp.OrderID) + j.logger.LogError(requestID, transactionID, apiCode, err, params) } return nil, err }