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"` // 规则验证的参数列表 }