修复get类请求匿名字段处理的BUG

This commit is contained in:
白茶清欢 2025-02-18 17:04:47 +08:00
parent 93d399d845
commit 7aa4d3c417

View File

@ -329,6 +329,7 @@ func (g *Generate) ParseReadConfigParam(requestCfg *define.UriBaseConfig, baseRe
if inputType.Field(i).Anonymous { if inputType.Field(i).Anonymous {
// 匿名字段, 直接对齐到当前的父级 // 匿名字段, 直接对齐到当前的父级
g.ParseReadConfigParam(requestCfg, baseReqCfg, inputType.Field(i).Type) g.ParseReadConfigParam(requestCfg, baseReqCfg, inputType.Field(i).Type)
continue
} }
propertyName := ParseStructFieldTag.GetParamName(inputType.Field(i)) propertyName := ParseStructFieldTag.GetParamName(inputType.Field(i))
if propertyName == "-" { if propertyName == "-" {
@ -496,15 +497,16 @@ func (g *Generate) AddComponentsSchema(rootSchemaName string, pkgPath string, in
// 结构体 // 结构体
if inputType.Kind() == reflect.Struct { if inputType.Kind() == reflect.Struct {
for i := 0; i < inputType.NumField(); i++ { for i := 0; i < inputType.NumField(); i++ {
propertyName := ParseStructFieldTag.GetParamName(inputType.Field(i))
if propertyName == "-" {
continue
}
if inputType.Field(i).Anonymous { if inputType.Field(i).Anonymous {
// 处理匿名字段 // 处理匿名字段
g.handleAnonymousField(schemaName, inputType.Field(i)) g.handleAnonymousField(schemaName, inputType.Field(i))
continue continue
} }
propertyName := ParseStructFieldTag.GetParamName(inputType.Field(i))
if propertyName == "-" {
continue
}
if inputType.Field(i).Type.Kind() == reflect.Ptr { if inputType.Field(i).Type.Kind() == reflect.Ptr {
// 处理指针 // 处理指针
if inputType.Field(i).Type.Elem().Kind() == reflect.Struct { if inputType.Field(i).Type.Elem().Kind() == reflect.Struct {
@ -605,15 +607,15 @@ func (g *Generate) handleAnonymousField(schemaName string, field reflect.StructF
handleType = handleType.Elem() handleType = handleType.Elem()
} }
for i := 0; i < handleType.NumField(); i++ { for i := 0; i < handleType.NumField(); i++ {
if handleType.Field(i).Anonymous { itemField := handleType.Field(i)
if itemField.Anonymous {
// 递归处理多层嵌套匿名字段 // 递归处理多层嵌套匿名字段
g.handleAnonymousField(schemaName, handleType.Field(i)) g.handleAnonymousField(schemaName, itemField)
continue continue
} else { } else {
itemField := handleType.Field(i)
baseConvertType, isBaseType := g.realBaseType2SwaggerType(itemField.Type.String()) baseConvertType, isBaseType := g.realBaseType2SwaggerType(itemField.Type.String())
if !isBaseType { if !isBaseType {
g.AddComponentsSchema(schemaName, itemField.Type.PkgPath(), itemField.Type) g.AddComponentsSchema(schemaName, handleType.Field(i).Type.PkgPath(), handleType.Field(i).Type)
continue continue
} else { } else {
paramName := ParseStructFieldTag.GetParamName(itemField) paramName := ParseStructFieldTag.GetParamName(itemField)
@ -621,8 +623,8 @@ func (g *Generate) handleAnonymousField(schemaName string, field reflect.StructF
Type: baseConvertType, Type: baseConvertType,
Format: itemField.Type.String(), Format: itemField.Type.String(),
Enum: ValidateRule.Enum(itemField), Enum: ValidateRule.Enum(itemField),
Default: ParseStructFieldTag.GetDefaultValue(itemField), Default: ParseStructFieldTag.GetDefaultValue(handleType.Field(i)),
Description: ParseStructFieldTag.GetParamDesc(itemField), Description: ParseStructFieldTag.GetParamDesc(handleType.Field(i)),
} }
if ValidateRule.IsRequired(itemField) { if ValidateRule.IsRequired(itemField) {
g.docData.Components.Schemas[schemaName].Required = append(g.docData.Components.Schemas[schemaName].Required, paramName) g.docData.Components.Schemas[schemaName].Required = append(g.docData.Components.Schemas[schemaName].Required, paramName)