save code
This commit is contained in:
@ -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