|
@@ -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)
|