Преглед на файлове

Merge remote-tracking branch 'remotes/origin/peng' into test

Ansjer преди 2 години
родител
ревизия
b8375052f5
променени са 1 файла, в които са добавени 29 реда и са изтрити 26 реда
  1. 29 26
      Controller/IcloudService/IcloudService.py

+ 29 - 26
Controller/IcloudService/IcloudService.py

@@ -36,25 +36,26 @@ class IcloudServiceView(View):
 
     def validation(self, request_dict, operation, request):
         response = ResponseObject()
-        tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
-        response.lang = tko.lang
-        user_id = tko.userID
-        if tko.code != 0:
-            return response.json(tko.code)
-        if operation == 'vodUpload':  # 云存上传云盘
-            return self.vod_upload(request_dict, response, user_id)
-        elif operation == 'getUploadUrl':  # 获取s3上传地址
-            return self.get_upload_url(request_dict, response, user_id)
-        elif operation == 'localUpload':  # 本地上传云盘
-            return self.local_upload(request_dict, response, user_id)
-        elif operation == 'deleteIcloudRecord':  # 删除云盘记录
-            return self.delete_icloud_record(request_dict, response, user_id)
-        elif operation == 'getIcloudList':  # 获取云盘播放列表
-            return self.get_icloud_list(request_dict, response, user_id)
-        elif operation == 'icloudPlay':  # 云盘播放
-            return self.icloud_play(request_dict, response, user_id)
+        if operation == 'icloudPlay':  # 云盘播放
+            return self.icloud_play(request_dict, response)
         else:
-            return response.json(404)
+            tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
+            response.lang = tko.lang
+            user_id = tko.userID
+            if tko.code != 0:
+                return response.json(tko.code)
+            if operation == 'vodUpload':  # 云存上传云盘
+                return self.vod_upload(request_dict, response, user_id)
+            elif operation == 'getUploadUrl':  # 获取s3上传地址
+                return self.get_upload_url(request_dict, response, user_id)
+            elif operation == 'localUpload':  # 本地上传云盘
+                return self.local_upload(request_dict, response, user_id)
+            elif operation == 'deleteIcloudRecord':  # 删除云盘记录
+                return self.delete_icloud_record(request_dict, response, user_id)
+            elif operation == 'getIcloudList':  # 获取云盘播放列表
+                return self.get_icloud_list(request_dict, response, user_id)
+            else:
+                return response.json(404)
 
     @staticmethod
     def vod_upload(request_dict, response, user_id):
@@ -403,12 +404,12 @@ class IcloudServiceView(View):
         icloud_list = []
         use_details_qs = IcloudUseDetails.objects.filter(user_id=user_id).values('id')
         if not use_details_qs.exists():
-            return response.json(173)
+            return response.json(911)
         use_details_id = use_details_qs[0]['id']
         all_size = IcloudService.objects.filter(Q(use_details_id=use_details_id), Q(use_status=0),
                                                 Q(end_time__gt=now_time) | Q(end_time=0)).values(
             'size').aggregate(total_size=Sum('size'))['total_size']
-        all_size = all_size * 1024 if all_size else 0  # 转换单位为MB
+        all_size = float(all_size * 1024) if all_size else 0  # 转换单位为MB
         icloud_record_qs = IcloudStorageRecord.objects.filter(user_id=user_id)
         if start_time and end_time:  # 按时间段查询
             icloud_record_qs = icloud_record_qs.filter(time_stamp__gte=start_time, time_stamp__lt=end_time)
@@ -420,7 +421,7 @@ class IcloudServiceView(View):
                                                    'time_stamp', 'file_type').order_by('-time_stamp')[
                            (page - 1) * line:page * line]
         if not icloud_record_qs.exists():
-            return response.json(0, icloud_list)
+            return response.json(0, {'icloudList': icloud_list, 'notShow': 0})
         bucket_id = icloud_record_qs[0]['bucket_id']
         bucket_qs = VodBucketModel.objects.filter(id=bucket_id).values('bucket', 'region', 'mold')
         if not bucket_qs.exists():
@@ -441,7 +442,7 @@ class IcloudServiceView(View):
                 time_stamp = item['time_stamp']
                 file_type = item['file_type']
                 total_size += float(item['size'])
-                uid_token = TokenObject().encryption(data={'uid': uid})
+                uid_token = TokenObject().encryption(data={'uid': uid, 'user_id': user_id})
                 res_data = {
                     'is_show': 1 if total_size < all_size else 0,  # 只展示剩余容量的数据,超过的部分不展示
                     'time_stamp': time_stamp,
@@ -484,17 +485,17 @@ class IcloudServiceView(View):
                     res_data['icloud_url'] = response_url
                     res_data['sec'] = item['sec']
                     icloud_list.append(res_data)
-            return response.json(0, icloud_list)
+            not_show = total_size - all_size if total_size > all_size else 0
+            return response.json(0, {'icloudList': icloud_list, 'notShow': not_show})
         except Exception as e:
             LOGGER.info('获取云盘播放列表异常:{}'.format(repr(e)))
             return response.json(500)
 
     @staticmethod
-    def icloud_play(request_dict, response, user_id):
+    def icloud_play(request_dict, response):
         """
         云盘播放
         @param request_dict: 请求参数
-        @param user_id: 用户id
         @request_dict time_stamp: 时间戳
         @request_dict uid: 设备uid
         @request_dict channel: 设备通道
@@ -510,7 +511,9 @@ class IcloudServiceView(View):
             return response.json(444, {'error param': 'time_stamp, uid_token, channel, file_type'})
         if file_type != '1':
             return response.json(444, {'error param': 'file_type'})
-        uid = jwt.decode(uid_token, OAUTH_ACCESS_TOKEN_SECRET, algorithms='HS256').get('uid', '')
+        token = jwt.decode(uid_token, OAUTH_ACCESS_TOKEN_SECRET, algorithms='HS256')
+        uid = token.get('uid', '')
+        user_id = token.get('user_id', '')
         icloud_record_qs = IcloudStorageRecord.objects.filter(user_id=user_id, uid=uid, channel=channel,
                                                               file_type=file_type,
                                                               time_stamp=time_stamp).values('bucket_id', 'fg')