""" 管理员模型 """ from datetime import datetime from werkzeug.security import generate_password_hash, check_password_hash from config.database import db class AdminUser(db.Model): __tablename__ = 'admin_users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True, nullable=False) password_hash = db.Column(db.String(255), nullable=False) real_name = db.Column(db.String(50)) email = db.Column(db.String(100)) phone = db.Column(db.String(20)) role = db.Column(db.String(20), default='admin') status = db.Column(db.Integer, default=1) # 0-禁用 1-正常 last_login_at = db.Column(db.DateTime) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) def set_password(self, password): """设置密码""" self.password_hash = generate_password_hash(password) def check_password(self, password): """验证密码""" return check_password_hash(self.password_hash, password) def update_last_login(self): """更新最后登录时间""" self.last_login_at = datetime.utcnow() db.session.commit() def to_dict(self): """转换为字典""" return { 'id': self.id, 'username': self.username, 'real_name': self.real_name, 'email': self.email, 'phone': self.phone, 'role': self.role, 'status': self.status, 'last_login_at': self.last_login_at.isoformat() if self.last_login_at else None, 'created_at': self.created_at.isoformat() if self.created_at else None } def __repr__(self): return f''