feat:增加博客统计接口

This commit is contained in:
2025-10-27 15:04:47 +08:00
parent 02983a882d
commit 8ad63f9a78
7 changed files with 265 additions and 16 deletions

View File

@@ -1,7 +1,9 @@
from fastapi import FastAPI
from .blog import router as blog_router
from .blog_stats import router as blog_stats_router
from .session import router as session_router
def register_routers(app: FastAPI):
app.include_router(blog_router, prefix="")
app.include_router(blog_stats_router, prefix="")
app.include_router(session_router, prefix="")

View File

@@ -47,6 +47,11 @@ def query_blog_by_condition(query: BlogQuery = Depends(),
return blog_service.query_blog_by_condition(db, query)
@router.get("/unapproved", summary="查询待发布博客", response_model=List[BlogResponse])
def query_unapproved_blog(db: Session = Depends(get_db), _=Depends(verify_token)):
return blog_service.query_unapproved_blog(db)
@router.get("/{blog_id}/content", summary="查询博客内容", response_model=BlogResponse)
def query_blog_by_id(blog_id: int, db: Session = Depends(get_db)):
return blog_service.query_blog_by_id(db, blog_id)

51
api/blog_stats.py Normal file
View File

@@ -0,0 +1,51 @@
from typing import List
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from schemas.blog_stats import BlogOverview, BlogChartStats
from config.database import get_db
from service import blog_stats_service
router = APIRouter(
prefix="/stats",
tags=["博客统计"],
responses={404: {"description": "Not found"}}
)
@router.get("/overview", summary="统计数据", response_model=BlogOverview)
def query_blog_overview(db: Session = Depends(get_db)):
return blog_stats_service.query_blog_overview(db)
@router.get("/category", summary="博客分类统计", response_model=List[BlogChartStats])
def query_blog_category(db: Session = Depends(get_db)):
return blog_stats_service.query_blog_category(db)
@router.get("/approved/monthly", summary="每月博客发布统计", response_model=List[BlogChartStats])
def query_blog_monthly(year: int, db: Session = Depends(get_db)):
return blog_stats_service.query_blog_approved_monthly(db, year)
@router.get("/visit/monthly", summary="每月博客访问统计", response_model=List[BlogChartStats])
def query_blog_visit_monthly(year: int, db: Session = Depends(get_db)):
return blog_stats_service.query_blog_visit_monthly(db, year)
@router.get("/visit/rank", summary="博客访问数量排行", response_model=List[BlogChartStats])
def query_blog_visit_rank(db: Session = Depends(get_db)):
return blog_stats_service.query_blog_visit_rank(db)
@router.get("/read/rank", summary="博客阅读时长排行", response_model=List[BlogChartStats])
def query_blog_read_rank(db: Session = Depends(get_db)):
return blog_stats_service.query_blog_read_rank(db)
@router.get("/comment/rank", summary="博客评论数量排行", response_model=List[BlogChartStats])
def query_blog_comment_rank(db: Session = Depends(get_db)):
return blog_stats_service.query_blog_comment_rank(db)
# 分类统计饼图