save code
This commit is contained in:
		
							
								
								
									
										17
									
								
								logger/define.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								logger/define.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | // Package logger ... | ||||||
|  | // | ||||||
|  | // Description : logger ... | ||||||
|  | // | ||||||
|  | // Author : go_developer@163.com<白茶清欢> | ||||||
|  | // | ||||||
|  | // Date : 2025-10-30 16:56 | ||||||
|  | package logger | ||||||
|  |  | ||||||
|  | // Data 日志数据 | ||||||
|  | type Data struct { | ||||||
|  | 	TraceID   string `json:"trace_id" dc:"trace_id"` | ||||||
|  | 	RequestID string `json:"request_id" dc:"请求ID"` | ||||||
|  | 	UserID    any    `json:"user_id" dc:"用户IP"` | ||||||
|  | 	Hostname  string `json:"hostname" dc:"服务器主机名称"` | ||||||
|  | 	HostIp    string `json:"host_ip" dc:"主机IP"` | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								logger/instance.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								logger/instance.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | // Package logger ... | ||||||
|  | // | ||||||
|  | // Description : logger ... | ||||||
|  | // | ||||||
|  | // Author : go_developer@163.com<白茶清欢> | ||||||
|  | // | ||||||
|  | // Date : 2025-10-30 16:54 | ||||||
|  | package logger | ||||||
|  |  | ||||||
|  | import "go.uber.org/zap" | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	Instance *zap.Logger = zap.NewNop() | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // SetInstance 设置日志实例 | ||||||
|  | func SetInstance(l *zap.Logger) { | ||||||
|  | 	if nil == l { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	Instance = l | ||||||
|  | } | ||||||
| @ -7,7 +7,12 @@ | |||||||
| // Date : 2025-10-30 15:39 | // Date : 2025-10-30 15:39 | ||||||
| package router | package router | ||||||
|  |  | ||||||
| import "github.com/gin-gonic/gin" | import ( | ||||||
|  | 	"reflect" | ||||||
|  |  | ||||||
|  | 	"git.zhangdeman.cn/zhangdeman/gin/logger" | ||||||
|  | 	"github.com/gin-gonic/gin" | ||||||
|  | ) | ||||||
|  |  | ||||||
| // GetCommonParam 获取公共参数 | // GetCommonParam 获取公共参数 | ||||||
| type GetCommonParam func(ctx *gin.Context) (any, error) | type GetCommonParam func(ctx *gin.Context) (any, error) | ||||||
| @ -23,3 +28,26 @@ func (s *server) AddCommonParamRules(rules map[string]GetCommonParam) { | |||||||
| 		s.AddCommonParamRule(fieldName, rule) | 		s.AddCommonParamRule(fieldName, rule) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // injectCommonParam 注入公共参数 | ||||||
|  | func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error { | ||||||
|  | 	reflectType := reflect.TypeOf(formValue) | ||||||
|  | 	fieldTable := map[string]bool{} | ||||||
|  | 	fieldNum := reflectType.Elem().NumField() | ||||||
|  | 	for i := 0; i < fieldNum; i++ { | ||||||
|  | 		// 提取全部结构体字段 | ||||||
|  | 		fieldTable[reflectType.Elem().Field(i).Name] = true | ||||||
|  | 	} | ||||||
|  | 	reflectValue := reflect.ValueOf(formValue) | ||||||
|  | 	for fieldName, getParamFunc := range s.commonParam { | ||||||
|  | 		if _, ok := fieldTable[fieldName]; !ok { | ||||||
|  | 			// 结构体字段未配置自动注入 | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		if val, err := getParamFunc(ctx); nil != err { | ||||||
|  | 			logger.Instance.Error("inject common param failed") | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		reflectValue.Elem().FieldByName(fieldName) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user