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 | ||||
| package router | ||||
|  | ||||
| import "github.com/gin-gonic/gin" | ||||
| import ( | ||||
| 	"reflect" | ||||
|  | ||||
| 	"git.zhangdeman.cn/zhangdeman/gin/logger" | ||||
| 	"github.com/gin-gonic/gin" | ||||
| ) | ||||
|  | ||||
| // GetCommonParam 获取公共参数 | ||||
| type GetCommonParam func(ctx *gin.Context) (any, error) | ||||
| @ -23,3 +28,26 @@ func (s *server) AddCommonParamRules(rules map[string]GetCommonParam) { | ||||
| 		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