fastapi-template/src/utils/common.py

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