zhaoqingang
2024-11-13 e80ffb7f9be04226d2a6ea9566612b06df85e580
app/models/user_model.py
@@ -6,16 +6,16 @@
from app.models.base_model import Base
user_organization_table = Table('user_organization',Base.metadata
                                   , Column('user_id', Integer, ForeignKey('user.id'))
                                   , Column('organization_id', String(36), ForeignKey('organization.id')))
                                   , Column('user_id', Integer, ForeignKey('user.id', ondelete='CASCADE'))
                                   , Column('organization_id', String(36), ForeignKey('organization.id', ondelete='CASCADE')))
user_role_table = Table('user_role', Base.metadata
                           , Column('user_id', Integer, ForeignKey('user.id'))
                           , Column('role_id', String(36), ForeignKey('role.id')))
                           , Column('user_id', Integer, ForeignKey('user.id', ondelete='CASCADE'))
                           , Column('role_id', String(36), ForeignKey('role.id', ondelete='CASCADE')))
user_group_table = Table('user_group', Base.metadata
                           , Column('user_id', Integer, ForeignKey('user.id'))
                           , Column('group_id', Integer, ForeignKey('group.id')))
                           , Column('user_id', Integer, ForeignKey('user.id', ondelete='CASCADE'))
                           , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE')))
@@ -34,6 +34,7 @@
    status = Column(String(10), nullable=False, default="1")
    creator = Column(String(36))
    sex = Column(String(1))
    permission = Column(String(16), nullable=False, default="1")
    age = Column(Integer)
    created_at = Column(DateTime, default=datetime.now())
    updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now())
@@ -89,7 +90,7 @@
            'sex': self.sex,
            'age': self.age,
            "status": self.status,
            'photo': self.phone,
            'phone': self.phone,
            'email': self.email,
            # 'phoneNumber': self.phone_number
        }
@@ -101,16 +102,64 @@
        json['groups'] = [group.to_dict() for group in self.groups]
        roles = []
        # if len(self.roles.all()) > 0:
        #     roles = [role.to_json() for role in self.roles]
        # organization_roles = [role.to_json() for organization in self.organizations for role in
        #                       organization.role_list]
        # for role in organization_roles:
        #     if role not in roles:
        #         roles.append(role)
        # if len(self.roles) > 0:
        roles = [role.to_json() for role in self.roles]
        organization_roles = [role.to_json() for organization in self.organizations for role in
                              organization.roles]
        for role in organization_roles:
            if role not in roles:
                roles.append(role)
        json['roles'] = roles
        return json
    def to_login_json(self):
        json = {
            'userId': self.id,
            'createTime': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else "",
            'updateTime': self.updated_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else "",
            'userName': self.username,
            'loginName': self.login_name,
            'sex': self.sex,
            'age': self.age,
            "status": self.status,
            'phone': self.phone,
            'email': self.email,
            # 'phoneNumber': self.phone_number
        }
        parent_dict = {}
        resources = []
        for role in self.roles:
            for r in  role.to_json().get("resources", []):
                if not r["parentId"]:
                    resources.append(r)
                    continue
                if r["parentId"] in parent_dict:
                    parent_dict[r["parentId"]].append(r)
                else:
                    parent_dict[r["parentId"]] = [r]
        # roles = [role.to_json() for role in self.roles]
        organization_roles = [role.to_json() for organization in self.organizations for role in
                              organization.roles]
        for role in organization_roles:
            for r in role.to_json().get("resources", []):
                if not r["parentId"]:
                    resources.append(r)
                    continue
                if r["parentId"] in parent_dict:
                    parent_dict[r["parentId"]].append(r)
                else:
                    parent_dict[r["parentId"]] = [r]
        # for resource in resources:
        #     if resource["menuId"] in parent_dict:
        #         resource[]
        json['resources'] = resources
        return json
    def get_children(self):
        """递归获取指定用户的子用户ID列表"""
        users = UserModel.query.filter_by(CREATOR=self.ID).all()