Ver código fonte

修改业务数据增加播放时长

peng 3 anos atrás
pai
commit
9bb3663666

+ 16 - 7
AdminController/dataSystemManagement/BusinessDataController.py

@@ -55,25 +55,31 @@ class BusinessDataView(View):
             return response.json(444, {'error param': 'startTime or endTime'})
         try:
             vod_hls_qs = VodHlsModel.objects.filter(time__range=(start_time, end_time))
-            video_play_qs = VideoPlaybackTimeModel.objects.filter(startTime__range=(start_time, end_time))
+            video_play_qs = VideoPlaybackTimeModel.objects.filter(startTime__range=(start_time, end_time),
+                                                                  playMode='could')
             upload_duration_qs = vod_hls_qs.values('uid').annotate(uploadFrequency=Count('uid')).order_by(
                 'uploadFrequency')
-            device_count = len(upload_duration_qs)  # 上传设备数量
+            upload_device_count = len(upload_duration_qs)  # 上传设备数量
             uid_list = []
             for item in upload_duration_qs:
                 item['uploadDuration'] = vod_hls_qs.filter(uid=item['uid']).aggregate(total=Sum('sec'))['total']
+                item['playDuration'] = video_play_qs.filter(uid=item['uid']).aggregate(total=Sum('duration'))['total']
+                item['playDuration'] = item['playDuration'] if item['playDuration'] else 0
                 item['playFrequency'] = video_play_qs.filter(uid=item['uid'], playMode='cloud').count()
                 uid_list.append(item['uid'])
 
             video_play_qs = video_play_qs.filter(~Q(uid__in=uid_list))
             play_duration_qs = video_play_qs.values('uid').annotate(playFrequency=Count('uid')).order_by(
                 'playFrequency')
-
+            play_device_count = play_duration_qs.count()
             for item in play_duration_qs:
                 item['uploadFrequency'] = 0
                 item['uploadDuration'] = 0
+                item['playDuration'] = video_play_qs.filter(uid=item['uid']).aggregate(total=Sum('duration'))['total']
+                item['playDuration'] = item['playDuration'] if item['playDuration'] else 0
             res = {
-                'deviceCount': device_count,
+                'uploadDeviceCount': upload_device_count,
+                'playDeviceCount': play_device_count,
                 'vodData': list(upload_duration_qs) + list(play_duration_qs)
             }
             return response.json(0, res)
@@ -94,19 +100,22 @@ class BusinessDataView(View):
             headers = {
                 'Authorization': request.META.get('HTTP_AUTHORIZATION')
             }
-            device_count = 0
+            upload_device_count = 0
+            play_device_count = 0
             vod_list = []
             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:
-                    device_count += int(result['result']['deviceCount'])
+                    upload_device_count += int(result['result']['uploadDeviceCount'])
+                    play_device_count += int(result['result']['playDeviceCount'])
                     vod_list += result['result']['vodData']
                 else:
                     return response.json(result['result_code'])
             res = {
-                'deviceCount': device_count,
+                'uploadDeviceCount': upload_device_count,
+                'playDeviceCount': play_device_count,
                 'vodData': vod_list
             }
             return response.json(0, res)