定义validator
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/annotation/IntegerList.java b/common/src/main/java/com/supwisdom/dlpay/api/annotation/IntegerList.java
new file mode 100644
index 0000000..8487906
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/annotation/IntegerList.java
@@ -0,0 +1,21 @@
+package com.supwisdom.dlpay.api.annotation;
+
+import com.supwisdom.dlpay.api.validator.StringListValidator;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.*;
+
+@Constraint(validatedBy = {StringListValidator.class})
+@Documented
+@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface IntegerList {
+  String message() default "{validator.message.integerlist}";
+
+  Class<?>[] groups() default {};
+
+  Class<? extends Payload>[] payload() default {};
+
+  String[] value();
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/annotation/StringList.java b/common/src/main/java/com/supwisdom/dlpay/api/annotation/StringList.java
new file mode 100644
index 0000000..2c608df
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/annotation/StringList.java
@@ -0,0 +1,21 @@
+package com.supwisdom.dlpay.api.annotation;
+
+import com.supwisdom.dlpay.api.validator.StringListValidator;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.*;
+
+@Constraint(validatedBy = {StringListValidator.class})
+@Documented
+@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface StringList {
+  String message() default "{validator.message.stringlist}";
+
+  Class<?>[] groups() default {};
+
+  Class<? extends Payload>[] payload() default {};
+
+  String[] value();
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java
index ffbd2a6..4fc1ae1 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java
@@ -7,6 +7,7 @@
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.Email;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
@@ -34,6 +35,7 @@
   @Sign
   private String mobile;
   @Sign
+  @Email(message = "Email 格式错误")
   private String email;
   @Sign
   private String address;
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/validator/IntegerListValidator.java b/common/src/main/java/com/supwisdom/dlpay/api/validator/IntegerListValidator.java
new file mode 100644
index 0000000..aec2cee
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/validator/IntegerListValidator.java
@@ -0,0 +1,27 @@
+package com.supwisdom.dlpay.api.validator;
+
+import com.supwisdom.dlpay.api.annotation.IntegerList;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.util.Arrays;
+
+public class IntegerListValidator implements ConstraintValidator<IntegerList, Integer> {
+
+  private Integer[] valueList;
+
+  @Override
+  public boolean isValid(Integer value, ConstraintValidatorContext context) {
+    if (Arrays.asList(valueList).contains(value))
+      return true;
+    return false;
+  }
+
+  @Override
+  public void initialize(IntegerList constraintAnnotation) {
+    valueList = new Integer[constraintAnnotation.value().length];
+    for (int i = 0; i < constraintAnnotation.value().length; i++) {
+      valueList[i] = Integer.parseInt(constraintAnnotation.value()[i]);
+    }
+  }
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/validator/StringListValidator.java b/common/src/main/java/com/supwisdom/dlpay/api/validator/StringListValidator.java
new file mode 100644
index 0000000..63f6299
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/validator/StringListValidator.java
@@ -0,0 +1,24 @@
+package com.supwisdom.dlpay.api.validator;
+
+import com.supwisdom.dlpay.api.annotation.StringList;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.util.Arrays;
+
+public class StringListValidator implements ConstraintValidator<StringList, String> {
+
+  private String[] valueList;
+
+  @Override
+  public boolean isValid(String value, ConstraintValidatorContext context) {
+    if (Arrays.asList(valueList).contains(value))
+      return true;
+    return false;
+  }
+
+  @Override
+  public void initialize(StringList constraintAnnotation) {
+    valueList = constraintAnnotation.value();
+  }
+}