You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from sqlalchemy import func
from app.models import db
from werkzeug.security import generate_password_hash, check_password_hash
def isAvailable(account):
#从数据库中查找第一个匹配 account 的 Passenger 记录。
Passenger.query.filter_by(account=account).first()
#乘客实体类
class Passenger(db.Model):
__tablename__ = 'passenger'
#主键
id = db.Column(db.Integer, primary_key=True)
#姓名
name = db.Column(db.String(120))
#账号
account = db.Column(db.String(120), unique=True, nullable=False, index=True)
#密码
password_digest = db.Column(db.String(2000), nullable=False)
#身份证号码
id_card_no = db.Column(db.String(120))
#手机号
mobile_no = db.Column(db.String(120))
#银行卡号
bank_card_no = db.Column(db.String(120))
#账号状态
state = db.Column(db.Integer, default=0)
#成员类型
member_type = db.Column(db.Integer)
#上次登录时间
last_login_time = db.Column(db.DateTime)
#创建时间
created_at = db.Column(db.DateTime, default=func.now())
#更新时间
updated_at = db.Column(db.DateTime, default=func.now())
def check_password(self, password):
return check_password_hash(self.password_digest, password) # 验证密码
#验证账号和密码
@classmethod
def verifyPassenger(cls, account, password):
passenger = cls.query.filter_by(account=account).first()
if passenger and passenger.check_password(password):
print(1)
return passenger
return None
#注册成功,存储乘客信息,即添加操作
@classmethod
def create(cls, data):
passenger = cls(
account=data.get('account'),
password_digest=generate_password_hash(data.get('password')),
name=data.get('name'),
id_card_no=data.get('idCardNo'),
mobile_no=data.get('mobileNo'),
bank_card_no=data.get('bankCard'),
)
db.session.add(passenger)
db.session.commit()
return passenger
#根据乘客id删除数据即删除操作
@classmethod
def destroy(cls, passenger_id):
passenger = cls.query.get(passenger_id)
if passenger:
db.session.delete(passenger)
db.session.commit()
return True
return False