From 57239055391b0c2891180739b78c535a17851aac Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期四, 14 十一月 2024 10:21:11 +0800
Subject: [PATCH] 组资源配置

---
 app/service/group.py      |   19 ++++++++++++++++---
 app/service/user.py       |    6 +++---
 app/models/group_model.py |   13 +++++--------
 app/service/role.py       |    4 ++--
 app/api/group.py          |   10 +++++-----
 5 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/app/api/group.py b/app/api/group.py
index 745afe5..51c607c 100644
--- a/app/api/group.py
+++ b/app/api/group.py
@@ -7,7 +7,7 @@
 from app.models.user import PageParameter
 from app.models.user_model import UserModel
 from app.service.group import create_group, group_list, edit_group_data, delete_group_data, get_group_users, \
-    save_user_to_group
+    save_user_to_group, save_group_resource
 
 group_router = APIRouter()
 
@@ -91,13 +91,13 @@
     return Response(code=200, msg="success", data={})
 
 
-@group_router.post("/group_resource", response_model=Response)
+@group_router.put("/group_resource", response_model=Response)
 async def group_resource(group_resource: GroupResource, current_user: UserModel = Depends(get_current_user),
                           db=Depends(get_db)):
     db_group = db.query(GroupModel).filter(GroupModel.id == group_resource.id).first()
     if not db_group:
         return Response(code=200, msg="group does not exist")
-    # is_success = await save_group_resource(db, current_user.id, group_resource.id, group_resource.agents, group_resource.dialogs, group_resource.knowledges)
-    # if not is_success:
-    #     return Response(code=500, msg="save user to group failure", data={})
+    is_success = await save_group_resource(db, current_user.id, group_resource.id, group_resource.agents, group_resource.dialogs, group_resource.knowledges)
+    if not is_success:
+        return Response(code=500, msg="save user to group failure", data={})
     return Response(code=200, msg="success", data={})
diff --git a/app/models/group_model.py b/app/models/group_model.py
index dda330a..bb49da7 100644
--- a/app/models/group_model.py
+++ b/app/models/group_model.py
@@ -17,9 +17,9 @@
                            , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE'))
                            , Column('dialog_id', String(36), ForeignKey('dialogs.id', ondelete='CASCADE')))
 
-group_agent_table = Table('group_agent', Base.metadata
+group_agent_table = Table('group_canvas', Base.metadata
                            , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE'))
-                           , Column('agent_id', String(36), ForeignKey('canvas.id', ondelete='CASCADE')))
+                           , Column('canvas_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'))
@@ -53,18 +53,15 @@
 
     agents = relationship('CanvasModel',
                              secondary=group_agent_table,
-                             backref=backref('groups', lazy='dynamic'),
-                             lazy="dynamic")
+                             backref=backref('groups', lazy='dynamic'))
 
     llms = relationship('CommonLlmModel',
                            secondary=group_llm_table,
-                           backref=backref('groups', lazy='dynamic'),
-                           lazy="dynamic")
+                           backref=backref('groups', lazy='dynamic'))
 
     unified_agents = relationship('UnifiedAgentModel',
                                      secondary=group_unified_agent_table,
-                                     backref=backref('roles', lazy='dynamic'),
-                                     lazy="dynamic")
+                                     backref=backref('groups', lazy='dynamic'))
     def to_dict(self):
         return {
             'groupId': self.id,
diff --git a/app/service/group.py b/app/service/group.py
index cc05127..d7845fa 100644
--- a/app/service/group.py
+++ b/app/service/group.py
@@ -1,4 +1,5 @@
 from app.config.config import settings
+from app.models import CanvasModel, DialogModel, KnowledgeModel
 from app.models.group_model import GroupModel
 from app.models.user_model import UserModel
 from app.service.ragflow import RagflowService
@@ -8,9 +9,9 @@
 
 async def group_list(db, page_size: int, page_index: int, keyword: str, role_key:str, user_id):
     logger.info("-------------------------group_list----------------------------------")
-    query = db.query(GroupModel)
-    if role_key != "admin":
-        query.filter(GroupModel.creator==user_id)
+    query = db.query(GroupModel).filter(GroupModel.creator==user_id)
+    # if role_key != "admin":
+    #     query.filter(GroupModel.creator==user_id)
     if keyword:
         query = query.filter(GroupModel.group_name.like('%{}%'.format(keyword)))
     items = query.order_by(GroupModel.id.desc()).limit(page_size).offset(
@@ -107,4 +108,16 @@
     except Exception as e:
         logger.error(e)
         return False
+    return True
+
+async def save_group_resource(db, user_id, group_id, agents, dialogs, knowledges):
+    try:
+        group = db.query(GroupModel).filter(GroupModel.id.__eq__(group_id)).first()
+        group.agents = [db.get(CanvasModel, user) for user in agents]
+        group.dialogs = [db.get(DialogModel, user) for user in dialogs]
+        group.knowledges = [db.get(KnowledgeModel, user) for user in knowledges]
+        db.commit()
+    except Exception as e:
+        logger.error(e)
+        return False
     return True
\ No newline at end of file
diff --git a/app/service/role.py b/app/service/role.py
index 7739d00..fd7d91d 100644
--- a/app/service/role.py
+++ b/app/service/role.py
@@ -8,8 +8,8 @@
 
 async def role_list(db, page_size: int, page_index: int, keyword: str, role_key:str, user_id):
     query = db.query(RoleModel)
-    if role_key != "admin":
-        query.filter(RoleModel.creator==user_id)
+    # if role_key != "admin":
+    #     query.filter(RoleModel.creator==user_id)
     if keyword:
         query = query.filter(RoleModel.name.like('%{}%'.format(keyword)))
     roles = query.order_by(RoleModel.id.desc()).limit(page_size).offset(
diff --git a/app/service/user.py b/app/service/user.py
index 792b9ea..e2d8467 100644
--- a/app/service/user.py
+++ b/app/service/user.py
@@ -10,9 +10,9 @@
 
 
 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)
+    query = db.query(UserModel).filter(UserModel.permission!="admin")
+    # if role_key != "admin":
+    #     query.filter(UserModel.creator==user_id)
     if keyword:
         query = query.filter(UserModel.group_name.like('%{}%'.format(keyword)))
     users = query.order_by(UserModel.id.desc()).limit(page_size).offset(

--
Gitblit v1.8.0