56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// 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"))
 | 
						|
}
 |