|
@@ -12,7 +12,10 @@ import time
|
|
|
from django.db import transaction
|
|
|
from django.views import View
|
|
|
|
|
|
-from Model.models import DeviceCloudPhotoInfo, Device_Info, CloudPhotoBGM
|
|
|
+from Ansjer.cn_config.config_test import PUSH_CLOUD_PHOTO
|
|
|
+from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME
|
|
|
+from Model.models import DeviceCloudPhotoInfo, Device_Info, CloudPhotoBGM, DevicePicturePushInfo
|
|
|
+from Object.AWS.AmazonS3Util import AmazonS3Util
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
|
|
@@ -40,6 +43,12 @@ class CronCloudPhotoView(View):
|
|
|
user_id = token.userID
|
|
|
if operation == 'get-photo':
|
|
|
return self.save_cloud_photo(user_id, request_dict, response)
|
|
|
+ elif operation == 'bgm-list':
|
|
|
+ return self.get_bgm_list(response)
|
|
|
+ elif operation == 'video-list':
|
|
|
+ return self.query_cloud_photo_page(user_id, request_dict, response)
|
|
|
+ elif operation == 'video-del':
|
|
|
+ return self.del_cloud_photo(request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -74,7 +83,7 @@ class CronCloudPhotoView(View):
|
|
|
return response.json(500)
|
|
|
|
|
|
@classmethod
|
|
|
- def get_bgm_list(cls, request_dict, response):
|
|
|
+ def get_bgm_list(cls, response):
|
|
|
"""
|
|
|
获取背景音乐列表
|
|
|
"""
|
|
@@ -82,3 +91,67 @@ class CronCloudPhotoView(View):
|
|
|
if not photo_bgm.exists():
|
|
|
return response.json(0, [])
|
|
|
return response.json(0, list(photo_bgm))
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def query_cloud_photo_page(cls, user_id, request_dict, response):
|
|
|
+ """
|
|
|
+ 分页查询云相册视频
|
|
|
+ @param user_id: 用户id
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: []
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ device_name = request_dict.get('deviceName', None)
|
|
|
+ start_time = request_dict.get('startTime', None)
|
|
|
+ end_time = request_dict.get('endTime', None)
|
|
|
+ page = request_dict.get('page', None)
|
|
|
+ size = request_dict.get('size', None)
|
|
|
+ video_qs = DevicePicturePushInfo.objects.filter(user_id=user_id, type=1)
|
|
|
+ if device_name:
|
|
|
+ video_qs = video_qs.filter(device_nick_name__icontains=device_name)
|
|
|
+ if start_time:
|
|
|
+ video_qs = video_qs.filter(event_time__gte=int(start_time))
|
|
|
+ if end_time:
|
|
|
+ video_qs = video_qs.filter(event_time__lte=int(end_time))
|
|
|
+ video_qs = video_qs.values('id', 'uid', 'device_nick_name', 'event_time').order_by('-event_time')[
|
|
|
+ (page - 1) * size:page * size]
|
|
|
+ if not video_qs.exists():
|
|
|
+ return response.json(0, [])
|
|
|
+ s3 = AmazonS3Util(ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME)
|
|
|
+ res_data = []
|
|
|
+ for item in video_qs:
|
|
|
+ data = {'id': item['id'], 'deviceNickname': item['device_nick_name']}
|
|
|
+ key = '{}/video/{}.mp4'.format(item['uid'], str(item['event_time']))
|
|
|
+ obj_url = s3.generate_file_obj_url(PUSH_CLOUD_PHOTO, key)
|
|
|
+ data['videoLink'] = obj_url
|
|
|
+ res_data.append(data)
|
|
|
+ return response.json(0, res_data)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(500)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def del_cloud_photo(cls, request_dict, response):
|
|
|
+ """
|
|
|
+ 根据id删除视频列表
|
|
|
+ @param request_dict:
|
|
|
+ @param response:
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ ids = request_dict.get('ids', None)
|
|
|
+ if not ids:
|
|
|
+ return response.json(444)
|
|
|
+ cloud_photo_qs = DevicePicturePushInfo.objects.filter(id__in=ids.split(',')).values('uid', 'event_time')
|
|
|
+ if not cloud_photo_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ s3 = AmazonS3Util(ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME)
|
|
|
+ for item in cloud_photo_qs:
|
|
|
+ key = '{}/video/{}.mp4'.format(item['uid'], str(item['event_time']))
|
|
|
+ s3.delete_obj(PUSH_CLOUD_PHOTO, key)
|
|
|
+ cloud_photo_qs.delete()
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(500)
|