feat: 完善字段描述获取

This commit is contained in:
2026-01-05 18:02:47 +08:00
parent d74f82d060
commit 2996fc4732
4 changed files with 44 additions and 41 deletions

View File

@@ -13,6 +13,7 @@ import (
"strings"
"git.zhangdeman.cn/zhangdeman/api-doc/define"
utilPkg "git.zhangdeman.cn/zhangdeman/util"
)
var (
@@ -154,36 +155,38 @@ func (psf parseStructFieldTag) EnumDescription(structField reflect.StructField)
// GetExampleValue 示例值
func (psf parseStructFieldTag) GetExampleValue(structField reflect.StructField) any {
descTagList := []string{define.TagEg, define.TagExample}
fieldType := structField.Type.Kind().String()
for _, tag := range descTagList {
val := strings.TrimSpace(structField.Tag.Get(tag))
if val == "" {
exampleTagList := []string{define.TagEg, define.TagExample}
structFieldType := structField.Type
if structFieldType.Kind() == reflect.Ptr {
structFieldType = structFieldType.Elem()
}
fieldTypeKind := structFieldType.Kind()
for _, tag := range exampleTagList {
example := strings.TrimSpace(structField.Tag.Get(tag))
if example == "" {
continue
}
if strings.HasPrefix(fieldType, "int") {
i, _ := strconv.Atoi(val)
return i
}
if strings.HasPrefix(fieldType, "uint") {
uintVal, _ := strconv.ParseUint(val, 10, 64)
return uintVal
}
if strings.HasPrefix(fieldType, "float") {
floatVal, _ := strconv.ParseFloat(val, 64)
return floatVal
}
if strings.HasPrefix(fieldType, "string") {
return val
}
if strings.HasPrefix(fieldType, "bool") {
if val == "true" {
return true
} else {
return false
switch fieldTypeKind {
case reflect.String:
return example
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
var res int64
if err := utilPkg.ConvertAssign(&res, example); err == nil {
return res
}
case reflect.Float32, reflect.Float64:
var res float64
if err := utilPkg.ConvertAssign(&res, example); err == nil {
return res
}
case reflect.Bool:
var res bool
if err := utilPkg.ConvertAssign(&res, example); err == nil {
return res
}
default:
return example
}
return val
}
return nil
}