From cc04b89890cc057a64e976a271b5491df7dbd721 Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期五, 06 十二月 2024 16:04:08 +0800
Subject: [PATCH] 增加数据库一建迁移能力

---
 app/models/user_model.py |   82 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 78 insertions(+), 4 deletions(-)

diff --git a/app/models/user_model.py b/app/models/user_model.py
index aea4cbd..0cf9fd5 100644
--- a/app/models/user_model.py
+++ b/app/models/user_model.py
@@ -1,8 +1,10 @@
 from datetime import datetime
 
+from cryptography.fernet import Fernet
 from sqlalchemy import Column, Integer, String, Table, ForeignKey, DateTime
 from sqlalchemy.orm import relationship, backref
 
+from app.config.config import settings
 from app.models.base_model import Base
 
 user_organization_table = Table('user_organization',Base.metadata
@@ -16,7 +18,7 @@
 user_group_table = Table('user_group', Base.metadata
                            , Column('user_id', Integer, ForeignKey('user.id', ondelete='CASCADE'))
                            , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE')))
-
+cipher_suite = Fernet(settings.PASSWORD_KEY.encode("utf-8"))
 
 
 class UserModel(Base):
@@ -24,19 +26,23 @@
     id = Column(Integer, primary_key=True, index=True)
     username = Column(String(255), unique=True, index=True)
     hashed_password = Column(String(255))
+    password = Column(String(255))
     compellation = Column(String(255), nullable=False, default="")
     phone = Column(String(255), nullable=False, default="")
     email = Column(String(255), nullable=False, default="")
     description = Column(String(255), nullable=False, default="")
-    ragflow_id = Column(String(32), unique=True, index=True)
-    bisheng_id = Column(Integer, unique=True, index=True)
+    ragflow_id = Column(String(32))
+    bisheng_id = Column(Integer)
     login_name = Column(String(100))
     status = Column(String(10), nullable=False, default="1")
     creator = Column(String(36))
     sex = Column(String(1))
+    permission = Column(String(16), nullable=False, default="general")
     age = Column(Integer)
     created_at = Column(DateTime, default=datetime.now())
     updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now())
+    updated_at11 = Column(Integer)
+
 
 
     organizations = relationship('OrganizationModel',
@@ -77,6 +83,9 @@
             'userName': self.username,
             'loginName': self.login_name if self.login_name else "",
             'status': self.status,
+            'email': self.email,
+            'phone': self.phone,
+            'permission':self.permission
         }
 
     def to_json(self):
@@ -111,6 +120,49 @@
         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 = {}
+        children_dict = {}
+        for role in self.roles:
+            for r in  role.to_json().get("resources", []):
+                if r["menuType"] != "1":
+                    parent_dict[r["menuId"]] = r
+                else:
+                    if r["parentId"] in children_dict:
+                        children_dict[r["parentId"]].append(r)
+                    else:
+                        children_dict[r["parentId"]] = [r]
+        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 r["menuType"] != "1":
+                    parent_dict[r["menuId"]] = r
+                else:
+                    if r["parentId"] in children_dict:
+                        children_dict[r["parentId"]].append(r)
+                    else:
+                        children_dict[r["parentId"]] = [r]
+        resources = []
+        for resource in parent_dict.values():
+            resource["children"] = children_dict.get(resource["menuId"], [])
+            resources.append(resource)
+        json['resources'] = resources
+        return json
+
 
     def get_children(self):
         """閫掑綊鑾峰彇鎸囧畾鐢ㄦ埛鐨勫瓙鐢ㄦ埛ID鍒楄〃"""
@@ -118,4 +170,26 @@
         user_id_list = [user.ID for user in users]
         for user in users:
             user_id_list.extend(user.get_children())
-        return user_id_list
\ No newline at end of file
+        return user_id_list
+
+
+    def encrypted_password(self, password):
+        return cipher_suite.encrypt(password.encode("utf-8")).decode("utf-8")
+
+    def decrypted_password(self):
+        return cipher_suite.decrypt(self.password).decode("utf-8")
+
+
+
+class UserModel(Base):
+    __tablename__ = "user_test"
+    id = Column(Integer, primary_key=True, index=True)
+    username = Column(String(255), unique=True, index=True)
+    hashed_password = Column(String(255))
+    password = Column(String(255))
+    compellation = Column(String(255), nullable=False, default="")
+    phone = Column(String(255), nullable=False, default="")
+    email = Column(String(255), nullable=False, default="")
+    description = Column(String(255), nullable=False, default="")
+    ragflow_id = Column(String(32))
+    bisheng_id = Column(Integer)
\ No newline at end of file

--
Gitblit v1.8.0