From cdbf5376a73c66148f4ec5bfe2eef6dc4645bbed 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 15:28:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E7=94=9F=E6=88=90?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E8=A7=84=E5=88=99,=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=95=B0=E9=87=8F=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v10/default.go | 13 ++++++++++++- v10/define/field_validate.go | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/v10/default.go b/v10/default.go index de8f740..63fe1b5 100644 --- a/v10/default.go +++ b/v10/default.go @@ -24,9 +24,20 @@ func DefaultValidateRuleGenerateFunc(validateRule define.GenerateRuleExpressConf if len(ruleConfig.ValidatorRule.String()) == 0 { return "", errors.New("validate rule is empty") } - if len(validateRule.ParamList) == 0 { + if ruleConfig.WithoutParam { + // 验证规则不需要任何参数, 舍弃参数 return ruleConfig.ValidatorRule.String(), nil } + // 验证参数数量 + if ruleConfig.MinParamCnt > 0 && len(validateRule.ParamList) < ruleConfig.MinParamCnt { + return "", errors.New(ruleConfig.ValidatorRule.String() + " : validate rule param count is less than min param cnt -> " + fmt.Sprintf("%v", ruleConfig.MinParamCnt)) + } + if ruleConfig.MaxParamCnt > 0 && len(validateRule.ParamList) > ruleConfig.MinParamCnt { + return "", errors.New(ruleConfig.ValidatorRule.String() + " : validate rule param count is more than max param cnt -> " + fmt.Sprintf("%v", ruleConfig.MaxParamCnt)) + } + if ruleConfig.ParamCntMustEven && len(validateRule.ParamList)%2 != 0 { + return "", errors.New(ruleConfig.ValidatorRule.String() + " : validate rule param count should be even") + } paramStrList := make([]string, 0) for _, param := range validateRule.ParamList { paramStrList = append(paramStrList, fmt.Sprintf("%v", param)) diff --git a/v10/define/field_validate.go b/v10/define/field_validate.go index 0d93c4b..fc0a076 100644 --- a/v10/define/field_validate.go +++ b/v10/define/field_validate.go @@ -26,6 +26,6 @@ type FieldValidateGenerateConfig struct { // // Date : 11:27 2025/1/24 type GenerateRuleExpressConfig struct { - Rule consts.ValidatorRule `json:"rule,omitempty"` // 条件配置 - ParamList []any `json:"param_list,omitempty"` // 规则验证的参数列表 + Rule *consts.ValidatorRule `json:"rule,omitempty"` // 条件配置 + ParamList []any `json:"param_list,omitempty"` // 规则验证的参数列表 }