表达式生成验证规则, 支持参数数量验证
This commit is contained in:
		@ -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))
 | 
			
		||||
 | 
			
		||||
@ -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"` // 规则验证的参数列表
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user