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; + } +}