hulai-admin-api/app/routers/navigation.py
刘涛 8c0a5f489d Initial commit: hulai admin API backend
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 22:01:23 +08:00

45 行
1.6 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.database import get_db
from app.auth import get_current_user
from app.models.navigation import NavHeader, NavFooterGroup, NavFooterLink
from app.schemas.navigation import NavigationSchema
router = APIRouter(prefix="/api/navigation", tags=["导航菜单"], dependencies=[Depends(get_current_user)])
@router.get("/", response_model=NavigationSchema)
def get_navigation(db: Session = Depends(get_db)):
headers = db.query(NavHeader).order_by(NavHeader.sort_order).all()
groups = db.query(NavFooterGroup).order_by(NavFooterGroup.sort_order).all()
return NavigationSchema(
header=[{"text": h.text, "to": h.to_path} for h in headers],
footer=[
{"title": g.title, "links": [{"text": l.text, "to": l.to_path} for l in g.links]}
for g in groups
],
)
@router.put("/")
def update_navigation(req: NavigationSchema, db: Session = Depends(get_db)):
# Replace header
db.query(NavHeader).delete()
for i, h in enumerate(req.header):
db.add(NavHeader(text=h.text, to_path=h.to, sort_order=i))
# Replace footer
db.query(NavFooterLink).delete()
db.query(NavFooterGroup).delete()
for i, g in enumerate(req.footer):
group = NavFooterGroup(title=g.title, sort_order=i)
db.add(group)
db.flush()
for j, link in enumerate(g.links):
db.add(NavFooterLink(group_id=group.id, text=link.text, to_path=link.to, sort_order=j))
db.commit()
return {"message": "导航更新成功"}