1 changed files with 41 additions and 3 deletions
@ -1,20 +1,58 @@ |
|||||
from fastapi import Depends, APIRouter, status, Query, Path, HTTPException |
from fastapi import Depends, APIRouter, status, Query, Path, HTTPException |
||||
from internal.models import * |
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 dependencies import get_current_active_user |
||||
|
from collections import defaultdict |
||||
|
|
||||
router = APIRouter( |
router = APIRouter( |
||||
prefix="/statistics", |
prefix="/statistics", |
||||
tags=['统计'] |
tags=['统计'] |
||||
) |
) |
||||
# 统计编辑量 |
# 统计编辑量 |
||||
|
|
||||
|
|
||||
@router.get("/list") |
@router.get("/list") |
||||
async def statistic_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 |
(SELECT create_at FROM diarys |
||||
UNION ALL |
UNION ALL |
||||
SELECT create_at FROM blogs) AS combined |
SELECT create_at FROM blogs) AS combined |
||||
GROUP BY DATE |
GROUP BY DATE |
||||
ORDER BY DATE DESC;""" |
ORDER BY DATE DESC;""" |
||||
statistic_list = fetch_all(select_query) |
statistic_list = fetch_all(select_query) |
||||
return response_success(statistic_list, "statistic get list success") |
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} |
Reference in new issue
xxxxxxxxxx