feat: remove custom context
This commit is contained in:
		@ -1,12 +0,0 @@
 | 
			
		||||
// Package define ...
 | 
			
		||||
//
 | 
			
		||||
// Description : define ...
 | 
			
		||||
//
 | 
			
		||||
// Author : go_developer@163.com<白茶清欢>
 | 
			
		||||
//
 | 
			
		||||
// Date : 2025-04-12 20:18
 | 
			
		||||
package define
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	CustomContextKey = "_CUSTOM_CONTEXT" // 自定义context
 | 
			
		||||
)
 | 
			
		||||
@ -1,68 +0,0 @@
 | 
			
		||||
// Package define ...
 | 
			
		||||
//
 | 
			
		||||
// Description : define ...
 | 
			
		||||
//
 | 
			
		||||
// Author : go_developer@163.com<白茶清欢>
 | 
			
		||||
//
 | 
			
		||||
// Date : 2025-04-12 20:57
 | 
			
		||||
package define
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	networkUtil "git.zhangdeman.cn/zhangdeman/network/util"
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/wrapper/op_string"
 | 
			
		||||
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/trace"
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Context struct {
 | 
			
		||||
	Context     *gin.Context   // 继承 gin context
 | 
			
		||||
	Trace       *trace.Runtime // trace 实例
 | 
			
		||||
	TraceID     string
 | 
			
		||||
	RequestID   string
 | 
			
		||||
	RequestTime time.Time
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewContext 创建context
 | 
			
		||||
func NewContext(ginCtx *gin.Context) *Context {
 | 
			
		||||
	existCtx, exist := ginCtx.Get(CustomContextKey)
 | 
			
		||||
	if exist && existCtx != nil {
 | 
			
		||||
		if c, ok := existCtx.(*Context); ok {
 | 
			
		||||
			return c
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	traceID := fmt.Sprintf(
 | 
			
		||||
		"%v-%v-%v-%v",
 | 
			
		||||
		time.Now().UnixNano()/1e6,
 | 
			
		||||
		strings.ReplaceAll(networkUtil.IP.GetHostIP(), ".", ""),
 | 
			
		||||
		strings.ReplaceAll(networkUtil.IP.GetRemoteIP(ginCtx.Request), ".", ""),
 | 
			
		||||
		op_string.Md5(op_string.Random(32, "")),
 | 
			
		||||
	)
 | 
			
		||||
	getRequestID := func(ctx *gin.Context, traceID string) string {
 | 
			
		||||
		requestID := ctx.GetHeader("X-Forward-Request-Id")
 | 
			
		||||
		if len(requestID) > 0 {
 | 
			
		||||
			return requestID
 | 
			
		||||
		}
 | 
			
		||||
		if len(traceID) > 0 {
 | 
			
		||||
			return traceID
 | 
			
		||||
		}
 | 
			
		||||
		return traceID
 | 
			
		||||
	}
 | 
			
		||||
	ctx := &Context{
 | 
			
		||||
		Context:     ginCtx,
 | 
			
		||||
		Trace:       trace.NewRuntime(traceID, 1),
 | 
			
		||||
		TraceID:     traceID,
 | 
			
		||||
		RequestID:   getRequestID(ginCtx, traceID),
 | 
			
		||||
		RequestTime: time.Now(),
 | 
			
		||||
	}
 | 
			
		||||
	httpHandleConfig := GetHttpHandleConfig()
 | 
			
		||||
	ginCtx.Set(CustomContextKey, ctx)
 | 
			
		||||
	ginCtx.Set(httpHandleConfig.TraceIDField, traceID)
 | 
			
		||||
	ginCtx.Set(httpHandleConfig.RequestIDField, ctx.RequestID)
 | 
			
		||||
	ginCtx.Set(httpHandleConfig.StartRequestTimeField, ctx.RequestTime.UnixMilli())
 | 
			
		||||
	return ctx
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user