Эх сурвалжийг харах

新增全球设备活跃查询接口

guanhailong 3 жил өмнө
parent
commit
a7bbce1b58

+ 79 - 1
AdminController/dataSystemManagement/DeviceDataController.py

@@ -47,9 +47,77 @@ class DeviceDataView(View):
             return self.global_regional(request, request_dict, response)
         if operation == 'global/type':  # 全球设备类型
             return self.golbal_type(request, request_dict, response)
+        if operation == 'global/active':  # 全球设备活跃分布
+            return self.golbal_active(request, request_dict, response)
+        if operation == 'global/addDevice':
+            return self.golbal_add_device(request, request_dict, response)
         else:
             return response.json(414)
 
+    @classmethod
+    def golbal_add_device(cls, request, request_dict, response):
+        pass
+
+    @classmethod
+    def golbal_active(cls, request, request_dict, response):
+        """
+        全球设备活跃分布
+        @param request:请求
+        @param request_dict:请求参数
+        @param response: 响应对象
+        """
+        url_list = CommonService.get_domain_name()
+        try:
+            headers = {
+                'Authorization': request.META.get('HTTP_AUTHORIZATION')
+            }
+            type_list = []
+            type_count = 0
+            region_list = []
+            region_count = 0
+            for url in url_list:
+                url = url + request.path.replace('global/', '')
+                res = requests.get(url=url, params=request_dict, headers=headers)
+                result = res.json()
+                if result['result_code'] == 0:
+                    for item in result['result']['vodHls']:
+                        flag = 0
+                        for each in type_list:
+                            if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
+                                each['count'] += item['count']
+                                type_count += item['count']
+                                flag = 1
+                                break
+                        if flag == 0:
+                            type_list.append(item)
+                            type_count += item['count']
+                    for item in type_list:
+                        item['rate'] = round(item['count'] / type_count * 100, 2)
+                    for item in result['result']['region']:
+                        flag = 0
+                        for each in region_list:
+                            if item['countryName'] == each['countryName']:
+                                each['count'] += item['count']
+                                region_count += item['count']
+                                flag = 1
+                                break
+                        if flag == 0:
+                            region_list.append(item)
+                            region_count += item['count']
+                    for item in region_list:
+                        item['rate'] = round(item['count'] / region_count * 100, 2)
+                else:
+                    return response.json(result['result_code'])
+
+            res = {
+                'user': type_list,
+                'region': CommonService.list_sort(region_list)
+            }
+            return response.json(0, res)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
     @classmethod
     def golbal_type(cls, request, request_dict, response):
         """
@@ -158,6 +226,13 @@ class DeviceDataView(View):
 
     @classmethod
     def device_active(cls, request_dict, response):
+        """
+        设备活跃数据
+        @param request_dict:请求参数
+        @request_dict starTime:开始时间
+        @request_dict endTime:结束时间
+        @param response:响应对象
+        """
         start_time = request_dict.get('startTime', None)  # 时间戳
         end_time = request_dict.get('endTime', None)
         unit_time = request_dict.get('unitTime', None)
@@ -168,6 +243,8 @@ class DeviceDataView(View):
         time_list = CommonService.cutting_time(s_time, e_time, unit_time)
         try:
             vod_hls_model_qs = VodHlsModel.objects.filter(time__range=(start_time, end_time))
+            if not vod_hls_model_qs.exists():
+                return response.json(173)
             device_info = list(vod_hls_model_qs.values('uid').order_by('uid').distinct())
             device_info_list = [item[key] for item in device_info for key in item]
             count_all = len(device_info_list)
@@ -319,7 +396,8 @@ class DeviceDataView(View):
                 # 统计设备版本数量
                 order_model_qs = Order_Model.objects.filter(UID__in=part_only_list).values('UID').annotate(
                     count=Count('UID', distinct=True))
-                uid_qs = order_model_qs.values('UID').order_by('UID').distinct()
+                order_uid_qs = list(order_model_qs.values('UID').order_by('UID').distinct())
+                order_list = []
                 order_model_qs = order_model_qs.values('order_type').order_by('order_type')
                 # count = order_model_qs.count()
                 order_type_list = []