38 lines
		
	
	
		
			866 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			866 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package util ...
 | 
						|
//
 | 
						|
// Description : util ...
 | 
						|
//
 | 
						|
// Author : go_developer@163.com<白茶清欢>
 | 
						|
//
 | 
						|
// Date : 2025-08-09 13:10
 | 
						|
package util
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"fmt"
 | 
						|
 | 
						|
	"git.zhangdeman.cn/zhangdeman/consts"
 | 
						|
	"github.com/gin-gonic/gin"
 | 
						|
)
 | 
						|
 | 
						|
// GinCtxToContext gin.Cotext 转换为 context.Context
 | 
						|
func GinCtxToContext(ctx *gin.Context) context.Context {
 | 
						|
	if nil == ctx {
 | 
						|
		return context.Background()
 | 
						|
	}
 | 
						|
	newGinContext := ctx.Copy()
 | 
						|
	// 复制gin request 基本数据
 | 
						|
	requestData := map[string]any{
 | 
						|
		consts.GinContextField: ctx,
 | 
						|
	}
 | 
						|
	for k, v := range newGinContext.Keys {
 | 
						|
		requestData[fmt.Sprintf("%v", k)] = v
 | 
						|
	}
 | 
						|
	if nil != ctx.Request {
 | 
						|
		requestData[consts.GinRequestURIField] = ctx.Request.URL.Path
 | 
						|
		requestData[consts.GinRequestMethodField] = ctx.Request.Method
 | 
						|
	}
 | 
						|
 | 
						|
	return context.WithValue(context.Background(), consts.GinContextDataField, requestData)
 | 
						|
}
 |