优化代码

This commit is contained in:
白茶清欢 2025-02-12 22:20:50 +08:00
parent 8c84285347
commit 77c9e06b39
2 changed files with 84 additions and 64 deletions

View File

@ -324,28 +324,28 @@ func (g *Generate) AddComponentsSchema(rootSchemaName string, pkgPath string, in
inputType.Field(i).Type.Kind() == reflect.Slice {
if convertType := g.realBaseType2SwaggerType(inputType.Field(i).Type.String()); !strings.HasPrefix(convertType, "[]") && convertType != inputType.Field(i).Type.Kind().String() {
// 针对基础类型指针
g.docData.Components.Schemas[schemaName].Properties[g.getParamName(inputType.Field(i))] = &define.Property{
g.docData.Components.Schemas[schemaName].Properties[ParseStructField.GetParamName(inputType.Field(i))] = &define.Property{
Type: g.realBaseType2SwaggerType(convertType),
Format: inputType.Field(i).Type.String(),
Default: g.getDefaultValue(inputType.Field(i)),
Description: g.getParamDesc(inputType.Field(i)),
Default: ParseStructField.GetDefaultValue(inputType.Field(i)),
Description: ParseStructField.GetParamDesc(inputType.Field(i)),
}
continue
}
if inputType.Field(i).Type.Kind() == reflect.Struct ||
inputType.Field(i).Type.Kind() == reflect.Map {
g.docData.Components.Schemas[schemaName].Properties[g.getParamName(inputType.Field(i))] = &define.Property{
g.docData.Components.Schemas[schemaName].Properties[ParseStructField.GetParamName(inputType.Field(i))] = &define.Property{
Type: consts.SwaggerDataTypeObject,
Format: inputType.Field(i).Type.String(),
Description: g.getParamDesc(inputType.Field(i)),
Description: ParseStructField.GetParamDesc(inputType.Field(i)),
Properties: map[string]*define.Property{},
}
} else if inputType.Field(i).Type.Kind() == reflect.Array ||
inputType.Field(i).Type.Kind() == reflect.Slice {
g.docData.Components.Schemas[schemaName].Properties[g.getParamName(inputType.Field(i))] = &define.Property{
g.docData.Components.Schemas[schemaName].Properties[ParseStructField.GetParamName(inputType.Field(i))] = &define.Property{
Type: consts.SwaggerDataTypeArray,
Format: inputType.Field(i).Type.String(),
Description: g.getParamDesc(inputType.Field(i)),
Description: ParseStructField.GetParamDesc(inputType.Field(i)),
Items: &define.PropertyXOf{
Ref: g.parseSliceItem(schemaName, inputType.Field(i).Type),
},
@ -354,15 +354,15 @@ func (g *Generate) AddComponentsSchema(rootSchemaName string, pkgPath string, in
} else if inputType.Field(i).Type.Kind() == reflect.Ptr {
} else {
g.AddComponentsSchema(schemaName, g.getParamName(inputType.Field(i)), inputType.Field(i).Type)
g.AddComponentsSchema(schemaName, ParseStructField.GetParamName(inputType.Field(i)), inputType.Field(i).Type)
}
} else {
g.docData.Components.Schemas[schemaName].Properties[g.getParamName(inputType.Field(i))] = &define.Property{
g.docData.Components.Schemas[schemaName].Properties[ParseStructField.GetParamName(inputType.Field(i))] = &define.Property{
Type: g.realBaseType2SwaggerType(inputType.Field(i).Type.String()),
Format: inputType.Field(i).Type.String(),
Default: g.getDefaultValue(inputType.Field(i)),
Description: g.getParamDesc(inputType.Field(i)),
Default: ParseStructField.GetDefaultValue(inputType.Field(i)),
Description: ParseStructField.GetParamDesc(inputType.Field(i)),
}
}
}
@ -467,56 +467,3 @@ func (g *Generate) realType2SwaggerType(realType string) string {
}
return g.realBaseType2SwaggerType(realType)
}
// getParamName 获取参数名称
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:58 2025/2/11
func (g *Generate) getParamName(structField reflect.StructField) string {
paramNameTagList := []string{
define.TagJson, define.TagForm,
define.TagXml, define.TagYaml,
define.TagYml,
}
for _, tag := range paramNameTagList {
tagVal := structField.Tag.Get(tag)
if tagVal != "" {
return tagVal
}
}
// 未设置相关字段, 则字段名即为参数名
return structField.Name
}
// getParamDesc ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:01 2025/2/11
func (g *Generate) getParamDesc(structField reflect.StructField) string {
descTagList := []string{define.TagDesc, define.TagDescription}
for _, tag := range descTagList {
tagVal := structField.Tag.Get(tag)
if tagVal != "" {
return tagVal
}
}
// 没有显示的设置参数描述, 则使用参数名作为参数描述
return g.getParamName(structField)
}
// getDefaultValue 获取默认值
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:05 2025/2/11
func (g *Generate) getDefaultValue(structField reflect.StructField) string {
defaultTagList := []string{define.TagD, define.TagDefault}
for _, tag := range defaultTagList {
if tagVal, exist := structField.Tag.Lookup(tag); exist {
return tagVal
}
}
return ""
}

73
struct_field.go Normal file
View File

@ -0,0 +1,73 @@
// Package api_doc ...
//
// Description : api_doc ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-02-12 22:15
package api_doc
import (
"git.zhangdeman.cn/gateway/api-doc/define"
"reflect"
)
var (
ParseStructField = parseStructField{}
)
type parseStructField struct {
}
// GetParamName 获取参数名称
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:58 2025/2/11
func (psf parseStructField) GetParamName(structField reflect.StructField) string {
paramNameTagList := []string{
define.TagJson, define.TagForm,
define.TagXml, define.TagYaml,
define.TagYml,
}
for _, tag := range paramNameTagList {
tagVal := structField.Tag.Get(tag)
if tagVal != "" {
return tagVal
}
}
// 未设置相关字段, 则字段名即为参数名
return structField.Name
}
// GetParamDesc ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:01 2025/2/11
func (psf parseStructField) GetParamDesc(structField reflect.StructField) string {
descTagList := []string{define.TagDesc, define.TagDescription}
for _, tag := range descTagList {
tagVal := structField.Tag.Get(tag)
if tagVal != "" {
return tagVal
}
}
// 没有显示的设置参数描述, 则使用参数名作为参数描述
return psf.GetParamName(structField)
}
// GetDefaultValue 获取默认值
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:05 2025/2/11
func (psf parseStructField) GetDefaultValue(structField reflect.StructField) string {
defaultTagList := []string{define.TagD, define.TagDefault}
for _, tag := range defaultTagList {
if tagVal, exist := structField.Tag.Lookup(tag); exist {
return tagVal
}
}
return ""
}