56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
import random
|
|
import re
|
|
from datetime import datetime
|
|
|
|
from passlib.context import CryptContext
|
|
|
|
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
|
|
|
|
|
def verify_password(plain_password, hashed_password):
|
|
return pwd_context.verify(plain_password, hashed_password)
|
|
|
|
def get_password_hash(password):
|
|
return pwd_context.hash(password)
|
|
|
|
def get_total_pages(total, limit):
|
|
"""
|
|
获取总页数
|
|
:param total:
|
|
:param limit:
|
|
:return:
|
|
"""
|
|
s = total / limit if total % limit == 0 else total / limit + 1
|
|
return round(s)
|
|
|
|
def get_page_result(page, limit, rows, data):
|
|
"""获取分页结果
|
|
page 查询页
|
|
limit 每页大小
|
|
rows 总条数
|
|
data 当前页数据
|
|
"""
|
|
return {"totalRecords": rows, "totalPages": get_total_pages(rows, limit), "currentPage": page,
|
|
"items": data} # data
|
|
|
|
def create_batch():
|
|
"""创建批号"""
|
|
return datetime.now().strftime('%Y%m%d%H%M%S') + str(random.random())[-6:]
|
|
|
|
def validate_email(email: str) -> bool:
|
|
"""验证邮箱"""
|
|
pattern = r"[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)"
|
|
if re.match(pattern, email) is not None:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def validate_phone_number(phone_number: str) -> bool:
|
|
"""验证手机号"""
|
|
pattern = r"1[356789]\d{9}"
|
|
if re.match(pattern, phone_number) is not None:
|
|
return True
|
|
else:
|
|
return False
|
|
|