| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- from fastapi import APIRouter, UploadFile, File, Form, HTTPException, Depends
- from fastapi.responses import JSONResponse
- from typing import Optional
- from backend.services.user_material_service import user_material_service
- router = APIRouter()
- @router.post("/api/v1/users/{user_id}/materials", tags=["用户素材管理"])
- def upload_material(
- user_id: int,
- file: UploadFile = File(...),
- image_type: str = Form(...),
- original_filename: str = Form(...)
- ):
- """
- 用户上传素材
- """
- file_bytes = file.file.read()
- result = user_material_service.upload_material(
- user_id=user_id,
- file_bytes=file_bytes,
- image_type=image_type,
- original_filename=original_filename
- )
- if not result["success"]:
- raise HTTPException(status_code=400, detail=result["error"])
- return result
- @router.get("/api/v1/users/{user_id}/materials", tags=["用户素材管理"])
- def list_materials(
- user_id: int,
- material_type: Optional[str] = None,
- page: int = 1,
- page_size: int = 20
- ):
- """
- 获取用户素材列表
- """
- result = user_material_service.list_materials(
- user_id=user_id,
- material_type=material_type,
- page=page,
- page_size=page_size
- )
- if not result["success"]:
- raise HTTPException(status_code=400, detail=result["error"])
- return result
- from pydantic import BaseModel
- class UpdateMaterialRequest(BaseModel):
- original_filename: str
- @router.put("/api/v1/users/{user_id}/materials/{material_id}", tags=["用户素材管理"])
- def update_material(
- user_id: int,
- material_id: int,
- data: UpdateMaterialRequest
- ):
- """
- 更新用户素材信息
- """
- result = user_material_service.update_material(user_id, material_id, data.dict())
- if not result["success"]:
- raise HTTPException(status_code=400, detail=result["error"])
- return result
- @router.delete("/api/v1/users/{user_id}/materials/{material_id}", tags=["用户素材管理"])
- def delete_material(
- user_id: int,
- material_id: int
- ):
- """
- 删除用户素材
- """
- result = user_material_service.delete_material(user_id, material_id)
- if not result["success"]:
- raise HTTPException(status_code=400, detail=result["error"])
- return result
|