From f2c43713b16e821f4a1ae97804c60f18734d5f6a Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期五, 13 十二月 2024 17:25:12 +0800 Subject: [PATCH] 问题优化 --- app/models/organization_model.py | 84 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 68 insertions(+), 16 deletions(-) diff --git a/app/models/organization_model.py b/app/models/organization_model.py index ae7a1de..30f670a 100644 --- a/app/models/organization_model.py +++ b/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'))) # #鏋勫缓瀵箁ole琛ㄧ殑鍏崇郴 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,15 +63,35 @@ '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 + def to_dict(self): + json = { + 'deptId': self.id, + 'createTime': self.created_at, + 'updateTime': self.updated_at, + 'deptName': self.name, + 'address': self.address, + 'code': self.code, + 'iconCls': self.iconcls, + 'orderNum': self.seq, + 'parentId': self.get_pid(), + 'parentName': self.get_pName(), + 'leader': self.leader, + 'phone': self.phone, + 'email': self.email, + 'status': self.status, + 'roles': [self.role_json(role) for role in self.roles], + } return json + def role_json(self, role): return { @@ -87,25 +109,55 @@ 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 to_parent_select_json(self): + return { + 'id': self.id, + 'label': self.name, + 'parent': [org.to_parent_select_json() for org in self.parent] } 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) \ No newline at end of file + 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 -- Gitblit v1.8.0