from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.database import get_db from app.models.link import Link from app.schemas.link import LinkCreate, LinkResponse, LinkApply router = APIRouter(tags=["友情链接"]) @router.get("/links", response_model=list[LinkResponse]) def list_links(db: Session = Depends(get_db)): """公开:获取已通过审核的友情链接""" return db.query(Link).filter(Link.status == "approved").order_by(Link.sort_order, Link.id).all() @router.post("/links/apply", response_model=LinkResponse) def apply_link(link_data: LinkApply, db: Session = Depends(get_db)): """公开:申请友链""" # 检查是否已存在同名或同URL的申请/已通过友链 existing = db.query(Link).filter( (Link.name == link_data.name) | (Link.url == link_data.url) ).first() if existing: return existing # 已存在则返回已有记录 link = Link( name=link_data.name, url=link_data.url, description=link_data.description, contact=link_data.contact, status="pending", sort_order=999, # 新申请放在最后 ) db.add(link) db.commit() db.refresh(link) return link