feat: 完成validate 10 验证规则解析
This commit is contained in:
@@ -28,11 +28,12 @@ type StructFieldInfo struct {
|
||||
Required bool `json:"required" dc:"是否必传"`
|
||||
Min *float64 `json:"min" dc:"最小值"`
|
||||
Max *float64 `json:"max" dc:"最大值"`
|
||||
MinLength *uint64 `json:"min_length" dc:"最小长度"`
|
||||
MaxLength *uint64 `json:"max_length" dc:"最大长度"`
|
||||
MinLength *float64 `json:"min_length" dc:"最小长度"`
|
||||
MaxLength *float64 `json:"max_length" dc:"最大长度"`
|
||||
Pattern string `json:"pattern" dc:"模式"`
|
||||
Format string `json:"format" dc:"格式"`
|
||||
Enum []define.EnumValue `json:"enum" dc:"枚举值列表"`
|
||||
Enum []any `json:"enum" dc:"枚举值列表"`
|
||||
EnumDesc []define.EnumValue `json:"enum_desc" dc:"枚举值详细描述"`
|
||||
OmitEmpty bool `json:"omit_empty" dc:"是否可控"`
|
||||
}
|
||||
|
||||
@@ -56,44 +57,18 @@ func ParseStructField(field reflect.StructField) *StructFieldInfo {
|
||||
// 解析示例值
|
||||
info.Example = util.ParseStructFieldTag.GetExampleValue(field)
|
||||
// 解析验证规则
|
||||
if required := field.Tag.Get("required"); required == "true" {
|
||||
info.Required = true
|
||||
}
|
||||
|
||||
if min := field.Tag.Get("min"); min != "" {
|
||||
if val, err := strconv.ParseFloat(min, 64); err == nil {
|
||||
info.Min = &val
|
||||
}
|
||||
}
|
||||
|
||||
if max := field.Tag.Get("max"); max != "" {
|
||||
if val, err := strconv.ParseFloat(max, 64); err == nil {
|
||||
info.Max = &val
|
||||
}
|
||||
}
|
||||
|
||||
if minLen := field.Tag.Get("minLength"); minLen != "" {
|
||||
if val, err := strconv.ParseUint(minLen, 10, 64); err == nil {
|
||||
info.MinLength = &val
|
||||
}
|
||||
}
|
||||
|
||||
if maxLen := field.Tag.Get("maxLength"); maxLen != "" {
|
||||
if val, err := strconv.ParseUint(maxLen, 10, 64); err == nil {
|
||||
info.MaxLength = &val
|
||||
}
|
||||
}
|
||||
|
||||
if pattern := field.Tag.Get("pattern"); pattern != "" {
|
||||
info.Pattern = pattern
|
||||
}
|
||||
|
||||
if format := field.Tag.Get("format"); format != "" {
|
||||
info.Format = format
|
||||
}
|
||||
validateRule := util.ParseValidateRule(field.Type, util.ParseStructFieldTag.GetValidateRule(field))
|
||||
info.Required = validateRule.Required
|
||||
info.Min = validateRule.Min
|
||||
info.Max = validateRule.Max
|
||||
info.MinLength = validateRule.Min
|
||||
info.MaxLength = validateRule.Max
|
||||
info.Pattern = validateRule.Regexp
|
||||
info.Format = field.Type.String()
|
||||
|
||||
// 解析枚举值
|
||||
info.Enum = util.ParseStructFieldTag.EnumDescription(field)
|
||||
info.Enum = validateRule.Oneof
|
||||
info.EnumDesc = util.ParseStructFieldTag.EnumDescription(field)
|
||||
|
||||
return info
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user