22# @Author : Lan
33# @File : views.py
44# @Software: PyCharm
5+ import datetime
56
67from fastapi import APIRouter , Depends
78from apps .admin .services import FileService , ConfigService , LocalFileService
89from apps .admin .dependencies import admin_required , get_file_service , get_config_service , get_local_file_service
910from apps .admin .schemas import IDData , ShareItem , DeleteItem
1011from core .response import APIResponse
12+ from apps .base .models import FileCodes , KeyValue
1113
1214admin_api = APIRouter (prefix = '/admin' , tags = ['管理' ])
1315
@@ -17,6 +19,36 @@ async def login(admin: bool = Depends(admin_required)):
1719 return APIResponse ()
1820
1921
22+ @admin_api .get ('/dashboard' )
23+ async def dashboard (admin : bool = Depends (admin_required )):
24+ all_codes = await FileCodes .all ()
25+ all_size = str (sum ([code .size for code in all_codes ]))
26+ sys_start = await KeyValue .filter (key = 'sys_start' ).first ()
27+ # 获取当前日期时间
28+ now = datetime .datetime .now ()
29+ today_start = now .replace (hour = 0 , minute = 0 , second = 0 , microsecond = 0 )
30+ yesterday_start = today_start - datetime .timedelta (days = 1 )
31+ yesterday_end = today_start - datetime .timedelta (microseconds = 1 )
32+ # 统计昨天一整天的记录数(从昨天0点到23:59:59)
33+ yesterday_codes = FileCodes .filter (
34+ created_at__gte = yesterday_start ,
35+ created_at__lte = yesterday_end
36+ )
37+ # 统计今天到现在的记录数(从今天0点到现在)
38+ today_codes = FileCodes .filter (
39+ created_at__gte = today_start
40+ )
41+ return APIResponse (detail = {
42+ 'totalFiles' : len (all_codes ),
43+ 'storageUsed' : all_size ,
44+ 'sysUptime' : sys_start .value ,
45+ 'yesterdayCount' : await yesterday_codes .count (),
46+ 'yesterdaySize' : str (sum ([code .size for code in await yesterday_codes ])),
47+ 'todayCount' : await today_codes .count (),
48+ 'todaySize' : str (sum ([code .size for code in await today_codes ])),
49+ })
50+
51+
2052@admin_api .delete ('/file/delete' )
2153async def file_delete (
2254 data : IDData ,
0 commit comments