Files
FastapiAdmin/backend/app/api/v1/module_system/dept/model.py
T
zhangtao 714896161f refactor(module_generator): 重构代码生成模块结构
重构代码生成模块,删除冗余文件并优化结构:
1. 删除旧的form、page、table等相关文件
2. 新增gencode模块基础结构
3. 移动jinja2工具类和模板引擎初始化器到utils目录
4. 优化数据库模型关系定义
5. 更新nginx配置支持WebSocket
6. 添加正则验证和加密工具类
7. 修复菜单和部门模型的循环引用问题
8. 优化初始化脚本和配置加载逻辑

调整初始化流程,使用统一会话管理:
1. 修改数据库初始化使用AsyncSessionLocal
2. 优化定时任务初始化逻辑
3. 统一配置和字典服务初始化方式
4. 修复模型关系定义导致的循环导入问题

其他改进:
1. 更新requirements.txt添加依赖
2. 调整IP白名单配置
3. 优化数据库连接日志输出
4. 修复模型继承关系问题
2025-09-12 01:05:07 +08:00

33 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
from typing import Optional, List
from sqlalchemy import String, Integer, ForeignKey
from sqlalchemy.orm import relationship, Mapped, mapped_column
from app.core.base_model import ModelMixin
class DeptModel(ModelMixin):
"""
部门表 - 用于存储组织架构中的部门信息 - SQLAlchemy 2.0 语法
支持层级结构,兼容 MySQL 和 PostgreSQL
"""
__tablename__ = "system_dept"
__table_args__ = ({'comment': '部门表'})
# 基础字段
name: Mapped[str] = mapped_column(String(40),nullable=False,unique=True,comment="部门名称")
order: Mapped[int] = mapped_column(Integer,nullable=False,default=999,comment="显示排序")
parent_id: Mapped[Optional[int]] = mapped_column(Integer, ForeignKey("system_dept.id", ondelete="SET NULL", onupdate="CASCADE"), default=None, index=True, comment="父级部门ID")
# parent: Mapped[Optional["DeptModel"]] = relationship("DeptModel", cascade="all, delete-orphan", uselist=False)
parent: Mapped[Optional['DeptModel']] = relationship(init=False, back_populates='children', remote_side=[id])
children: Mapped[Optional[list['DeptModel']]] = relationship(init=False, back_populates='parent')
# 角色关联关系
roles: Mapped[List["RoleModel"]] = relationship(secondary="system_role_depts", back_populates="depts", lazy="selectin")
# 用户关联关系
users: Mapped[List["UserModel"]] = relationship(back_populates="dept", lazy="selectin")
# code: Mapped[Optional[str]] = mapped_column(String(20),nullable=True,unique=True,comment="部门编码")
# leader_id: Mapped[Optional[int]] = mapped_column(Integer,nullable=True,comment="负责人ID")