zoujiajian 3 роки тому
батько
коміт
536c6bd362

+ 88 - 0
netflix-common/src/main/java/com/cyksj/common/util/ValidatorUtil.java

@@ -0,0 +1,88 @@
+package com.cyksj.common.util;
+
+import java.util.regex.Pattern;
+
+/**
+ * 正则校验
+ *
+ * @author valor
+ * @date 2018/10/8 01:25
+ */
+public class ValidatorUtil {
+
+    private ValidatorUtil() { }
+
+    /**
+     * 正则表达式:验证手机号(精确)
+     * <p>移动:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198</p>
+     * <p>联通:130、131、132、145、155、156、175、176、185、186、166</p>
+     * <p>电信:133、153、173、177、180、181、189、199</p>
+     * <p>全球星:1349</p>
+     * <p>虚拟运营商:170</p>
+     */
+    private static final Pattern P_MOBILE = Pattern.compile("(?:0|86|\\+86)?1[3456789]\\d{9}");
+
+    /**
+     * 正则表达式:验证身份证
+     */
+    private static final Pattern P_ID_CARD = Pattern.compile("^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9X]$");
+
+    /**
+     * 正则表达式: 中文名
+     */
+    private static final Pattern P_CHINESE_NAME = Pattern.compile("^([\\u4e00-\\u9fa5\\·]{2,16})$");
+
+    /**
+     * 正则表达式:数字
+     */
+    private static final Pattern P_NUM = Pattern.compile("^[0-9]\\d{9,29}$");
+
+    private static final Pattern EN_NUM = Pattern.compile("^[A-Za-z0-9]+$");
+
+    /**
+     * 校验手机号
+     *
+     * @param mobile
+     * @return 校验通过返回true,否则返回false
+     */
+    public static boolean isMobile(String mobile) {
+        return P_MOBILE.matcher(mobile).matches();
+    }
+
+    /**
+     * 校验身份证
+     *
+     * @param idCard
+     * @return 校验通过返回true,否则返回false
+     */
+    public static boolean isIDCard(String idCard) {
+        return P_ID_CARD.matcher(idCard).matches();
+    }
+
+    /**
+     * 校验中文名
+     *
+     * @param name
+     * @return 校验通过返回true,否则返回false
+     */
+    public static boolean isChineseName(String name) {
+        return P_CHINESE_NAME.matcher(name).matches();
+    }
+
+    /**
+     * 校验银行卡号
+     *
+     * @param id
+     * @return 校验通过返回true,否则返回false
+     */
+    public static boolean isNum(String id){
+        return P_NUM.matcher(id).matches();
+    }
+
+    /**
+     * 英文+数字
+     */
+    public static boolean isEnNum(String str){
+        return EN_NUM.matcher(str).matches();
+    }
+}

+ 4 - 0
netflix-web/src/main/java/com/cyksj/web/controller/user/DistributePopularizeController.java

@@ -13,6 +13,7 @@ import com.cyksj.common.annotation.NoSubmit;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.SmsUtil;
+import com.cyksj.common.util.ValidatorUtil;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GoodsDonMapper;
@@ -377,6 +378,9 @@ public class DistributePopularizeController {
 		if (StrUtil.isBlank(code)) {
 			throw BusinessRuntimeException.getInstance("专属推广优惠码不能为空");
 		}
+		if (!ValidatorUtil.isEnNum(code) || code.length() > 20) {
+			throw BusinessRuntimeException.getInstance("请输入英文数字组合的专属推广优惠码");
+		}
 		code = code.trim();
 		distributeService.bindPopularizeCode(userId, code);
 		return GatewayResponse.SUCCESS.newBuilder().toResult("设置成功");