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