system.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """系统域模型:用户、角色、菜单、操作日志"""
  2. import uuid
  3. from datetime import datetime
  4. from sqlalchemy import Column, DateTime, Integer, String, Text
  5. from app.core.database import Base
  6. def _uuid() -> str:
  7. return str(uuid.uuid4())
  8. class SysUser(Base):
  9. __tablename__ = "sys_user"
  10. id = Column(String(64), primary_key=True, default=_uuid)
  11. username = Column(String(64), nullable=False, unique=True, index=True)
  12. password_hash = Column(String(255), nullable=False)
  13. display_name = Column(String(64), nullable=False, default="")
  14. role_id = Column(String(64), nullable=False, index=True)
  15. status = Column(String(1), nullable=False, default="0") # 0启用 / 1停用
  16. del_flag = Column(String(1), nullable=False, default="0")
  17. create_time = Column(DateTime, default=datetime.utcnow)
  18. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  19. create_by = Column(String(64), nullable=True)
  20. update_by = Column(String(64), nullable=True)
  21. class SysRole(Base):
  22. __tablename__ = "sys_role"
  23. id = Column(String(64), primary_key=True, default=_uuid)
  24. role_code = Column(String(64), nullable=False, unique=True, index=True)
  25. role_name = Column(String(64), nullable=False)
  26. remark = Column(String(255), nullable=True)
  27. del_flag = Column(String(1), nullable=False, default="0")
  28. create_time = Column(DateTime, default=datetime.utcnow)
  29. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  30. create_by = Column(String(64), nullable=True)
  31. update_by = Column(String(64), nullable=True)
  32. class SysMenu(Base):
  33. __tablename__ = "sys_menu"
  34. id = Column(String(64), primary_key=True, default=_uuid)
  35. parent_id = Column(String(64), nullable=False, default="0", index=True)
  36. menu_code = Column(String(64), nullable=False, unique=True, index=True)
  37. menu_name = Column(String(64), nullable=False)
  38. path = Column(String(255), nullable=True, default="")
  39. menu_type = Column(String(1), nullable=False) # M目录 / C菜单 / F按钮
  40. sort = Column(Integer, nullable=False, default=0)
  41. visible = Column(String(1), nullable=False, default="1") # 1显示 / 0隐藏
  42. del_flag = Column(String(1), nullable=False, default="0")
  43. create_time = Column(DateTime, default=datetime.utcnow)
  44. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  45. create_by = Column(String(64), nullable=True)
  46. update_by = Column(String(64), nullable=True)
  47. class SysRoleMenu(Base):
  48. __tablename__ = "sys_role_menu"
  49. id = Column(String(64), primary_key=True, default=_uuid)
  50. role_id = Column(String(64), nullable=False, index=True)
  51. menu_id = Column(String(64), nullable=False, index=True)
  52. class OperLog(Base):
  53. __tablename__ = "oper_log"
  54. id = Column(String(64), primary_key=True, default=_uuid)
  55. user_id = Column(String(64), nullable=True, index=True)
  56. username = Column(String(64), nullable=True)
  57. module = Column(String(64), nullable=True)
  58. action = Column(String(64), nullable=True)
  59. detail = Column(Text, nullable=True)
  60. ip = Column(String(64), nullable=True)
  61. create_time = Column(DateTime, default=datetime.utcnow)