diff --git a/xiaoyi-auth/pom.xml b/xiaoyi-auth/pom.xml index 4c3ae0d..aaca05d 100644 --- a/xiaoyi-auth/pom.xml +++ b/xiaoyi-auth/pom.xml @@ -88,6 +88,10 @@ com.github.ulisesbocchio jasypt-spring-boot-starter + + org.springframework.boot + spring-boot-starter-actuator + diff --git a/xiaoyi-auth/src/main/java/top/crushtj/xiaoyishu/auth/model/vo/verificationcode/SendVerificationCodeReqVO.java b/xiaoyi-auth/src/main/java/top/crushtj/xiaoyishu/auth/model/vo/verificationcode/SendVerificationCodeReqVO.java index 19f022b..db3e21d 100644 --- a/xiaoyi-auth/src/main/java/top/crushtj/xiaoyishu/auth/model/vo/verificationcode/SendVerificationCodeReqVO.java +++ b/xiaoyi-auth/src/main/java/top/crushtj/xiaoyishu/auth/model/vo/verificationcode/SendVerificationCodeReqVO.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import top.crushtj.framework.common.validator.PhoneNumber; /** * @@ -25,6 +26,7 @@ public class SendVerificationCodeReqVO { * 手机号 */ @NotBlank(message = "手机号不能为空") + @PhoneNumber private String phoneNumber; } diff --git a/xiaoyi-framework/xiaoyi-common/src/main/java/top/crushtj/framework/common/validator/PhoneNumber.java b/xiaoyi-framework/xiaoyi-common/src/main/java/top/crushtj/framework/common/validator/PhoneNumber.java new file mode 100644 index 0000000..ab947fa --- /dev/null +++ b/xiaoyi-framework/xiaoyi-common/src/main/java/top/crushtj/framework/common/validator/PhoneNumber.java @@ -0,0 +1,28 @@ +package top.crushtj.framework.common.validator; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ayi + * @version V1.0 + * @title PhoneNumber + * @date 2026/01/18 + * @description 手机号验证 + */ + +@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER }) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = PhoneNumberValidator.class) +public @interface PhoneNumber { + String message() default "手机号格式不正确, 需为 11 位数字"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/xiaoyi-framework/xiaoyi-common/src/main/java/top/crushtj/framework/common/validator/PhoneNumberValidator.java b/xiaoyi-framework/xiaoyi-common/src/main/java/top/crushtj/framework/common/validator/PhoneNumberValidator.java new file mode 100644 index 0000000..c198bf5 --- /dev/null +++ b/xiaoyi-framework/xiaoyi-common/src/main/java/top/crushtj/framework/common/validator/PhoneNumberValidator.java @@ -0,0 +1,25 @@ +package top.crushtj.framework.common.validator; + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + +/** + * @author ayi + * @version V1.0 + * @title PhoneNumberValidator + * @date 2026/01/18 13:17 + * @description 手机号验证器 + */ + +public class PhoneNumberValidator implements ConstraintValidator { + @Override + public boolean isValid(String phoneNumber, ConstraintValidatorContext context) { + // 校验逻辑:正则表达式判断手机号是否为 11 位数字 + return phoneNumber != null && phoneNumber.matches("\\d{11}"); + } + + @Override + public void initialize(PhoneNumber constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + } +}