From e80ffb7f9be04226d2a6ea9566612b06df85e580 Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期三, 13 十一月 2024 17:58:14 +0800
Subject: [PATCH] 参数修改

---
 app/api/role.py            |    4 
 app/models/agent_model.py  |    4 
 app/service/user.py        |    2 
 app/service/knowledge.py   |   23 +++++
 app/api/user.py            |   13 ++-
 app/service/canvas.py      |   22 +++++
 app/models/user_model.py   |   47 +++++++++++
 app/api/knowledge.py       |   21 ----
 app/api/canvas.py          |   15 +++
 app/service/dialog.py      |   22 +++++
 app/api/dialog.py          |   15 +++
 main.py                    |    4 +
 app/models/group_model.py  |    2 
 app/models/dialog_model.py |   14 ---
 14 files changed, 165 insertions(+), 43 deletions(-)

diff --git a/app/api/canvas.py b/app/api/canvas.py
new file mode 100644
index 0000000..df214a0
--- /dev/null
+++ b/app/api/canvas.py
@@ -0,0 +1,15 @@
+# coding:utf-8
+
+from fastapi import APIRouter, Depends
+from app.api import Response, get_current_user, ResponseList
+from app.models import RoleParameter, GroupModel, KnowledgeModel
+from app.models.base_model import get_db
+from app.models.user_model import UserModel
+from app.service.canvas import get_canvas_list
+
+canvas_router = APIRouter()
+
+@canvas_router.get("/list", response_model=Response)
+async def canvas_list(role:str="", current_user: UserModel = Depends(get_current_user),
+                          db=Depends(get_db)):
+    return Response(code=200, msg="", data = await get_canvas_list(db, role, current_user.id))
\ No newline at end of file
diff --git a/app/api/dialog.py b/app/api/dialog.py
new file mode 100644
index 0000000..98769d2
--- /dev/null
+++ b/app/api/dialog.py
@@ -0,0 +1,15 @@
+# coding:utf-8
+
+from fastapi import APIRouter, Depends
+from app.api import Response, get_current_user, ResponseList
+from app.models import RoleParameter, GroupModel, KnowledgeModel
+from app.models.base_model import get_db
+from app.models.user_model import UserModel
+from app.service.dialog import get_dialog_list
+
+dialog_router = APIRouter()
+
+@dialog_router.get("/list", response_model=Response)
+async def dialog_list(role:str="", current_user: UserModel = Depends(get_current_user),
+                          db=Depends(get_db)):
+    return Response(code=200, msg="", data = await get_dialog_list(db, role, current_user.id))
\ No newline at end of file
diff --git a/app/api/knowledge.py b/app/api/knowledge.py
index 91edec0..be70bbf 100644
--- a/app/api/knowledge.py
+++ b/app/api/knowledge.py
@@ -5,26 +5,11 @@
 from app.models import RoleParameter, GroupModel, KnowledgeModel
 from app.models.base_model import get_db
 from app.models.user_model import UserModel
+from app.service.knowledge import get_knowledge_list
 
 knowledge_router = APIRouter()
 
 @knowledge_router.get("/list", response_model=Response)
-async def knowledge_list(role:str, current_user: UserModel = Depends(get_current_user),
+async def knowledge_list(role:str="", current_user: UserModel = Depends(get_current_user),
                           db=Depends(get_db)):
-    if role == "admin":
-        kld_list = db.query(KnowledgeModel).all()
-    else:
-        user = db.query(UserModel).filter(UserModel.id == current_user.id).first()
-
-        group_list = [i.id for i in user.groups]
-
-        kld_list = db.query(KnowledgeModel).filter(KnowledgeModel.tenant_id==current_user.id).all()
-        kld_set = set([i.id for i in kld_list])
-        for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all():
-            for k in group.knowledges:
-                if k.id not in kld_set:
-                    kld_list.append(k)
-                    kld_set.add(k.id)
-
-    data = [kld.to_json() for kld in kld_list]
-    return Response(code=200, msg="", data={"rows": data})
\ No newline at end of file
+    return Response(code=200, msg="", data = await get_knowledge_list(db, role, current_user.id))
\ No newline at end of file
diff --git a/app/api/role.py b/app/api/role.py
index 516619a..a4674c3 100644
--- a/app/api/role.py
+++ b/app/api/role.py
@@ -11,10 +11,10 @@
 role_router = APIRouter()
 
 @role_router.get("/list", response_model=Response)
-async def user_group_list(paras: PageParameter, current_user: UserModel = Depends(get_current_user),
+async def user_group_list(current, pageSize, keyword="", current_user: UserModel = Depends(get_current_user),
                           db=Depends(get_db)):
 
-    return Response(code=200, msg="", data=await role_list(db, paras.page_size, paras.page_index, paras.keyword, current_user.permission, current_user.id))
+    return Response(code=200, msg="", data=await role_list(db, pageSize, current, keyword, current_user.permission, current_user.id))
 
 
 @role_router.post("/add_role", response_model=Response)
diff --git a/app/api/user.py b/app/api/user.py
index 5d1443e..1e2db47 100644
--- a/app/api/user.py
+++ b/app/api/user.py
@@ -10,8 +10,10 @@
 
 
 @user_router.get("/list", response_model=Response)
-async def user_list(paras: PageParameter,current_user: UserModel = Depends(get_current_user), db=Depends(get_db)):
-    return Response(code=200, msg="", data=await get_user_list(db, paras.page_size, paras.page_index, paras.keyword, current_user.permission, current_user.id))
+async def user_list(current, pageSize, keyword="", current_user: UserModel = Depends(get_current_user),
+                    db=Depends(get_db)):
+    return Response(code=200, msg="", data=await get_user_list(db, current, pageSize, keyword,
+                                                               current_user.permission, current_user.id))
 
 
 @user_router.post("/add_user", response_model=Response)
@@ -24,7 +26,8 @@
     pwd = user.pwd
     if not pwd:
         pwd = "000000"
-    is_create = await create_user(db, user.userName, user.email, user.phone, user.loginName, pwd, user.roles, user.groups,current_user.id)
+    is_create = await create_user(db, user.userName, user.email, user.phone, user.loginName, pwd, user.roles,
+                                  user.groups, current_user.id)
     if not is_create:
         return Response(code=500, msg="user create failure", data={})
     return Response(code=200, msg="user create successfully", data={})
@@ -53,7 +56,7 @@
     db_user = db.query(UserModel).filter(UserModel.id == user.userId).first()
     if not db_user:
         return Response(code=200, msg="user does not exist")
-    is_edit = await edit_user_status(db, user.status,user.userId)
+    is_edit = await edit_user_status(db, user.status, user.userId)
     if not is_edit:
         return Response(code=500, msg="user status edit failure", data={})
     return Response(code=200, msg="user status edit successfully", data={})
@@ -78,4 +81,4 @@
     is_edit = await edit_user_pwd(db, user.userId)
     if not is_edit:
         return Response(code=500, msg="user pwd reset failure", data={})
-    return Response(code=200, msg="user pwd reset successfully", data={})
\ No newline at end of file
+    return Response(code=200, msg="user pwd reset successfully", data={})
diff --git a/app/models/agent_model.py b/app/models/agent_model.py
index e2151fc..cc9120e 100644
--- a/app/models/agent_model.py
+++ b/app/models/agent_model.py
@@ -30,7 +30,7 @@
 
 
 class CanvasModel(Base):
-    __tablename__ = 'user_canvas'
+    __tablename__ = 'canvas'
 
     id = Column(String(32), primary_key=True)      # id
     create_date = Column(DateTime, default=datetime.now)
@@ -51,9 +51,7 @@
     def to_json(self):
         return {
             'id': self.id,
-            'create_time': self.create_time,
             'create_date': self.create_date,
-            'update_time': self.update_time,
             'update_date': self.update_date,
             'avatar': self.avatar,
             'user_id': self.user_id,
diff --git a/app/models/dialog_model.py b/app/models/dialog_model.py
index 2ac706f..e46a950 100644
--- a/app/models/dialog_model.py
+++ b/app/models/dialog_model.py
@@ -18,7 +18,7 @@
     description = Column(Text)                 # 璇存槑
     icon = Column(Text)                         # 鍥炬爣
     status = Column(String(1))                 # 鐘舵��
-    dialog_type = Column(String(1))            #    # 骞冲彴
+    # dialog_type = Column(String(1))            #    # 骞冲彴
 
     def get_id(self):
         return str(self.id)
@@ -26,23 +26,11 @@
     def to_json(self):
         return {
             'id': self.id,
-            'create_time': self.create_time,
             'create_date': self.create_date,
-            'update_time': self.update_time,
             'update_date': self.update_date,
             'tenant_id': self.tenant_id,
             'name': self.name,
             'description': self.description,
             'icon': self.icon,
-            'language': self.language,
-            'llm_id': self.llm_id,
-            'prompt_type': self.prompt_type,
-            'prompt_config': self.prompt_config,
-            'similarity_threshold': self.similarity_threshold,
-            'vector_similarity_weight': self.vector_similarity_weight,
-            'top_n': self.top_n,
-            'top_k': self.top_k,
-            'do_refer': self.do_refer,
-            'kb_ids': self.kb_ids,
             'status': self.status
         }
\ No newline at end of file
diff --git a/app/models/group_model.py b/app/models/group_model.py
index b9c30e9..38db667 100644
--- a/app/models/group_model.py
+++ b/app/models/group_model.py
@@ -19,7 +19,7 @@
 
 group_agent_table = Table('group_agent', Base.metadata
                            , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE'))
-                           , Column('agent_id', String(36), ForeignKey('user_canvas.id', ondelete='CASCADE')))
+                           , Column('agent_id', String(36), ForeignKey('canvas.id', ondelete='CASCADE')))
 
 group_llm_table = Table('group_llm', Base.metadata
                            , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE'))
diff --git a/app/models/user_model.py b/app/models/user_model.py
index 8736ba0..d722d02 100644
--- a/app/models/user_model.py
+++ b/app/models/user_model.py
@@ -112,6 +112,53 @@
         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鍒楄〃"""
diff --git a/app/service/canvas.py b/app/service/canvas.py
new file mode 100644
index 0000000..e6343ae
--- /dev/null
+++ b/app/service/canvas.py
@@ -0,0 +1,22 @@
+from app.models import KnowledgeModel, GroupModel, CanvasModel
+from app.models.user_model import UserModel
+from Log import logger
+
+
+async def get_canvas_list(db, role, user_id):
+    if role == "admin":
+        canvas_list = db.query(CanvasModel).all()
+    else:
+        user = db.query(UserModel).filter(UserModel.id == user_id).first()
+
+        group_list = [i.id for i in user.groups]
+
+        canvas_list = db.query(CanvasModel).filter(CanvasModel.user_id == user_id).all()
+        kld_set = set([i.id for i in canvas_list])
+        for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all():
+            for k in group.agents:
+                if k.id not in kld_set:
+                    canvas_list.append(k)
+                    kld_set.add(k.id)
+
+    return {"rows": [kld.to_json() for kld in canvas_list]}
\ No newline at end of file
diff --git a/app/service/dialog.py b/app/service/dialog.py
new file mode 100644
index 0000000..4fa7a63
--- /dev/null
+++ b/app/service/dialog.py
@@ -0,0 +1,22 @@
+from app.models import KnowledgeModel, GroupModel, DialogModel
+from app.models.user_model import UserModel
+from Log import logger
+
+
+async def get_dialog_list(db, role, user_id):
+    if role == "admin":
+        dialog_list = db.query(DialogModel).all()
+    else:
+        user = db.query(UserModel).filter(UserModel.id == user_id).first()
+
+        group_list = [i.id for i in user.groups]
+
+        dialog_list = db.query(DialogModel).filter(DialogModel.tenant_id == user_id).all()
+        kld_set = set([i.id for i in dialog_list])
+        for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all():
+            for k in group.dialogs:
+                if k.id not in kld_set:
+                    dialog_list.append(k)
+                    kld_set.add(k.id)
+
+    return {"rows": [kld.to_json() for kld in dialog_list]}
\ No newline at end of file
diff --git a/app/service/knowledge.py b/app/service/knowledge.py
index e69de29..c9c89b4 100644
--- a/app/service/knowledge.py
+++ b/app/service/knowledge.py
@@ -0,0 +1,23 @@
+from app.models import KnowledgeModel, GroupModel
+from app.models.user_model import UserModel
+from Log import logger
+
+
+async def get_knowledge_list(db, role, user_id):
+    if role == "admin":
+        kld_list = db.query(KnowledgeModel).all()
+    else:
+        user = db.query(UserModel).filter(UserModel.id == user_id).first()
+
+        group_list = [i.id for i in user.groups]
+
+        kld_list = db.query(KnowledgeModel).filter(KnowledgeModel.tenant_id == user_id).all()
+        kld_set = set([i.id for i in kld_list])
+        for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all():
+            for k in group.knowledges:
+                if k.id not in kld_set:
+                    kld_list.append(k)
+                    kld_set.add(k.id)
+
+    return {"rows": [kld.to_json() for kld in kld_list]}
+
diff --git a/app/service/user.py b/app/service/user.py
index 02a4efc..792b9ea 100644
--- a/app/service/user.py
+++ b/app/service/user.py
@@ -9,7 +9,7 @@
 from app.service.ragflow import RagflowService
 
 
-async def get_user_list(db, page_size: int, page_index: int, keyword: str, role_key:str, user_id):
+async def get_user_list(db, page_index: int, page_size: int, keyword: str, role_key:str, user_id):
     query = db.query(UserModel)
     if role_key != "admin":
         query.filter(UserModel.creator==user_id)
diff --git a/main.py b/main.py
index 90683f5..0197ea4 100644
--- a/main.py
+++ b/main.py
@@ -1,8 +1,10 @@
 from contextlib import asynccontextmanager
 from fastapi import FastAPI
 from app.api.auth import router as auth_router
+from app.api.canvas import canvas_router
 from app.api.chat import router as chat_router
 from app.api.agent import router as agent_router
+from app.api.dialog import dialog_router
 from app.api.excel import router as excel_router
 from app.api.files import router as files_router
 from app.api.knowledge import knowledge_router
@@ -48,6 +50,8 @@
 app.include_router(dept_router, prefix='/api/dept', tags=["dept"])
 app.include_router(menu_router, prefix='/api/menu', tags=["menu"])
 app.include_router(knowledge_router, prefix='/api/knowledge', tags=["knowledge"])
+app.include_router(dialog_router, prefix='/api/dialog', tags=["dialog"])
+app.include_router(canvas_router, prefix='/api/canvas', tags=["canvas"])
 
 if __name__ == "__main__":
     import uvicorn

--
Gitblit v1.8.0