66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
// 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
|
|
}
|