فهرست منبع

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into cheng

 Conflicts:
	Controller/IcloudService/IcloudService.py
keiSenFront 2 سال پیش
والد
کامیت
78cab2df7f
1فایلهای تغییر یافته به همراه30 افزوده شده و 55 حذف شده
  1. 30 55
      Controller/IcloudService/IcloudService.py

+ 30 - 55
Controller/IcloudService/IcloudService.py

@@ -12,7 +12,7 @@ from django.db.models import Sum, Q
 from django.http import HttpResponse
 from django.views import View
 
-from Model.models import IcloudUseDetails, IcloudService, VodBucketModel, IcloudStorageRecord, Device_Info, Device_User
+from Model.models import IcloudUseDetails, IcloudService, VodBucketModel, IcloudStorageRecord, Device_Info
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
@@ -36,27 +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)
-        elif operation == 'changeCloudStatus':  # 修改云盘开关状态
-            return self.do_change_icloud_status(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):
@@ -405,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)
@@ -422,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():
@@ -443,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,
@@ -486,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: 设备通道
@@ -512,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')
@@ -552,29 +553,3 @@ class IcloudServiceView(View):
         except Exception as e:
             LOGGER.info('云盘播放异常:{}'.format(repr(e)))
             return response.json(500)
-
-    @staticmethod
-    def do_change_icloud_status(request_dict, response, user_id):
-        """
-        修改云盘开关
-        @param request_dict: 请求参数
-        @param user_id: 用户id
-        @request_dict status: 开关状态, 0: 关闭, 1: 开启
-        @param response: 响应对象
-        @return: response
-        """
-        status = request_dict.get('status', None)
-
-        if not status:
-            return response.json(444, 'status')
-
-        try:
-            device_user_qs = Device_User.objects.filter(userID=user_id)
-            if not device_user_qs.exists():
-                return response.json(173)
-            icloud_use_details_qs = IcloudUseDetails.objects.filter(user_id=user_id)
-            icloud_use_details_qs.update(detect_status=status)
-            return response.json(0)
-        except Exception as e:
-            print(e)
-            return response.json(500)