96 lines
3.4 KiB
Go
96 lines
3.4 KiB
Go
package core
|
||
|
||
import (
|
||
"github.com/go-playground/locales/zh"
|
||
ut "github.com/go-playground/universal-translator"
|
||
"github.com/go-playground/validator/v10"
|
||
zhTranslations "github.com/go-playground/validator/v10/translations/zh"
|
||
"hospital-open-api/global"
|
||
"hospital-open-api/utils"
|
||
"reflect"
|
||
)
|
||
|
||
// Validator 验证器
|
||
func Validator() {
|
||
chzh := zh.New()
|
||
uni := ut.New(chzh, chzh)
|
||
global.Trans, _ = uni.GetTranslator("zh")
|
||
|
||
global.Validate = validator.New()
|
||
|
||
// 通过label标签返回自定义错误内容
|
||
global.Validate.RegisterTagNameFunc(func(field reflect.StructField) string {
|
||
label := field.Tag.Get("label")
|
||
if label == "" {
|
||
return field.Name
|
||
}
|
||
return label
|
||
})
|
||
_ = zhTranslations.RegisterDefaultTranslations(global.Validate, global.Trans)
|
||
// 注册自定义函数和标签
|
||
// 手机号验证
|
||
_ = global.Validate.RegisterValidation("Mobile", mobile) // 注册自定义函数,前一个参数是struct里tag自定义,后一个参数是自定义的函数
|
||
|
||
// 自定义required错误内容
|
||
_ = global.Validate.RegisterTranslation("required", global.Trans, func(ut ut.Translator) error {
|
||
return ut.Add("required", "{0}为必填字段!", false) // see universal-translator for details
|
||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||
t, _ := ut.T("required", fe.Field())
|
||
return t
|
||
})
|
||
|
||
// 自定义max错误内容
|
||
_ = global.Validate.RegisterTranslation("max", global.Trans, func(ut ut.Translator) error {
|
||
return ut.Add("max", "{0}超出最大长度", false) // see universal-translator for details
|
||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||
t, _ := ut.T("max", fe.Field())
|
||
return t
|
||
})
|
||
|
||
// 自定义min错误内容
|
||
_ = global.Validate.RegisterTranslation("min", global.Trans, func(ut ut.Translator) error {
|
||
return ut.Add("min", "{0}超出最小长度", false) // see universal-translator for details
|
||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||
t, _ := ut.T("min", fe.Field())
|
||
return t
|
||
})
|
||
|
||
// 自定义lt错误内容
|
||
_ = global.Validate.RegisterTranslation("lt", global.Trans, func(ut ut.Translator) error {
|
||
return ut.Add("lt", "{0}超出最大值", false) // see universal-translator for details
|
||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||
t, _ := ut.T("lt", fe.Field())
|
||
return t
|
||
})
|
||
|
||
// 自定义min错误内容
|
||
_ = global.Validate.RegisterTranslation("gt", global.Trans, func(ut ut.Translator) error {
|
||
return ut.Add("gt", "{0}不满足最小值", false) // see universal-translator for details
|
||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||
t, _ := ut.T("gt", fe.Field())
|
||
return t
|
||
})
|
||
|
||
// 自定义email错误内容
|
||
_ = global.Validate.RegisterTranslation("email", global.Trans, func(ut ut.Translator) error {
|
||
return ut.Add("email", "{0}邮件格式错误", false) // see universal-translator for details
|
||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||
t, _ := ut.T("email", fe.Field())
|
||
return t
|
||
})
|
||
|
||
// 自定义mobile错误内容
|
||
_ = global.Validate.RegisterTranslation("Mobile", global.Trans, func(ut ut.Translator) error {
|
||
return ut.Add("mobile", "手机号格式错误", false) // see universal-translator for details
|
||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||
t, _ := ut.T("mobile", fe.Field())
|
||
return t
|
||
})
|
||
|
||
}
|
||
|
||
// 自定义手机号验证
|
||
func mobile(fl validator.FieldLevel) bool {
|
||
return utils.RegexpMobile(fl.Field().String())
|
||
}
|