"""系统域模型:用户、角色、菜单、操作日志""" import uuid from datetime import datetime from sqlalchemy import Column, DateTime, Integer, String, Text from app.core.database import Base def _uuid() -> str: return str(uuid.uuid4()) class SysUser(Base): __tablename__ = "sys_user" id = Column(String(64), primary_key=True, default=_uuid) username = Column(String(64), nullable=False, unique=True, index=True) password_hash = Column(String(255), nullable=False) display_name = Column(String(64), nullable=False, default="") role_id = Column(String(64), nullable=False, index=True) status = Column(String(1), nullable=False, default="0") # 0启用 / 1停用 del_flag = Column(String(1), nullable=False, default="0") create_time = Column(DateTime, default=datetime.utcnow) update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) create_by = Column(String(64), nullable=True) update_by = Column(String(64), nullable=True) class SysRole(Base): __tablename__ = "sys_role" id = Column(String(64), primary_key=True, default=_uuid) role_code = Column(String(64), nullable=False, unique=True, index=True) role_name = Column(String(64), nullable=False) remark = Column(String(255), nullable=True) del_flag = Column(String(1), nullable=False, default="0") create_time = Column(DateTime, default=datetime.utcnow) update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) create_by = Column(String(64), nullable=True) update_by = Column(String(64), nullable=True) class SysMenu(Base): __tablename__ = "sys_menu" id = Column(String(64), primary_key=True, default=_uuid) parent_id = Column(String(64), nullable=False, default="0", index=True) menu_code = Column(String(64), nullable=False, unique=True, index=True) menu_name = Column(String(64), nullable=False) path = Column(String(255), nullable=True, default="") menu_type = Column(String(1), nullable=False) # M目录 / C菜单 / F按钮 sort = Column(Integer, nullable=False, default=0) visible = Column(String(1), nullable=False, default="1") # 1显示 / 0隐藏 del_flag = Column(String(1), nullable=False, default="0") create_time = Column(DateTime, default=datetime.utcnow) update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) create_by = Column(String(64), nullable=True) update_by = Column(String(64), nullable=True) class SysRoleMenu(Base): __tablename__ = "sys_role_menu" id = Column(String(64), primary_key=True, default=_uuid) role_id = Column(String(64), nullable=False, index=True) menu_id = Column(String(64), nullable=False, index=True) class OperLog(Base): __tablename__ = "oper_log" id = Column(String(64), primary_key=True, default=_uuid) user_id = Column(String(64), nullable=True, index=True) username = Column(String(64), nullable=True) module = Column(String(64), nullable=True) action = Column(String(64), nullable=True) detail = Column(Text, nullable=True) ip = Column(String(64), nullable=True) create_time = Column(DateTime, default=datetime.utcnow)