""" 公开提交流程 - 供外部用户(submitter)使用。 无后台管理权限,仅能提交笑话到 pending 状态。 """ from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from pydantic import BaseModel from app.database import get_db from app.models.joke import Joke router = APIRouter(tags=["笑话提交"]) class JokeSubmit(BaseModel): """笑话提交""" title: str content: str class JokeBatchSubmit(BaseModel): """批量提交""" jokes: list[JokeSubmit] @router.post("/submit", response_model=dict) def submit_joke(data: JokeSubmit, db: Session = Depends(get_db)): """公开接口:提交单条笑话(自动进入待审核状态)""" joke = Joke( title=data.title, content=data.content, status="pending", ) db.add(joke) db.commit() db.refresh(joke) return { "success": True, "id": joke.id, "message": f"已提交,ID: {joke.id}" } @router.post("/submit/batch", response_model=dict) def submit_jokes_batch(data: JokeBatchSubmit, db: Session = Depends(get_db)): """公开接口:批量提交笑话""" added = [] for item in data.jokes: joke = Joke( title=item.title, content=item.content, status="pending", ) db.add(joke) added.append(item.title) db.commit() return { "success": True, "count": len(added), "message": f"已提交 {len(added)} 条笑话" }