|
@@ -47,9 +47,77 @@ class DeviceDataView(View):
|
|
return self.global_regional(request, request_dict, response)
|
|
return self.global_regional(request, request_dict, response)
|
|
if operation == 'global/type': # 全球设备类型
|
|
if operation == 'global/type': # 全球设备类型
|
|
return self.golbal_type(request, request_dict, response)
|
|
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:
|
|
else:
|
|
return response.json(414)
|
|
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
|
|
@classmethod
|
|
def golbal_type(cls, request, request_dict, response):
|
|
def golbal_type(cls, request, request_dict, response):
|
|
"""
|
|
"""
|
|
@@ -158,6 +226,13 @@ class DeviceDataView(View):
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def device_active(cls, request_dict, response):
|
|
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) # 时间戳
|
|
start_time = request_dict.get('startTime', None) # 时间戳
|
|
end_time = request_dict.get('endTime', None)
|
|
end_time = request_dict.get('endTime', None)
|
|
unit_time = request_dict.get('unitTime', 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)
|
|
time_list = CommonService.cutting_time(s_time, e_time, unit_time)
|
|
try:
|
|
try:
|
|
vod_hls_model_qs = VodHlsModel.objects.filter(time__range=(start_time, end_time))
|
|
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(vod_hls_model_qs.values('uid').order_by('uid').distinct())
|
|
device_info_list = [item[key] for item in device_info for key in item]
|
|
device_info_list = [item[key] for item in device_info for key in item]
|
|
count_all = len(device_info_list)
|
|
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(
|
|
order_model_qs = Order_Model.objects.filter(UID__in=part_only_list).values('UID').annotate(
|
|
count=Count('UID', distinct=True))
|
|
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')
|
|
order_model_qs = order_model_qs.values('order_type').order_by('order_type')
|
|
# count = order_model_qs.count()
|
|
# count = order_model_qs.count()
|
|
order_type_list = []
|
|
order_type_list = []
|