浏览代码

云相册基础API

zhangdongming 2 年之前
父节点
当前提交
e1fe42f92b

+ 2 - 2
Ansjer/server_urls/algorithm_shop_url.py

@@ -9,9 +9,9 @@
 from django.urls import re_path
 from django.urls import re_path
 
 
 from Controller.AlgorithmShop import AlgorithmShopController
 from Controller.AlgorithmShop import AlgorithmShopController
-from Controller.Cron import CloudPhotoController
+from Controller.Cron import CronCloudPhotoController
 
 
 urlpatterns = [
 urlpatterns = [
     re_path(r'^api/(?P<operation>.*)$', AlgorithmShopController.AlgorithmShopView.as_view()),
     re_path(r'^api/(?P<operation>.*)$', AlgorithmShopController.AlgorithmShopView.as_view()),
-    re_path(r'^cron/(?P<operation>.*)$', CloudPhotoController.CloudPhotoView.as_view()),
+    re_path(r'^cron/(?P<operation>.*)$', CronCloudPhotoController.CronCloudPhotoView.as_view()),
 ]
 ]

+ 86 - 0
Controller/CloudPhoto/CloudPhotoController.py

@@ -0,0 +1,86 @@
+# -*- encoding: utf-8 -*-
+"""
+@File    : CronCloudPhotoController.py
+@Time    : 2022/11/3 10:16
+@Author  : stephen
+@Email   : zhangdongming@asj6.wecom.work
+@Software: PyCharm
+"""
+import logging
+import time
+from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME, PUSH_BUCKET
+from django.db import transaction
+from django.views import View
+
+from Model.models import DeviceCloudPhotoInfo, Device_Info, CloudPhotoBGM
+from Object.AWS.AmazonS3Util import AmazonS3Util
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+
+LOGGER = logging.getLogger('info')
+
+
+class CronCloudPhotoView(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, request, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, request, operation)
+
+    def validation(self, request_dict, request, operation):
+        token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
+        lang = request_dict.get('lang', token.lang)
+        response = ResponseObject(lang)
+        if token.code != 0:
+            return response.json(token.code)
+        user_id = token.userID
+        if operation == 'get-photo':
+            return self.save_cloud_photo(user_id, request_dict, response)
+        else:
+            return response.json(404)
+
+    @classmethod
+    def save_cloud_photo(cls, user_id, request_dict, response):
+        """
+        保存云相册
+        """
+        try:
+            with transaction.atomic():
+                status = request_dict.get('status', None)
+                uid = request_dict.get('uid', None)
+                if not all([status, uid, user_id]):
+                    return response(444)
+                device_info_qs = Device_Info.objects.filter(vodPrimaryUserID=user_id, uid=uid).values('primaryUserID')
+                if not device_info_qs.exists():
+                    return response.json(14)
+                master_user_id = device_info_qs[0]['primaryUserID']
+                if master_user_id != '' and master_user_id != user_id:
+                    return response.json(12)
+                now_time = int(time.time())
+                cloud_photo_qs = DeviceCloudPhotoInfo.objects.filter(uid=uid)
+                if not cloud_photo_qs.exists():
+                    data = {'status': status, 'user_id': user_id, 'uid': uid, 'created_time': now_time,
+                            'updated_time': now_time}
+                    DeviceCloudPhotoInfo.objects.create(**data)
+                    return response.json(0)
+                cloud_photo_qs.update(status=status, updated_time=now_time)
+                return response.json(0)
+        except Exception as e:
+            LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500)
+
+    @classmethod
+    def get_bgm_list(cls, request_dict, response):
+        """
+        获取背景音乐列表
+        """
+        photo_bgm = CloudPhotoBGM.objects.filter(is_show=1).values('name')
+        if not photo_bgm.exists():
+            return response.json(0, [])
+        AmazonS3Util(ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME)
+        return response.json(0, [])

+ 2 - 2
Controller/Cron/CloudPhotoController.py → Controller/Cron/CronCloudPhotoController.py

@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
 # -*- encoding: utf-8 -*-
 """
 """
-@File    : CloudPhotoController.py
+@File    : CronCloudPhotoController.py
 @Time    : 2022/10/24 15:48
 @Time    : 2022/10/24 15:48
 @Author  : stephen
 @Author  : stephen
 @Email   : zhangdongming@asj6.wecom.work
 @Email   : zhangdongming@asj6.wecom.work
@@ -28,7 +28,7 @@ LOGGER = logging.getLogger('info')
 UID_KEY = 'ANSJER:UID:SET:INFO'
 UID_KEY = 'ANSJER:UID:SET:INFO'
 
 
 
 
-class CloudPhotoView(View):
+class CronCloudPhotoView(View):
 
 
     def get(self, request, *args, **kwargs):
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'

+ 13 - 0
Model/models.py

@@ -3055,3 +3055,16 @@ class DevicePicturePushInfo(models.Model):
         db_table = 'device_picture_push_info'
         db_table = 'device_picture_push_info'
         verbose_name = '设备图片推送信息'
         verbose_name = '设备图片推送信息'
         verbose_name_plural = verbose_name
         verbose_name_plural = verbose_name
+
+
+class CloudPhotoBGM(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='主键')
+    is_show = models.SmallIntegerField(default=1, verbose_name=u'是否显示')  # 0: 否, 1: 是
+    name = models.CharField(default='', max_length=128, verbose_name=u'音乐名称')
+    sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'cloud_photo_bgm'
+        verbose_name = '云相册背景音乐'
+        verbose_name_plural = verbose_name