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