from datetime import datetime from typing import List, Optional from sqlalchemy import Column, String, Integer, DateTime from sqlalchemy.orm import Mapped, mapped_column from app.common.enums import PermissionFilterStrategy from app.core.base_model import EnterpriseMixin, PaymentModelMixin, TenantMixin class DepartmentModel(PaymentModelMixin, TenantMixin, EnterpriseMixin): """部门模型""" __tablename__ = "pay_department" __table_args__ = {"comment": "部门表"} __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED id: Mapped[int] = mapped_column(primary_key=True, index=True, comment="主键ID") department_id: Mapped[str] = mapped_column(String(64), unique=True, nullable=False, comment="部门ID") department_name: Mapped[str] = mapped_column(String(128), nullable=False, comment="部门名称") department_code: Mapped[Optional[str]] = mapped_column(String(64), comment="部门编码") parent_department_id: Mapped[Optional[str]] = mapped_column(String(64), comment="上级部门ID") status: Mapped[str] = mapped_column(String(32), default="NORMAL", comment="状态") sort_order: Mapped[Optional[int]] = mapped_column(Integer, comment="排序值") leader_employee_id: Mapped[Optional[str]] = mapped_column(String(64), comment="部门负责人ID") leader_employee_name: Mapped[Optional[str]] = mapped_column(String(128), comment="部门负责人姓名") created_time: Mapped[datetime] = mapped_column(DateTime, default=datetime.now, comment="创建时间") updated_time: Mapped[datetime] = mapped_column(DateTime, default=datetime.now, onupdate=datetime.now, comment="更新时间") def __repr__(self): return f""