From 212f981b6ac423541101346f1d92d5b3a83939e2 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Thu, 4 Jul 2024 11:52:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E@Pattern=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=A0=A1=E9=AA=8C=E8=A3=85=E9=A5=B0=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotation/check_annotation.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ruoyi-fastapi-backend/module_admin/annotation/check_annotation.py b/ruoyi-fastapi-backend/module_admin/annotation/check_annotation.py index 7ae15e1..807e0bd 100644 --- a/ruoyi-fastapi-backend/module_admin/annotation/check_annotation.py +++ b/ruoyi-fastapi-backend/module_admin/annotation/check_annotation.py @@ -58,6 +58,34 @@ class NotBlank: return wrapper +class Pattern: + """ + 字段正则校验装饰器 + """ + def __init__(self, field_name: str, regexp: str, message: Optional[str] = None): + """ + 字段正则校验装饰器 + :param field_name: 需要校验的字段名称 + :param regexp: 正则表达式 + :param message: 校验失败的提示信息 + :return: + """ + self.field_name = field_name + self.regexp = regexp + self.message = message + + def __call__(self, func): + @wraps(func) + def wrapper(*args, **kwargs): + check_model = args[0] + if isinstance(check_model, BaseModel): + field_value = getattr(check_model, self.field_name) + if isinstance(field_value, str) and not re.match(self.regexp, field_value): + raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}格式不正确') + return func(*args, **kwargs) + return wrapper + + class Size: """ 字段大小校验装饰器