diff --git a/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/MobileValidator.java b/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/MobileValidator.java index be6e9204..c5c411da 100644 --- a/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/MobileValidator.java +++ b/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/MobileValidator.java @@ -23,6 +23,10 @@ import jakarta.validation.ConstraintValidatorContext; /** * 手机号校验器 * + *

+ * 校验中国大陆手机号码 + *

+ * * @author Charles7c * @since 2.10.0 */ diff --git a/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/Phone.java b/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/Phone.java new file mode 100644 index 00000000..b64167fb --- /dev/null +++ b/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/Phone.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + *

+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.gnu.org/licenses/lgpl.html + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.continew.starter.validation.constraints; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.*; + +/** + * 手机号校验注解 + * + *

+ * 校验座机号码、手机号码(中国大陆)、手机号码(中国香港)、手机号码(中国台湾)、手机号码(中国澳门) + * {@code @Phone(message = "手机号格式不正确")}
+ *

+ * + * @author Charles7c + * @since 2.13.0 + */ +@Documented +@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = PhoneValidator.class) +public @interface Phone { + + /** + * 提示消息 + * + * @return 提示消息 + */ + String message() default "手机号格式不正确"; + + /** + * 分组 + * + * @return 分组 + */ + Class[] groups() default {}; + + /** + * 负载 + * + * @return 负载 + */ + Class[] payload() default {}; +} diff --git a/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/PhoneValidator.java b/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/PhoneValidator.java new file mode 100644 index 00000000..60f31799 --- /dev/null +++ b/continew-starter-validation/src/main/java/top/continew/starter/validation/constraints/PhoneValidator.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + *

+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.gnu.org/licenses/lgpl.html + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.continew.starter.validation.constraints; + +import cn.hutool.core.util.PhoneUtil; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + +/** + * 手机号校验器 + * + *

+ * 校验座机号码、手机号码(中国大陆)、手机号码(中国香港)、手机号码(中国台湾)、手机号码(中国澳门) + *

+ * + * @author Charles7c + * @since 2.13.0 + */ +public class PhoneValidator implements ConstraintValidator { + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + return PhoneUtil.isPhone(value); + } +}