feat: 优化注册方法检测

This commit is contained in:
2025-12-26 17:22:37 +08:00
parent 29201ac796
commit e415bad869
7 changed files with 65 additions and 51 deletions

View File

@@ -49,14 +49,17 @@ func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error {
} else {
reflectType = reflectFormValue.Type()
}
if reflectType.Kind() == reflect.Ptr {
reflectType = reflectType.Elem()
}
fieldTable := map[string]bool{}
fieldNum := reflectType.Elem().NumField()
fieldNum := reflectType.NumField()
for i := 0; i < fieldNum; i++ {
if reflectType.Elem().Field(i).Anonymous && // 是匿名字段, 再做一次解析
((reflectType.Elem().Field(i).Type.Kind() == reflect.Ptr && reflectType.Elem().Field(i).Type.Kind() == reflect.Struct) || // 结构体指针
reflectType.Elem().Field(i).Type.Kind() == reflect.Struct) { // 结构体
anonymousFieldType := reflectType.Elem().Field(i).Type
if reflectType.Field(i).Anonymous && // 是匿名字段, 再做一次解析
((reflectType.Field(i).Type.Kind() == reflect.Ptr && reflectType.Field(i).Type.Kind() == reflect.Struct) || // 结构体指针
reflectType.Field(i).Type.Kind() == reflect.Struct) { // 结构体
anonymousFieldType := reflectType.Field(i).Type
if anonymousFieldType.Kind() == reflect.Ptr {
anonymousFieldType = anonymousFieldType.Elem()
}
@@ -65,7 +68,7 @@ func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error {
}
} else {
// 提取全部结构体字段
fieldTable[reflectType.Elem().Field(i).Name] = true
fieldTable[reflectType.Field(i).Name] = true
}
}
for fieldName, getParamFunc := range s.commonParam {