feat: 完善字段描述获取
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user