// Package util ... // // Description : util ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2025-08-09 13:10 package util import ( "context" "git.zhangdeman.cn/zhangdeman/consts" "github.com/gin-gonic/gin" ) // GinCtxToContext gin.Cotext 转换为 context.Context func GinCtxToContext(ctx *gin.Context) context.Context { newContext := context.Background() if nil == ctx { return newContext } newGinContext := ctx.Copy() // 复制自定义的业务上下文值 for k, v := range newGinContext.Keys { newContext = context.WithValue(newContext, k, v) } // 复制gin request 基本数据 requestData := map[string]any{ consts.GinContextField: ctx, } if nil != ctx.Request { requestData[consts.GinRequestURIField] = ctx.Request.RequestURI requestData[consts.GinRequestMethodField] = ctx.Request.Method } for k, v := range requestData { newContext = context.WithValue(newContext, k, v) } return newContext }