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.
59 lines
1.9 KiB
59 lines
1.9 KiB
from sqlalchemy import func
|
|
|
|
from app.models import db
|
|
from werkzeug.security import generate_password_hash, check_password_hash
|
|
|
|
|
|
def isAvailable(account):
|
|
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):
|
|
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
|
|
|
|
@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
|