|
@@ -49,14 +49,101 @@ class DeviceDataView(View):
|
|
return self.golbal_type(request, request_dict, response)
|
|
return self.golbal_type(request, request_dict, response)
|
|
if operation == 'global/active': # 全球设备活跃分布
|
|
if operation == 'global/active': # 全球设备活跃分布
|
|
return self.golbal_active(request, request_dict, response)
|
|
return self.golbal_active(request, request_dict, response)
|
|
- if operation == 'global/addDevice':
|
|
|
|
|
|
+ if operation == 'global/addDevice': # 全球新增设备数据
|
|
return self.golbal_add_device(request, request_dict, response)
|
|
return self.golbal_add_device(request, request_dict, response)
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def golbal_add_device(cls, request, request_dict, response):
|
|
def golbal_add_device(cls, request, request_dict, response):
|
|
- pass
|
|
|
|
|
|
+ """
|
|
|
|
+ 全球新增设备数据
|
|
|
|
+ @param request:请求
|
|
|
|
+ @param request_dict:请求参数
|
|
|
|
+ @param response: 响应对象
|
|
|
|
+ """
|
|
|
|
+ url_list = CommonService.get_domain_name()
|
|
|
|
+ try:
|
|
|
|
+ headers = {
|
|
|
|
+ 'Authorization': request.META.get('HTTP_AUTHORIZATION')
|
|
|
|
+ }
|
|
|
|
+ device_list = []
|
|
|
|
+ device_count = 0
|
|
|
|
+ type_list = []
|
|
|
|
+ type_count = 0
|
|
|
|
+ region_list = []
|
|
|
|
+ region_count = 0
|
|
|
|
+ order_list = []
|
|
|
|
+ order_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']['addDevice']:
|
|
|
|
+ flag = 0
|
|
|
|
+ for each in device_list:
|
|
|
|
+ if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
|
|
|
|
+ each['count'] += item['count']
|
|
|
|
+ device_count += item['count']
|
|
|
|
+ flag = 1
|
|
|
|
+ break
|
|
|
|
+ if flag == 0:
|
|
|
|
+ device_list.append(item)
|
|
|
|
+ device_count += item['count']
|
|
|
|
+ for item in device_list:
|
|
|
|
+ item['rate'] = round(item['count'] / device_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)
|
|
|
|
+ for item in result['result']['type']:
|
|
|
|
+ flag = 0
|
|
|
|
+ for each in type_list:
|
|
|
|
+ if item['type'] == each['type']:
|
|
|
|
+ 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']['version']:
|
|
|
|
+ flag = 0
|
|
|
|
+ for each in order_list:
|
|
|
|
+ if item['type'] == each['type']:
|
|
|
|
+ each['count'] += item['count']
|
|
|
|
+ order_count += item['count']
|
|
|
|
+ flag = 1
|
|
|
|
+ break
|
|
|
|
+ if flag == 0:
|
|
|
|
+ order_list.append(item)
|
|
|
|
+ order_count += item['count']
|
|
|
|
+ for item in order_list:
|
|
|
|
+ item['rate'] = round(item['count'] / order_count * 100, 2)
|
|
|
|
+ else:
|
|
|
|
+ return response.json(result['result_code'])
|
|
|
|
+ res = {
|
|
|
|
+ 'device': device_list,
|
|
|
|
+ 'type': type_list,
|
|
|
|
+ 'region': CommonService.list_sort(region_list),
|
|
|
|
+ 'version': order_list
|
|
|
|
+ }
|
|
|
|
+ return response.json(0, res)
|
|
|
|
+ except Exception as e:
|
|
|
|
+ print(e)
|
|
|
|
+ return response.json(500, repr(e))
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def golbal_active(cls, request, request_dict, response):
|
|
def golbal_active(cls, request, request_dict, response):
|
|
@@ -110,7 +197,7 @@ class DeviceDataView(View):
|
|
return response.json(result['result_code'])
|
|
return response.json(result['result_code'])
|
|
|
|
|
|
res = {
|
|
res = {
|
|
- 'user': type_list,
|
|
|
|
|
|
+ 'device': type_list,
|
|
'region': CommonService.list_sort(region_list)
|
|
'region': CommonService.list_sort(region_list)
|
|
}
|
|
}
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
@@ -405,7 +492,7 @@ class DeviceDataView(View):
|
|
for device_type in device_info_type_qs:
|
|
for device_type in device_info_type_qs:
|
|
type = device_type['Type']
|
|
type = device_type['Type']
|
|
name = DEVICE_TYPE.get(type, '未知类型')
|
|
name = DEVICE_TYPE.get(type, '未知类型')
|
|
- res_part['name'] = name if name != 'UNKOWN' else '未知类型'
|
|
|
|
|
|
+ res_part['type'] = name if name != 'UNKOWN' else '未知类型'
|
|
type_qs = device_info_qs.filter(UID__in=order_type_list).values('UID').order_by(
|
|
type_qs = device_info_qs.filter(UID__in=order_type_list).values('UID').order_by(
|
|
'UID').distinct().values(
|
|
'UID').distinct().values(
|
|
'Type')
|
|
'Type')
|