Răsfoiți Sursa

实现云相册列表,音乐列表,删除云相册视频接口

zhangdongming 2 ani în urmă
părinte
comite
a9e9b40eac
1 a modificat fișierele cu 75 adăugiri și 2 ștergeri
  1. 75 2
      Controller/CloudPhoto/CloudPhotoController.py

+ 75 - 2
Controller/CloudPhoto/CloudPhotoController.py

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