You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
909 B
49 lines
909 B
package dapi
|
|
|
|
import (
|
|
"github.com/go-playground/validator/v10"
|
|
"reflect"
|
|
"strings"
|
|
)
|
|
|
|
type ValidError struct {
|
|
Key string
|
|
Message string
|
|
}
|
|
|
|
type ValidErrors []*ValidError
|
|
|
|
func (v *ValidError) Error() string {
|
|
return v.Message
|
|
}
|
|
|
|
func (v ValidErrors) Error() string {
|
|
return strings.Join(v.Errors(), ",")
|
|
}
|
|
|
|
func (v ValidErrors) Errors() []string {
|
|
var errs []string
|
|
for _, err := range v {
|
|
errs = append(errs, err.Error())
|
|
}
|
|
|
|
return errs
|
|
}
|
|
|
|
func ValidateField(usr interface{}, f func(typeOfCat reflect.Type, fieldName string)) {
|
|
|
|
validate := validator.New()
|
|
typeOfCat := reflect.TypeOf(usr)
|
|
if typeOfCat.Kind() == reflect.Ptr {
|
|
//err = err.Elem
|
|
typeOfCat = typeOfCat.Elem()
|
|
}
|
|
err := validate.Struct(usr)
|
|
if err != nil {
|
|
for _, err := range err.(validator.ValidationErrors) {
|
|
fieldName := err.Field() //获取是哪个字段不合乎格局
|
|
f(typeOfCat, fieldName)
|
|
}
|
|
}
|
|
}
|