ソースを参照

增长用户、活跃用户占比

peng 3 年 前
コミット
9aa2bc5e8b

+ 22 - 1
AdminController/dataSystemManagement/BusinessDataController.py

@@ -11,7 +11,7 @@ import requests
 from django.db.models import Q, Count, Sum
 from django.db.models import Q, Count, Sum
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
-from Model.models import VodHlsModel, VideoPlaybackTimeModel
+from Model.models import VodHlsModel, VideoPlaybackTimeModel, Device_Info
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 
 
 
 
@@ -36,6 +36,8 @@ class BusinessDataView(View):
             return self.query_device_vod_business(request_dict, response)
             return self.query_device_vod_business(request_dict, response)
         elif operation == 'global/vodData':  # 查询全球设备云存储数据
         elif operation == 'global/vodData':  # 查询全球设备云存储数据
             return self.query_global_device_vod_business(request, request_dict, response)
             return self.query_global_device_vod_business(request, request_dict, response)
+        elif operation == 'test':  # 查询全球设备云存储数据
+            return self.test(request_dict, response)
         else:
         else:
             return response.json(414)
             return response.json(414)
 
 
@@ -113,3 +115,22 @@ class BusinessDataView(View):
             return response.json(0, res)
             return response.json(0, res)
         except Exception as e:
         except Exception as e:
             return response.json(500, repr(e))
             return response.json(500, repr(e))
+
+    @classmethod
+    def test(cls, request_dict, response):
+        """
+        查询全球设备云存储数据
+        @param request_dict:请求参数
+        @param response:响应对象
+        @return:
+        """
+
+        try:
+            a = Device_Info.objects.all().values('Type').annotate(count=Count('Type')).order_by('-count')
+            b = Device_Info.objects.all().values('Type').annotate(count=Count('Type', distinct=True)).order_by('-count')
+            for item in a:
+                c = Device_Info.objects.filter(Type=item['Type']).values('UID').annotate(
+                    count=Count('UID', distinct=True)).order_by('-count').count()
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, repr(e))

+ 7 - 12
AdminController/dataSystemManagement/DeviceDataController.py

@@ -210,7 +210,7 @@ class DeviceDataView(View):
         @param response:响应对象
         @param response:响应对象
         @return:
         @return:
         """
         """
-        device_info_qs = Device_Info.objects.values('UID').order_by('UID').distinct().values('UID', 'Type')
+        device_info_qs = Device_Info.objects.all().values('Type').annotate(count=Count('Type')).order_by('-count')
         if not device_info_qs.exists():
         if not device_info_qs.exists():
             return response.json(444)
             return response.json(444)
         try:
         try:
@@ -219,17 +219,12 @@ class DeviceDataView(View):
                 type = device_info['Type']
                 type = device_info['Type']
                 name = DEVICE_TYPE.get(type, '未知类型')
                 name = DEVICE_TYPE.get(type, '未知类型')
                 name = name if name != 'UNKOWN' else '未知类型'
                 name = name if name != 'UNKOWN' else '未知类型'
-                flag = 0
-                for item in device_info_list:
-                    if item['type'] == name:
-                        item['total'] += 1
-                        flag = 1
-                        break
-                if flag == 0:
-                    device_info_list.append({
-                        'type': name,
-                        'total': 1
-                    })
+                count = Device_Info.objects.filter(Type=device_info['Type']).values('UID').annotate(
+                    count=Count('UID', distinct=True)).order_by('-count').count()
+                device_info_list.append({
+                    'type': name,
+                    'total': count
+                })
             return response.json(0, device_info_list)
             return response.json(0, device_info_list)
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)

+ 14 - 0
AdminController/dataSystemManagement/UserDataController.py

@@ -75,8 +75,10 @@ class UserDataView(View):
                 s_time = datetime.datetime.fromtimestamp(int(item[0]))
                 s_time = datetime.datetime.fromtimestamp(int(item[0]))
                 e_time = datetime.datetime.fromtimestamp(int(item[1]))
                 e_time = datetime.datetime.fromtimestamp(int(item[1]))
                 user_date_qs = user_qs.filter(last_login__range=(s_time, e_time))
                 user_date_qs = user_qs.filter(last_login__range=(s_time, e_time))
+                rate = round(user_date_qs.count()/count*100, 2)
                 user_dict = {
                 user_dict = {
                     'count': user_date_qs.count(),
                     'count': user_date_qs.count(),
+                    'rate': rate,
                     'startTime': item[0],
                     'startTime': item[0],
                     'endTime': item[1]
                     'endTime': item[1]
                 }
                 }
@@ -130,8 +132,10 @@ class UserDataView(View):
                 s_time = datetime.datetime.fromtimestamp(int(item[0]))
                 s_time = datetime.datetime.fromtimestamp(int(item[0]))
                 e_time = datetime.datetime.fromtimestamp(int(item[1]))
                 e_time = datetime.datetime.fromtimestamp(int(item[1]))
                 user_date_qs = user_qs.filter(last_login__range=(s_time, e_time))
                 user_date_qs = user_qs.filter(last_login__range=(s_time, e_time))
+                rate = round(user_date_qs.count()/count*100, 2)
                 user_dict = {
                 user_dict = {
                     'count': user_date_qs.count(),
                     'count': user_date_qs.count(),
+                    'rate': rate,
                     'startTime': item[0],
                     'startTime': item[0],
                     'endTime': item[1]
                     'endTime': item[1]
                 }
                 }
@@ -203,6 +207,7 @@ class UserDataView(View):
                 'Authorization': request.META.get('HTTP_AUTHORIZATION')
                 'Authorization': request.META.get('HTTP_AUTHORIZATION')
             }
             }
             user_list = []
             user_list = []
+            user_count = 0
             region_list = []
             region_list = []
             region_count = 0
             region_count = 0
             for url in url_list:
             for url in url_list:
@@ -214,10 +219,14 @@ class UserDataView(View):
                         for each in user_list:
                         for each in user_list:
                             if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
                             if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
                                 each['count'] += item['count']
                                 each['count'] += item['count']
+                                user_count += item['count']
                                 flag = 1
                                 flag = 1
                                 break
                                 break
                         if flag == 0:
                         if flag == 0:
                             user_list.append(item)
                             user_list.append(item)
+                            user_count += item['count']
+                    for item in user_list:
+                        item['rate'] = round(item['count']/user_count*100, 2)
                     for item in result['result']['region']:
                     for item in result['result']['region']:
                         flag = 0
                         flag = 0
                         for each in region_list:
                         for each in region_list:
@@ -261,6 +270,7 @@ class UserDataView(View):
                 'Authorization': request.META.get('HTTP_AUTHORIZATION')
                 'Authorization': request.META.get('HTTP_AUTHORIZATION')
             }
             }
             user_list = []
             user_list = []
+            user_count = 0
             region_list = []
             region_list = []
             region_count = 0
             region_count = 0
             for url in url_list:
             for url in url_list:
@@ -272,10 +282,14 @@ class UserDataView(View):
                         for each in user_list:
                         for each in user_list:
                             if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
                             if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
                                 each['count'] += item['count']
                                 each['count'] += item['count']
+                                user_count += item['count']
                                 flag = 1
                                 flag = 1
                                 break
                                 break
                         if flag == 0:
                         if flag == 0:
                             user_list.append(item)
                             user_list.append(item)
+                            user_count += item['count']
+                    for item in user_list:
+                        item['rate'] = round(item['count']/user_count*100, 2)
                     for item in result['result']['region']:
                     for item in result['result']['region']:
                         flag = 0
                         flag = 0
                         for each in region_list:
                         for each in region_list: