表单校验工具封装以及使用

This commit is contained in:
QM303176530
2020-05-08 23:17:20 +08:00
parent 098705e48e
commit 235c2a75a8
2 changed files with 60 additions and 8 deletions
+40 -3
View File
@@ -7,8 +7,45 @@ import (
"strings"
)
type Rules map[string][]string
// 非空 不能为其对应类型的0值
func NotEmpty() string {
return "notEmpty"
}
//小于入参(<) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
func Lt(mark string) string {
return "lt=" + mark
}
//小于等于入参(<=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
func Le(mark string) string {
return "le=" + mark
}
//等于入参(==) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
func Eq(mark string) string {
return "eq=" + mark
}
//不等于入参(!=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
func Ne(mark string) string {
return "ne=" + mark
}
//大于等于入参(>=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
func Ge(mark string) string {
return "ge=" + mark
}
//大于入参(>) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
func Gt(mark string) string {
return "gt=" + mark
}
// 校验方法 接收两个参数 入参实例,规则map
func Verify(st interface{}, roleMap map[string][]string) (err error) {
func Verify(st interface{}, roleMap Rules) (err error) {
compareMap := map[string]bool{
"lt": true,
"le": true,
@@ -33,13 +70,13 @@ func Verify(st interface{}, roleMap map[string][]string) (err error) {
if len(roleMap[tagVal.Name]) > 0 {
for _, v := range roleMap[tagVal.Name] {
switch {
case strings.Index(v, "isBlank") > -1:
case v == "notEmpty":
if isBlank(val) {
return errors.New(tagVal.Name + "值不能为空")
}
case compareMap[strings.Split(v, "=")[0]]:
if !compareVerify(val, v) {
return errors.New(tagVal.Name + "不在范围")
return errors.New(tagVal.Name + "长度或值不在合法范围," + v)
}
}
}