From f6b2863303625ef7ef3809c4e08edbd2e0b4530b Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期二, 25 二月 2025 11:19:57 +0800 Subject: [PATCH] 鉴权 --- app/models/organization_model.py | 110 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 92 insertions(+), 18 deletions(-) diff --git a/app/models/organization_model.py b/app/models/organization_model.py index ae7a1de..d7a17a0 100644 --- a/app/models/organization_model.py +++ b/app/models/organization_model.py @@ -1,18 +1,21 @@ 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.config.const import DEPT_STATUS_DELETE 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 +28,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") + status = Column(String(10), nullable=False, default="1") - 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 +64,51 @@ '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 + org.to_json() for org in self.children if org.status != DEPT_STATUS_DELETE ] } + 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 to_base_json(self): + json = { + 'deptId': self.id, + 'deptName': self.name, + 'address': self.address, + 'code': self.code, + 'iconCls': self.iconcls, + 'orderNum': self.seq, + 'leader': self.leader, + 'phone': self.phone, + 'email': self.email, + 'status': self.status + } + + return json + def role_json(self, role): return { @@ -87,25 +126,60 @@ 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: Optional[str|int] = "" + roles: Optional[list] = [] + groups: Optional[list] = [] + + +class DeptParent(BaseModel): + deptId: str + parentId: str + orderNum: int + + +class DeptStatus(BaseModel): + deptId: str + status: str \ No newline at end of file -- Gitblit v1.8.0