zhaoqingang
2024-11-12 2669d0e0a93e06983dade724146bd0e1b6da6ba7
app/models/organization_model.py
@@ -1,18 +1,20 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
from sqlalchemy import Column, Integer, String, Table, ForeignKey, DateTime
from sqlalchemy.orm import relationship, backref
from app.models.base_model import Base
organization_group_table = Table('organization_group', Base.metadata,
                                       Column('group_id', Integer, ForeignKey('group.id')),
                                       Column('organization_id', String(36), ForeignKey('organization.id')))
# organization_group_table = Table('organization_group', Base.metadata,
#                                        Column('group_id', Integer, ForeignKey('group.id')),
#                                        Column('organization_id', String(36), ForeignKey('organization.id')))
# #构建对role表的关系
organization_role_table = Table('organization_role', Base.metadata,
                                   Column('role_id', String(36), ForeignKey('role.id')),
                                   Column('organization_id', String(36), ForeignKey('organization.id')))
                                   Column('role_id', String(36), ForeignKey('role.id', ondelete='CASCADE')),
                                   Column('organization_id', String(36), ForeignKey('organization.id', ondelete='CASCADE')))
class OrganizationModel(Base):
    __tablename__ = 'organization'
@@ -25,13 +27,13 @@
    iconcls = Column(String(255))
    seq = Column(Integer)
    leader = Column(String(255))
    phone = Column(String(11))
    phone = Column(String(32))
    email = Column(String(64))
    status = Column(String(10), nullable=False, default="0")
    groups = relationship('GroupModel',
                                secondary=organization_group_table,
                                backref=backref('organizations', lazy='dynamic'))
    # groups = relationship('GroupModel',
    #                             secondary=organization_group_table,
    #                             backref=backref('organizations', lazy='dynamic'))
    roles = relationship('RoleModel',
                            secondary=organization_role_table,
@@ -61,13 +63,11 @@
            'email': self.email,
            'status': self.status,
            'roles': [self.role_json(role) for role in self.roles],
            'groups': [self.group_json(group) for group in self.groups],
            # 'groups': [self.group_json(group) for group in self.groups],
            'children': [
                org.to_json() for org in self.children
            ]
        }
        return json
@@ -87,25 +87,48 @@
    def to_tree_select_json(self):
        return {
            'id': self.ID,
            'label': self.NAME,
            'id': self.id,
            'label': self.name,
            'children': [org.to_tree_select_json() for org in self.children]
        }
    def get_pid(self):
        if self.parent:
            return self.parent.ID
            return self.parent.id
        return ''
    def get_pName(self):
        if self.parent:
            return self.parent.NAME
            return self.parent.name
        return ''
    def get_id(self):
        return str(self.ID)
        return str(self.id)
    def __repr__(self):
        return '<Organization %r>\n' %(self.NAME)
        return '<Organization %r>\n' %(self.name)
class DeptList(BaseModel):
    deptName: Optional[str] = ""
class DeptInfo(BaseModel):
    deptId: Optional[str] = ""
    deptName: Optional[str] = ""
    leader: Optional[str] = ""
    phone: Optional[str] = ""
    orderNum: int
    address: Optional[str] = ""
    parentId: Optional[str] = ""
    status: str
    roles: list
    groups: Optional[list] = []
class DeptParent(BaseModel):
    deptId: str
    parentId: str
    orderNum: int