Bladeren bron

更新 'routers/api/Knowledge/__init__.py'

许国洋 8 maanden geleden
bovenliggende
commit
f1c3c9f8ec
1 gewijzigde bestanden met toevoegingen van 105 en 5 verwijderingen
  1. 105 5
      routers/api/Knowledge/__init__.py

+ 105 - 5
routers/api/Knowledge/__init__.py

@@ -213,7 +213,7 @@ async def get_knowledge_detail(db: Session = Depends(get_db), reportID: Optional
 
 
 
-@router.post('/delete')
+@router.delete  ('/delete')
 async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
     # 从请求的 JSON 数据中获取 reportID
     body = await request.json()
@@ -239,8 +239,6 @@ async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
     if hasattr(kb_entry, 'del_flag'):
         kb_entry.del_flag = 2
 
-
-
     try:
         db.commit()
         return {
@@ -248,7 +246,6 @@ async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
             "msg": "操作成功",
             "data": {
                 "report_id": kb_entry.reportId
-                # "is_deleted": kb_entry.is_deleted
             }
         }
     except Exception as e:
@@ -256,6 +253,64 @@ async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
         return Response(content="An error occurred while deleting the record: " + str(e), status_code=500)
 
 
+
+
+
+
+@router.delete('/delete/list')
+async def delete_knowledge_list(request: Request, db: Session = Depends(get_db)):
+    # 从请求的 JSON 数据中获取 reportID
+    body = await request.json()
+    report_id_to_use = body.get('reportID')
+    if not report_id_to_use:
+        return Response(content="Missing required parameter 'reportID'", status_code=400)
+
+
+    # kb_entry = (db.query(KnowledgeBase)
+    #             .filter(KnowledgeBase.del_flag != '2')  # 确保这里过滤掉 del_flag 等于 '2' 的记录
+    #             .filter(KnowledgeBase.reportId.in_report_(id_to_use)))  # 确保 reportID 是在过滤后的查询中使用的
+    #
+    # kb_entrys = kb_entry.all()
+    query = db.query(KnowledgeBase)
+    query = query.filter(KnowledgeBase.del_flag != '2')
+    query = query.filter(KnowledgeBase.reportId.in_(report_id_to_use))
+    kb_entrys = query.all()
+
+    if not kb_entrys:
+        raise HTTPException(status_code=404, detail="报告不存在")
+    for kb_entry in kb_entrys:
+        # 将找到的记录的 is_deleted 改为 2
+        kb_entry.is_deleted = 2
+
+        kf_entries = db.query(KnowledgeFile).filter(KnowledgeFile.knowledge_base_code == kb_entry.base_code).all()
+        for kf_entry in kf_entries:
+            kf_entry.is_deleted = 2
+
+        if hasattr(kb_entry, 'del_flag'):
+            kb_entry.del_flag = 2
+
+    try:
+        db.commit()
+        return {
+            "code": 200,
+            "msg": "操作成功",
+            "data": None
+        }
+    except Exception as e:
+        db.rollback()
+        return Response(content="An error occurred while deleting the record: " + str(e), status_code=500)
+
+
+
+
+
+
+
+
+
+
+
+
 def delete_file_fun(knowledge_base_code,db: Session):
     file_query = db.query(KnowledgeFile)
     file_query = file_query.filter(KnowledgeFile.is_deleted != '2')
@@ -269,7 +324,7 @@ def delete_file_fun(knowledge_base_code,db: Session):
 
 
 
-@router.post('/update')
+@router.put('/update')
 async def update_knowledge(request: Request, db: Session = Depends(get_db)):
     body = await request.json()
     report_id_to_use = body.get('reportId')
@@ -335,6 +390,51 @@ async def update_knowledge(request: Request, db: Session = Depends(get_db)):
 
 
 
+@router.put('/update/list')
+async def update_knowledge_list(request: Request, db: Session = Depends(get_db)):
+    body = await request.json()
+    update_items = body.get('updateItems')
+    if not update_items or not isinstance(update_items, list):
+        return Response(content="Missing required parameter 'updateItems'", status_code=400)
+
+    try:
+        for item in update_items:
+            report_id_to_use = item.get('reportId')
+            if not report_id_to_use:
+                continue  # 如果没有提供 reportId,则跳过当前项
+
+            # 根据 reportId 查找 KnowledgeBase 记录
+            kb_entry = db.query(KnowledgeBase).filter(
+                KnowledgeBase.reportId == report_id_to_use
+            ).first()
+            if not kb_entry:
+                continue  # 如果没有找到记录,则跳过当前项
+
+            # 更新 KnowledgeBase 记录
+            for field, value in item.items():
+                if field != 'reportId' and hasattr(kb_entry, field):
+                    setattr(kb_entry, field, value)
+
+            kb_entry.updateTime = datetime.fromisoformat(item.get('publishDate'))
+
+        # 提交事务
+        db.commit()
+        return {
+            "code": 200,
+            "msg": "批量更新成功",
+            "data": {
+                "updated_count": len(update_items)
+            }
+        }
+    except IntegrityError as e:
+        db.rollback()
+        return Response(content=f"Database error: {str(e)}", status_code=409)
+    except Exception as e:
+        db.rollback()
+        return Response(content=str(e), status_code=500)
+
+
+