增加单个数据、map数据验证
This commit is contained in:
@ -7,7 +7,10 @@
|
||||
// Date : 2025-01-24 11:09
|
||||
package v10
|
||||
|
||||
import "git.zhangdeman.cn/gateway/validator/v10/abstract"
|
||||
import (
|
||||
"git.zhangdeman.cn/gateway/validator/v10/abstract"
|
||||
openValidator "github.com/go-playground/validator/v10"
|
||||
)
|
||||
|
||||
// validatorRuleExpressGenerateFunc 验证规则表达式生成方法
|
||||
var validatorRuleExpressGenerateFunc abstract.IValidateRuleGenerateFunc = DefaultValidateRuleGenerateFunc
|
||||
@ -15,6 +18,9 @@ var validatorRuleExpressGenerateFunc abstract.IValidateRuleGenerateFunc = Defaul
|
||||
// validatorRuleExpressGenerateFunc 字段验证规则生成默认表达式
|
||||
var fieldValidatorRuleExpressGenerateFunc abstract.IFieldValidateRuleGenerateFunc = DefaultFieldValidateRuleGenerateFunc
|
||||
|
||||
// 验证器实例
|
||||
var validateInstance = openValidator.New()
|
||||
|
||||
// SetValidatorRuleExpressGenerateFunc 使用自定义的验证规则表达式函数覆盖默认的函数
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
|
65
v10/validate_value.go
Normal file
65
v10/validate_value.go
Normal file
@ -0,0 +1,65 @@
|
||||
// Package v10 ...
|
||||
//
|
||||
// Description : v10 ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2025-01-24 16:42
|
||||
package v10
|
||||
|
||||
import (
|
||||
"git.zhangdeman.cn/gateway/validator/v10/define"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// ValidateVar 验证任意变量值
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 16:44 2025/1/24
|
||||
func ValidateVar(inputVal any, ruleConfig define.FieldValidateGenerateConfig) error {
|
||||
validateRuleExpress, err := fieldValidatorRuleExpressGenerateFunc(ruleConfig)
|
||||
if nil != err {
|
||||
return err
|
||||
}
|
||||
if err = validateInstance.Var(inputVal, validateRuleExpress); nil != err {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ValidateMap 验证Map数据
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 16:56 2025/1/24
|
||||
//
|
||||
// 参数:
|
||||
// - inputMap: 输入的map数据
|
||||
// - ruleConfigMap: map数据每一项的验证规则
|
||||
//
|
||||
// 返回值:
|
||||
// - 验证结果表, key为验证的字段, val为验证的错误信息, 返回异常表长度为 0, 说明验证通过
|
||||
func ValidateMap(inputMap map[string]any, ruleConfigMap map[string]define.FieldValidateGenerateConfig) map[string]error {
|
||||
errTable := map[string]error{}
|
||||
lock := &sync.RWMutex{}
|
||||
wg := &sync.WaitGroup{}
|
||||
wg.Add(len(inputMap))
|
||||
for mapKey, mapVal := range inputMap {
|
||||
go func(key string, val any) {
|
||||
defer wg.Done()
|
||||
if _, exist := ruleConfigMap[mapKey]; !exist {
|
||||
// 未传入验证规则, 不验证
|
||||
return
|
||||
}
|
||||
if err := ValidateVar(val, ruleConfigMap[key]); nil != err {
|
||||
// 验证失败
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
errTable[key] = err
|
||||
}
|
||||
}(mapKey, mapVal)
|
||||
}
|
||||
wg.Wait()
|
||||
return errTable
|
||||
}
|
Reference in New Issue
Block a user