Browse Source

add 手机号校验

18339543638 3 năm trước cách đây
mục cha
commit
1f2ff1db90

+ 44 - 0
nb-core/src/main/java/com/nb/core/annotation/Phone.java

@@ -0,0 +1,44 @@
+package com.nb.core.annotation;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import javax.validation.ReportAsSingleViolation;
+import javax.validation.constraints.Null;
+import javax.validation.constraints.Pattern;
+
+import org.hibernate.validator.constraints.CompositionType;
+import org.hibernate.validator.constraints.ConstraintComposition;
+import org.hibernate.validator.constraints.Length;
+
+/**
+ * 验证手机号,空和正确的手机号都能验证通过<br/>
+ * 正确的手机号由11位数字组成,第一位为1
+ * 第二位为 3、4、5、7、8
+ * 
+ */
+@ConstraintComposition(CompositionType.OR)
+@Pattern(regexp = "1[3|4|5|7|8][0-9]\\d{8}")
+@Null
+@Length(min = 0, max = 0)
+@Documented
+@Constraint(validatedBy = {})
+@Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+@ReportAsSingleViolation
+public @interface Phone {
+    String message() default "手机号校验错误";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}

+ 2 - 0
nb-service-api/app-doctor-api/src/main/java/com/nb/app/doctor/api/entity/AppDoctorUserEntity.java

@@ -3,6 +3,7 @@ package com.nb.app.doctor.api.entity;
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.nb.common.config.mybatisplus.handler.TenantNameHandler;
+import com.nb.core.annotation.Phone;
 import com.nb.core.entity.TenantGenericEntity;
 import com.nb.core.enums.SexEnum;
 import com.nb.core.enums.StatusEnum;
@@ -28,6 +29,7 @@ public class AppDoctorUserEntity extends TenantGenericEntity<String,String> {
     @ApiModelProperty(value = "用户名,用户名不得超过32个字节")
     @Length(max = 32,message = "用户名不得超过32个字节",groups = {Insert.class,Update.class})
     @TableField(updateStrategy = FieldStrategy.NEVER)
+    @Phone(groups = Insert.class)
     private String username;
 
     @ApiModelProperty(value = "密码,密码不得超过32位")

+ 4 - 0
nb-service/app-assistant/src/main/java/com/nb/app/assistant/auth/AssistantPhoneGranter.java

@@ -1,5 +1,6 @@
 package com.nb.app.assistant.auth;
 
+import cn.hutool.core.util.PhoneUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@@ -45,6 +46,9 @@ public class AssistantPhoneGranter implements IAuthGranter {
 
     @Override
     public LoginUser grant(TokenParameter source) {
+        if (!PhoneUtil.isPhone(source.getUsername())) {
+            throw new CustomException("手机号校验失败");
+        }
         if (StrUtil.isBlank(source.getUsername())) {
             throw new CustomException("手机号不能为空");
         }

+ 3 - 0
nb-service/app-assistant/src/main/java/com/nb/app/assistant/controller/vo/CaptureVo.java

@@ -1,6 +1,7 @@
 package com.nb.app.assistant.controller.vo;
 
 import com.nb.app.assistant.enums.CaptchaEnum;
+import com.nb.core.annotation.Phone;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,6 +21,8 @@ public class CaptureVo {
     @ApiModelProperty(value = "验证码用途",example = "0",allowableValues = "0、短信验证码",required = true)
     @NotNull(message = "验证码用途不能为空")
     private CaptchaEnum type;
+
     @ApiModelProperty(value = "手机号",required = true)
+    @Phone
     private String phone;
 }