// Package router ... // // Description : router ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2025-02-07 17:36 package router import ( "errors" "fmt" "github.com/go-playground/validator/v10" "reflect" "strings" ) // GetValidateErr 格式化错误信息 // // Author : go_developer@163.com<白茶清欢> // // Date : 22:19 2025/1/15 func GetValidateErr(obj any, rawErr error) error { if nil == rawErr { return nil } if nil == obj { return rawErr } var ( ok bool validationErrs validator.ValidationErrors errString []string field reflect.StructField ) if ok = errors.As(rawErr, &validationErrs); !ok { return rawErr } objType := reflect.TypeOf(obj) if objType.Kind() == reflect.Ptr { objType = objType.Elem() } for _, validationErr := range validationErrs { if field, ok = objType.FieldByName(validationErr.Field()); ok { if e := field.Tag.Get(defaultValidateErrTag); e != "" { errString = append(errString, fmt.Sprintf("%s: %s", field.Tag.Get("json"), e)) continue } else { errString = append(errString, fmt.Sprintf("%s: %v", field.Tag.Get("json"), validationErr.Value())) } } errString = append(errString, validationErr.Error()) } return errors.New(strings.Join(errString, "\n")) }