45 lines
2.0 KiB
Python
45 lines
2.0 KiB
Python
"""
|
||
菜单模型
|
||
"""
|
||
from sqlalchemy import Column, BigInteger, String, Integer, DateTime, SmallInteger
|
||
from sqlalchemy.sql import func
|
||
from app.core.database import Base
|
||
|
||
|
||
class SystemMenu(Base):
|
||
"""系统菜单表模型"""
|
||
|
||
__tablename__ = "system_menus"
|
||
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment="菜单ID")
|
||
parent_id = Column(BigInteger, default=0, comment="父菜单ID(0表示根菜单)")
|
||
menu_name = Column(String(50), nullable=False, comment="菜单名称")
|
||
menu_code = Column(String(50), nullable=False, unique=True, index=True, comment="菜单编码")
|
||
menu_type = Column(SmallInteger, nullable=False, comment="菜单类型:1-目录 2-菜单 3-按钮/权限点")
|
||
path = Column(String(255), comment="路由路径")
|
||
component = Column(String(255), comment="组件路径")
|
||
icon = Column(String(100), comment="图标")
|
||
sort_order = Column(Integer, default=0, comment="排序号")
|
||
visible = Column(SmallInteger, default=1, comment="是否可见:0-隐藏 1-显示")
|
||
status = Column(SmallInteger, default=1, index=True, comment="状态:0-禁用 1-启用")
|
||
permission = Column(String(100), comment="权限字符串")
|
||
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
|
||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment="更新时间")
|
||
|
||
def __repr__(self):
|
||
return f"<SystemMenu(id={self.id}, menu_name='{self.menu_name}')>"
|
||
|
||
|
||
class RoleMenu(Base):
|
||
"""角色菜单授权表模型"""
|
||
|
||
__tablename__ = "role_menus"
|
||
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment="关联ID")
|
||
role_id = Column(BigInteger, nullable=False, index=True, comment="角色ID")
|
||
menu_id = Column(BigInteger, nullable=False, index=True, comment="菜单ID")
|
||
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
|
||
|
||
def __repr__(self):
|
||
return f"<RoleMenu(role_id={self.role_id}, menu_id={self.menu_id})>"
|