添加控制台部件
commit
ee421b6fdf
|
@ -4,6 +4,7 @@ from rest_framework import routers
|
||||||
from dvadmin.system.views.api_white_list import ApiWhiteListViewSet
|
from dvadmin.system.views.api_white_list import ApiWhiteListViewSet
|
||||||
from dvadmin.system.views.area import AreaViewSet
|
from dvadmin.system.views.area import AreaViewSet
|
||||||
from dvadmin.system.views.clause import PrivacyView, TermsServiceView
|
from dvadmin.system.views.clause import PrivacyView, TermsServiceView
|
||||||
|
from dvadmin.system.views.datav import DataVViewSet
|
||||||
from dvadmin.system.views.dept import DeptViewSet
|
from dvadmin.system.views.dept import DeptViewSet
|
||||||
from dvadmin.system.views.dictionary import DictionaryViewSet
|
from dvadmin.system.views.dictionary import DictionaryViewSet
|
||||||
from dvadmin.system.views.file_list import FileViewSet
|
from dvadmin.system.views.file_list import FileViewSet
|
||||||
|
@ -40,5 +41,6 @@ urlpatterns = [
|
||||||
path('dept_lazy_tree/', DeptViewSet.as_view({'get': 'dept_lazy_tree'})),
|
path('dept_lazy_tree/', DeptViewSet.as_view({'get': 'dept_lazy_tree'})),
|
||||||
path('clause/privacy.html', PrivacyView.as_view()),
|
path('clause/privacy.html', PrivacyView.as_view()),
|
||||||
path('clause/terms_service.html', TermsServiceView.as_view()),
|
path('clause/terms_service.html', TermsServiceView.as_view()),
|
||||||
|
path('homepage_statistics/', DataVViewSet.as_view({'get': 'homepage_statistics'})),
|
||||||
]
|
]
|
||||||
urlpatterns += system_url.urls
|
urlpatterns += system_url.urls
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# @Time : 2023/4/14 15:49
|
||||||
|
# @Author : harry
|
||||||
|
import datetime
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
|
||||||
|
from django.db.models import Count
|
||||||
|
from rest_framework.decorators import action
|
||||||
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
from rest_framework.viewsets import GenericViewSet
|
||||||
|
|
||||||
|
from dvadmin.system.models import Users, LoginLog, FileList
|
||||||
|
from dvadmin.system.views.login_log import LoginLogSerializer
|
||||||
|
from dvadmin.utils.json_response import DetailResponse
|
||||||
|
|
||||||
|
|
||||||
|
def jx_timestamp():
|
||||||
|
cur_time = datetime.datetime.now()
|
||||||
|
a = datetime.datetime.strftime(cur_time, '%Y-%m-%d %H:%M:%S')
|
||||||
|
timeStamp = int(time.mktime(time.strptime(a, "%Y-%m-%d %H:%M:%S")))
|
||||||
|
timeArray = time.localtime(timeStamp)
|
||||||
|
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
|
||||||
|
return otherStyleTime
|
||||||
|
|
||||||
|
|
||||||
|
class DataVViewSet(GenericViewSet):
|
||||||
|
queryset = LoginLog.objects.all()
|
||||||
|
serializer_class = LoginLogSerializer
|
||||||
|
extra_filter_backends = []
|
||||||
|
ordering_fields = ['create_datetime']
|
||||||
|
|
||||||
|
@action(methods=["GET"], detail=False, permission_classes=[IsAuthenticated])
|
||||||
|
def homepage_statistics(self, request):
|
||||||
|
# Users 新增
|
||||||
|
# LoginLog # 最后登录
|
||||||
|
timestr = jx_timestamp().split(" ")
|
||||||
|
min_time = datetime.datetime.strptime(timestr[0] + " " + "00:00:00", "%Y-%m-%d %H:%M:%S")
|
||||||
|
max_time = datetime.datetime.strptime(timestr[0] + " " + "23:59:59", "%Y-%m-%d %H:%M:%S")
|
||||||
|
# 今日注册
|
||||||
|
today_register = Users.objects.filter(create_datetime__gte=min_time, is_superuser=0).count()
|
||||||
|
# 今日登录
|
||||||
|
today_login = len(set(LoginLog.objects.filter(create_datetime__gte=min_time).values_list('username')))
|
||||||
|
# 三日新增
|
||||||
|
Three_days_register = Users.objects.filter(
|
||||||
|
create_datetime__gte=min_time - datetime.timedelta(days=3), is_superuser=0).count()
|
||||||
|
# 七日新增
|
||||||
|
Seven_days_register = Users.objects.filter(
|
||||||
|
create_datetime__gte=min_time - datetime.timedelta(days=7), is_superuser=0).count()
|
||||||
|
# 七日活跃
|
||||||
|
Seven_days_login = len(set(LoginLog.objects.filter(
|
||||||
|
create_datetime__gte=min_time - datetime.timedelta(days=7)).values_list('username')))
|
||||||
|
# 月活跃
|
||||||
|
month_login = len(set(LoginLog.objects.filter(
|
||||||
|
create_datetime__gte=min_time - datetime.timedelta(days=30)).values_list('username')))
|
||||||
|
# 七日用户登录数
|
||||||
|
sum_days_login_list = []
|
||||||
|
for i in range(7):
|
||||||
|
sum_days_login_list.append({"time": (min_time + datetime.timedelta(days=-i)).strftime("%Y-%m-%d"),
|
||||||
|
"count": len(set(LoginLog.objects.filter(
|
||||||
|
create_datetime__lte=max_time - datetime.timedelta(days=i),
|
||||||
|
create_datetime__gte=min_time - datetime.timedelta(days=i)).values_list(
|
||||||
|
'username')))})
|
||||||
|
|
||||||
|
# 七日注册用户数
|
||||||
|
sum_days_register_list = []
|
||||||
|
for i in range(7):
|
||||||
|
sum_days_register_list.append(
|
||||||
|
{"time": (min_time + datetime.timedelta(days=-i)).strftime("%Y-%m-%d"), "count": Users.objects.filter(
|
||||||
|
create_datetime__lte=max_time - datetime.timedelta(days=i),
|
||||||
|
create_datetime__gte=min_time - datetime.timedelta(days=i), is_superuser=0).count()})
|
||||||
|
# 用户总数
|
||||||
|
sum_register = Users.objects.filter(is_superuser=0).count()
|
||||||
|
# FileList 附件
|
||||||
|
today_f_l = FileList.objects.filter(create_datetime__gte=min_time).count()
|
||||||
|
sum_f_l = FileList.objects.all().count()
|
||||||
|
# 今日附件
|
||||||
|
today_file = {'count': today_f_l, "occupy_space": 0}
|
||||||
|
# 总附件
|
||||||
|
sum_file = {'count': sum_f_l, "occupy_space": 0}
|
||||||
|
data = {
|
||||||
|
"today_register": today_register,
|
||||||
|
"today_login": today_login,
|
||||||
|
"Three_days_register": Three_days_register,
|
||||||
|
"Seven_days_register": Seven_days_register,
|
||||||
|
"Seven_days_login": Seven_days_login,
|
||||||
|
"month_login": month_login,
|
||||||
|
"sum_days_login_list": sum_days_login_list,
|
||||||
|
"sum_days_register_list": sum_days_register_list,
|
||||||
|
"sum_register": sum_register,
|
||||||
|
"today_file": today_file,
|
||||||
|
"sum_file": sum_file,
|
||||||
|
}
|
||||||
|
return DetailResponse(data=data, msg="获取成功")
|
Loading…
Reference in New Issue