2
2
# @Author : Lan
3
3
# @File : views.py
4
4
# @Software: PyCharm
5
+ import datetime
5
6
6
7
from fastapi import APIRouter , Depends
7
8
from apps .admin .services import FileService , ConfigService , LocalFileService
8
9
from apps .admin .dependencies import admin_required , get_file_service , get_config_service , get_local_file_service
9
10
from apps .admin .schemas import IDData , ShareItem , DeleteItem
10
11
from core .response import APIResponse
12
+ from apps .base .models import FileCodes , KeyValue
11
13
12
14
admin_api = APIRouter (prefix = '/admin' , tags = ['管理' ])
13
15
@@ -17,6 +19,36 @@ async def login(admin: bool = Depends(admin_required)):
17
19
return APIResponse ()
18
20
19
21
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
+
20
52
@admin_api .delete ('/file/delete' )
21
53
async def file_delete (
22
54
data : IDData ,
0 commit comments