From 5e713b7fc244c3163ccf6765b7df08970ca41cc8 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Tue, 28 Sep 2021 10:02:53 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=96=B0=E5=A2=9E=E5=80=BC?= =?UTF-8?q?=E8=81=94=E5=8A=A8=E5=92=8C=E6=89=A9=E5=B1=95=E8=A6=86=E7=9B=96?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../validation/annotations/Money.java | 38 +++++++++++++++++++ .../validation/validators/MoneyValidator.java | 29 ++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 flyfish-common/src/main/java/com/flyfish/framework/validation/annotations/Money.java create mode 100644 flyfish-common/src/main/java/com/flyfish/framework/validation/validators/MoneyValidator.java diff --git a/flyfish-common/src/main/java/com/flyfish/framework/validation/annotations/Money.java b/flyfish-common/src/main/java/com/flyfish/framework/validation/annotations/Money.java new file mode 100644 index 0000000..2ae02fb --- /dev/null +++ b/flyfish-common/src/main/java/com/flyfish/framework/validation/annotations/Money.java @@ -0,0 +1,38 @@ +package com.flyfish.framework.validation.annotations; + +import com.flyfish.framework.validation.annotations.Money.List; +import com.flyfish.framework.validation.validators.MoneyValidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.Documented; +import java.lang.annotation.Repeatable; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER}) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = {MoneyValidator.class}) +@Repeatable(List.class) +public @interface Money { + + String message() default "不是合法的金额!"; + + //分组 + Class[] groups() default {}; + + //负载 + Class[] payload() default {}; + + //指定多个时使用 + @Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE}) + @Retention(RUNTIME) + @Documented + @interface List { + Money[] value(); + } +} diff --git a/flyfish-common/src/main/java/com/flyfish/framework/validation/validators/MoneyValidator.java b/flyfish-common/src/main/java/com/flyfish/framework/validation/validators/MoneyValidator.java new file mode 100644 index 0000000..8f855f8 --- /dev/null +++ b/flyfish-common/src/main/java/com/flyfish/framework/validation/validators/MoneyValidator.java @@ -0,0 +1,29 @@ +package com.flyfish.framework.validation.validators; + +import com.flyfish.framework.validation.annotations.Money; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * 金额验证器 + * @author wangyu + */ +public class MoneyValidator implements ConstraintValidator { + + /** + * Implements the validation logic. + * The state of {@code value} must not be altered. + *

+ * This method can be accessed concurrently, thread-safety must be ensured + * by the implementation. + * + * @param value object to validate + * @param context context in which the constraint is evaluated + * @return {@code false} if {@code value} does not pass the constraint + */ + @Override + public boolean isValid(Long value, ConstraintValidatorContext context) { + return value >= 9; + } +}