diff --git a/routers/statistic.py b/routers/statistic.py index f81bf75..c214559 100644 --- a/routers/statistic.py +++ b/routers/statistic.py @@ -1,20 +1,58 @@ from fastapi import Depends, APIRouter, status, Query, Path, HTTPException from internal.models import * -from internal.database import fetch_one, fetch_all, execute_query, response_success, raise_if_exists,raise_if_not_found +from internal.database import fetch_one, fetch_all, execute_query, response_success, raise_if_exists, raise_if_not_found from dependencies import get_current_active_user +from collections import defaultdict router = APIRouter( prefix="/statistics", tags=['统计'] ) # 统计编辑量 + + @router.get("/list") async def statistic_list(): - select_query = """SELECT DATE(create_at) AS date,COUNT(*) AS writCount FROM + select_query = """SELECT DATE(create_at) AS date,COUNT(*) AS writCount FROM (SELECT create_at FROM diarys UNION ALL SELECT create_at FROM blogs) AS combined GROUP BY DATE ORDER BY DATE DESC;""" statistic_list = fetch_all(select_query) - return response_success(statistic_list, "statistic get list success") \ No newline at end of file + return response_success(statistic_list, "statistic get list success") + +# 记录所有blog和diary数据 + + +@router.get("/comments") +async def get_homepage_data(): + select_blog = """ + select id,blogtitle,blogcontent,imglink,create_at,update_at from blogs ORDER BY create_at DESC; + """ + blog_list = fetch_all(select_blog) + + # 获取日记数据 + select_diary = """ + select id,diarytitle,diarycontent,imglink,create_at,update_at from diarys ORDER BY create_at DESC; + """ + diary_list = fetch_all(select_diary) + + # 按日期分组数据 + grouped_data = defaultdict(lambda: {'blogs': [], 'diaries': []}) + + for blog in blog_list: + date_key = blog['create_at'].date() + grouped_data[date_key]['blogs'].append(blog) + + for diary in diary_list: + date_key = diary['create_at'].date() + grouped_data[date_key]['diaries'].append(diary) + + # 将分组后的数据转换为列表并按日期排序 + result = [ + {'date': date, 'blogs': data['blogs'], 'diaries': data['diaries']} + for date, data in sorted(grouped_data.items(), key=lambda x: x[0], reverse=True) + ] + + return {"data": result}