From 17184dd829bc45d02c029d8bfb5595e1d3760d43 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Wed, 29 Sep 2021 16:25:04 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E9=AA=8C=E8=AF=81=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E8=BF=9B=E4=B8=80=E6=AD=A5=E5=AE=8C=E5=96=84=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=89=8D=E5=90=8E=E7=AB=AF=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/beans/enums/ValidationCandidate.java | 13 +++++++++++++ .../framework/beans/meta/BeanValidation.java | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/flyfish-web/src/main/java/com/flyfish/framework/beans/enums/ValidationCandidate.java b/flyfish-web/src/main/java/com/flyfish/framework/beans/enums/ValidationCandidate.java index 7879220..a3d141a 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/beans/enums/ValidationCandidate.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/beans/enums/ValidationCandidate.java @@ -1,5 +1,6 @@ package com.flyfish.framework.beans.enums; +import com.flyfish.framework.annotations.ConditionOn; import com.flyfish.framework.beans.meta.BeanPropertyType; import com.flyfish.framework.beans.meta.BeanValidation; import com.flyfish.framework.validation.annotations.IdCard; @@ -7,6 +8,8 @@ import com.flyfish.framework.validation.annotations.Phone; import com.flyfish.framework.validation.annotations.UniqueField; import com.flyfish.framework.validation.enums.PhoneType; import lombok.Getter; +import lombok.val; +import org.apache.commons.lang3.ArrayUtils; import org.hibernate.validator.constraints.Currency; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Range; @@ -18,6 +21,7 @@ import javax.validation.constraints.*; import java.lang.annotation.Annotation; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.function.BiConsumer; import java.util.stream.Collectors; @@ -111,6 +115,15 @@ public enum ValidationCandidate { BeanValidation validation = new BeanValidation() .setType(type.getValidType()) .setMessage(annotation.getString("message")); + Class[] groups = annotation.getClassArray("groups"); + // 存在分组情况,为validation添加分组 + if (ArrayUtils.isNotEmpty(groups)) { + val conditions = Arrays.stream(groups).map(clazz -> clazz.getAnnotation(ConditionOn.class)) + .filter(Objects::nonNull) + .map(ConditionOn::expression) + .collect(Collectors.toList()); + validation.setConditions(conditions); + } mapper.accept(annotation, validation); return validation; } diff --git a/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanValidation.java b/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanValidation.java index 1118e30..752c5a1 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanValidation.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanValidation.java @@ -4,6 +4,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -40,6 +41,9 @@ public class BeanValidation { // 内建的验证器 private String validator; + // 生效条件集合 + private List conditions; + // 额外的选项 private Map properties = new HashMap<>();