12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package public
- import (
- "errors"
- "github.com/gin-gonic/gin"
- ut "github.com/go-playground/universal-translator"
- "github.com/go-playground/validator/v10"
- "strings"
- )
- const (
- ValidatorKey = "ValidatorKey"
- TranslatorKey = "TranslatorKey"
- )
- func DefaultGetValidParams(c *gin.Context, params interface{}) error {
- if err := c.ShouldBind(params); err != nil {
- return err
- }
- //获取验证器
- valid, err := GetValidator(c)
- if err != nil {
- return err
- }
- //获取翻译器
- trans, err := GetTranslation(c)
- if err != nil {
- return err
- }
- err = valid.Struct(params)
- if err != nil {
- errs := err.(validator.ValidationErrors)
- sliceErrs := []string{}
- for _, e := range errs {
- sliceErrs = append(sliceErrs, e.Translate(trans))
- }
- return errors.New(strings.Join(sliceErrs, ","))
- }
- return nil
- }
- func GetValidator(c *gin.Context) (*validator.Validate, error) {
- val, ok := c.Get(ValidatorKey)
- if !ok {
- return nil, errors.New("未设置验证器")
- }
- validator, ok := val.(*validator.Validate)
- if !ok {
- return nil, errors.New("获取验证器失败")
- }
- return validator, nil
- }
- func GetTranslation(c *gin.Context) (ut.Translator, error) {
- trans, ok := c.Get(TranslatorKey)
- if !ok {
- return nil, errors.New("未设置翻译器")
- }
- translator, ok := trans.(ut.Translator)
- if !ok {
- return nil, errors.New("获取翻译器失败")
- }
- return translator, nil
- }
|