From 55502d1c28946ab5fa1786921728f8498af56f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 24 Jan 2025 11:57:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E9=AA=8C=E8=AF=81=E8=A1=A8=E8=BE=BE=E5=BC=8F=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=A7=84=E5=88=99=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v10/abstract/validate_rule.go | 3 +-- v10/default.go | 32 ++++++++++++++++++++++++++++++++ v10/init.go | 15 +++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/v10/abstract/validate_rule.go b/v10/abstract/validate_rule.go index 1ae5cc6..f88f5cc 100644 --- a/v10/abstract/validate_rule.go +++ b/v10/abstract/validate_rule.go @@ -9,7 +9,6 @@ package abstract import ( "git.zhangdeman.cn/gateway/validator/v10/define" - "git.zhangdeman.cn/zhangdeman/consts" ) // IValidateRuleGenerateFunc 生成校验规则的方法约束 @@ -33,4 +32,4 @@ type IValidateRuleGenerateFunc func(ruleConfig define.GenerateRuleExpressConfig) // Author : go_developer@163.com<白茶清欢> // // Date : 11:16 2025/1/24 -type IFieldValidateRuleGenerateFunc func(validateRule consts.ValidatorRule, paramList ...any) (express string, err error) +type IFieldValidateRuleGenerateFunc func(fieldValidateRule define.FieldValidateGenerateConfig) (express string, err error) diff --git a/v10/default.go b/v10/default.go index 5a4b8dc..de8f740 100644 --- a/v10/default.go +++ b/v10/default.go @@ -33,3 +33,35 @@ func DefaultValidateRuleGenerateFunc(validateRule define.GenerateRuleExpressConf } return ruleConfig.ValidatorRule.String() + "=" + strings.Join(paramStrList, " "), nil } + +// DefaultFieldValidateRuleGenerateFunc 字段验证表达式生成 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 11:44 2025/1/24 +func DefaultFieldValidateRuleGenerateFunc(fieldValidateRule define.FieldValidateGenerateConfig) (string, error) { + if len(fieldValidateRule.RuleGroup) == 0 && len(fieldValidateRule.RuleSimple.Rule.String()) == 0 { + return "", errors.New("rule group and rule simple all empty") + } + if len(fieldValidateRule.RuleGroup) == 0 { + // note: 当 fieldValidateRule.RuleGroup 不为空时, 会忽略 fieldValidateRule.RuleSimple 配置 + fieldValidateRule.RuleGroup = [][]define.GenerateRuleExpressConfig{ + []define.GenerateRuleExpressConfig{ + fieldValidateRule.RuleSimple, + }, + } + } + finalExpressList := make([]string, 0) + for _, itemGroupList := range fieldValidateRule.RuleGroup { + expressList := make([]string, 0) + for _, itemRule := range itemGroupList { + if fieldExpress, err := validatorRuleExpressGenerateFunc(itemRule); nil != err { + return "", err + } else { + expressList = append(expressList, fieldExpress) + } + } + finalExpressList = append(finalExpressList, strings.Join(expressList, ",")) + } + return strings.Join(finalExpressList, "|"), nil +} diff --git a/v10/init.go b/v10/init.go index d71d554..418ae36 100644 --- a/v10/init.go +++ b/v10/init.go @@ -12,6 +12,9 @@ import "git.zhangdeman.cn/gateway/validator/v10/abstract" // validatorRuleExpressGenerateFunc 验证规则表达式生成方法 var validatorRuleExpressGenerateFunc abstract.IValidateRuleGenerateFunc = DefaultValidateRuleGenerateFunc +// validatorRuleExpressGenerateFunc 字段验证规则生成默认表达式 +var fieldValidatorRuleExpressGenerateFunc abstract.IFieldValidateRuleGenerateFunc = DefaultFieldValidateRuleGenerateFunc + // SetValidatorRuleExpressGenerateFunc 使用自定义的验证规则表达式函数覆盖默认的函数 // // Author : go_developer@163.com<白茶清欢> @@ -23,3 +26,15 @@ func SetValidatorRuleExpressGenerateFunc(generateFunc abstract.IValidateRuleGene } validatorRuleExpressGenerateFunc = generateFunc } + +// SetFieldValidatorRuleExpressGenerateFunc 字段默认表达式生成规则 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 11:56 2025/1/24 +func SetFieldValidatorRuleExpressGenerateFunc(generateFunc abstract.IFieldValidateRuleGenerateFunc) { + if nil == generateFunc { + return + } + fieldValidatorRuleExpressGenerateFunc = generateFunc +}