zhangdongming преди 1 година
родител
ревизия
94f4139328
променени са 1 файла, в които са добавени 63 реда и са изтрити 0 реда
  1. 63 0
      Controller/UserDevice/UserDeviceShareController.py

+ 63 - 0
Controller/UserDevice/UserDeviceShareController.py

@@ -18,6 +18,10 @@ from Model.models import DeviceSharePermission, DeviceChannelUserSet, DeviceChan
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.UserDeviceService import UserDeviceService
+from Ansjer.config import CONFIG_CN, CONFIG_INFO, CONFIG_TEST, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, \
+    AWS_SES_ACCESS_REGION, AWS_IOT_SES_ACCESS_CHINA_REGION
+from Model.models import DeviceWallpaper
+from Object.AWS.AmazonS3Util import AmazonS3Util
 
 LOGGER = logging.getLogger('info')
 
@@ -46,6 +50,8 @@ class UserDeviceShareView(View):
             return self.user_channel_permission_save(request_dict, response)
         elif operation == 'permissions-test':
             return self.synch_share_device_permission(response)
+        elif operation == 'getWallpaperList':
+            return self.get_wallpaper_list(request_dict, response)
         else:
             return response.json(404)
 
@@ -193,3 +199,60 @@ class UserDeviceShareView(View):
         for item in device_info_qs:
             UserDeviceShareView.qrcode_share_channel_permission_save(item['userID_id'], item['UID'])
         return response.json(0)
+
+
+    @classmethod
+    def get_wallpaper_list(cls, request_dict, response):
+        """
+        获取设备壁纸列表
+        @param request_dict:
+        @param response:
+        @return:
+        """
+        try:
+            device_type = int(request_dict.get('deviceType', None))
+            uid = request_dict.get('uid', None)
+            channel = int(request_dict.get('channel', 1))
+
+            if not all([device_type, uid]):
+                return response.json(444)
+
+            # 查询用户自定义壁纸
+            user_wallpaper_qs = DeviceWallpaper.objects.filter(channel=channel, uid=uid,
+                                                               device_type=device_type, parent_id=0, status=1)
+
+            # 查询系统默认壁纸
+            def_wallpaper_qs = DeviceWallpaper.objects.filter(classification=1, device_type=device_type, status=1)
+
+            # 查询用户选中的壁纸
+            user_checked_qs = DeviceWallpaper.objects.filter(channel=channel, uid=uid,
+                                                             device_type=device_type, parent_id__gt=0, status=1)
+            checked_id = user_checked_qs[0].parent_id if user_checked_qs.exists() else 0
+
+            wallpaper_list = []
+            if def_wallpaper_qs.exists() or user_wallpaper_qs.exists():
+                # 初始化存储桶客户端
+                s3 = AmazonS3Util(AWS_ACCESS_KEY_ID[0], AWS_SECRET_ACCESS_KEY[0], AWS_IOT_SES_ACCESS_CHINA_REGION) \
+                    if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO \
+                    else AmazonS3Util(AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1], AWS_SES_ACCESS_REGION)
+
+                bucket_name = "ansjerfilemanager"
+
+                # 处理系统默认壁纸和用户自定义壁纸
+                all_wallpapers_qs = def_wallpaper_qs.union(user_wallpaper_qs)
+                for item in all_wallpapers_qs:
+                    obj_key = item.obj_prefix + item.obj_name
+                    response_url = s3.generate_file_obj_url(bucket_name, obj_key)
+                    wallpaper = {
+                        'id': item.id,
+                        'url': response_url,
+                        'state': 1 if checked_id == item.id else 0,
+                        'classification': item.classification
+                    }
+                    wallpaper_list.append(wallpaper)
+
+            return response.json(0, {'wallpapers': wallpaper_list})
+
+        except Exception as e:
+            LOGGER.error('查询设备壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(5)