From c7fa5eb402f9c5b314a55386633e59d2c7800ec6 Mon Sep 17 00:00:00 2001 From: xiamuceer Date: Wed, 12 Nov 2025 09:20:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:1.=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E7=BC=BA=E5=B0=91user=5Fid=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=8A=A5=E9=94=99=202.=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=97=B6=E9=97=B4=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/projects.py | 19 +++++++++++++++---- backend/app/services/import_export_service.py | 6 +++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/backend/app/api/projects.py b/backend/app/api/projects.py index 42e820f..eaad8d6 100644 --- a/backend/app/api/projects.py +++ b/backend/app/api/projects.py @@ -366,7 +366,11 @@ async def export_project_chapters( txt_content.append("\n\n" + "=" * 80 + "\n\n") txt_content.append(f"--- 全文完 ---") - txt_content.append(f"\n导出时间: {func.now()}") + + # 获取当前时间 + from datetime import datetime + export_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + txt_content.append(f"\n导出时间: {export_time}") final_content = "\n".join(txt_content) @@ -671,6 +675,7 @@ async def validate_import_file( @router.post("/import", response_model=ImportResult, summary="导入项目") async def import_project( file: UploadFile = File(...), + request: Request = None, db: AsyncSession = Depends(get_db) ): """ @@ -683,7 +688,13 @@ async def import_project( 导入结果 """ try: - logger.info(f"开始导入项目: {file.filename}") + # 从认证中间件获取用户ID + user_id = getattr(request.state, 'user_id', None) + if not user_id: + logger.warning("未登录用户尝试导入项目") + raise HTTPException(status_code=401, detail="未登录") + + logger.info(f"开始导入项目: {file.filename}, user_id={user_id}") # 检查文件类型 if not file.filename.endswith('.json'): @@ -703,8 +714,8 @@ async def import_project( except json.JSONDecodeError as e: raise HTTPException(status_code=400, detail=f"无效的JSON格式: {str(e)}") - # 导入数据 - import_result = await ImportExportService.import_project(data, db) + # 导入数据(传入user_id) + import_result = await ImportExportService.import_project(data, db, user_id) if import_result.success: logger.info(f"项目导入成功: {import_result.project_id}") diff --git a/backend/app/services/import_export_service.py b/backend/app/services/import_export_service.py index 268d187..3f2c86f 100644 --- a/backend/app/services/import_export_service.py +++ b/backend/app/services/import_export_service.py @@ -77,6 +77,7 @@ class ImportExportService: "chapter_count": project.chapter_count, "narrative_perspective": project.narrative_perspective, "character_count": project.character_count, + "user_id": project.user_id, "created_at": project.created_at.isoformat() if project.created_at else None, } @@ -423,7 +424,8 @@ class ImportExportService: @staticmethod async def import_project( data: Dict, - db: AsyncSession + db: AsyncSession, + user_id: str ) -> ImportResult: """ 导入项目数据(创建新项目) @@ -431,6 +433,7 @@ class ImportExportService: Args: data: 导入的JSON数据 db: 数据库会话 + user_id: 目标用户ID(导入后的项目归属) Returns: ImportResult: 导入结果 @@ -456,6 +459,7 @@ class ImportExportService: # 创建项目 project_data = data["project"] new_project = Project( + user_id=user_id, # 设置为当前用户ID title=project_data.get("title"), description=project_data.get("description"), theme=project_data.get("theme"),