浏览代码

Merge remote-tracking branch 'origin/test'

locky 3 年之前
父节点
当前提交
ca8248408e
共有 2 个文件被更改,包括 94 次插入23 次删除
  1. 93 22
      AdminController/DeviceManagementController.py
  2. 1 1
      Controller/SysMsg.py

+ 93 - 22
AdminController/DeviceManagementController.py

@@ -3,9 +3,11 @@
 import json
 import time
 
+import oss2
 from django.db import transaction
 from django.db.models import Q
 
+from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from django.views.generic.base import View
@@ -29,27 +31,32 @@ class DeviceManagement(View):
     def validation(self, request_dict, request, operation):
         language = request_dict.get('language', 'en')
         response = ResponseObject(language, 'pc')
-        tko = TokenObject(
-            request.META.get('HTTP_AUTHORIZATION'),
-            returntpye='pc')
-        if tko.code != 0:
-            return response.json(tko.code)
-        response.lang = tko.lang
-        userID = tko.userID
-        if not userID:
-            return response.json(444, 'userID')
-        if operation == 'getDeviceInfoList':
-            return self.getDeviceInfoList(request_dict, response)
-        elif operation == 'deleteDevice':
-            return self.deleteDevice(request_dict, response)
-        elif operation == 'resetVod':
-            return self.resetVod(request, request_dict, response)
-        elif operation == 'resetPrimaryUser':
-            return self.resetPrimaryUser(request, request_dict, response)
-        elif operation == 'getDeviceTypeList':
-            return self.getDeviceTypeList(request_dict, response)
+        if operation == 'addDeviceType':
+            return self.addDeviceType(request, request_dict, response)
         else:
-            return response.json(444, 'operation')
+            tko = TokenObject(
+                request.META.get('HTTP_AUTHORIZATION'),
+                returntpye='pc')
+            if tko.code != 0:
+                return response.json(tko.code)
+            response.lang = tko.lang
+            userID = tko.userID
+            if not userID:
+                return response.json(444, 'userID')
+            if operation == 'getDeviceInfoList':
+                return self.getDeviceInfoList(request_dict, response)
+            elif operation == 'deleteDevice':
+                return self.deleteDevice(request_dict, response)
+            elif operation == 'resetVod':
+                return self.resetVod(request, request_dict, response)
+            elif operation == 'resetPrimaryUser':
+                return self.resetPrimaryUser(request, request_dict, response)
+            elif operation == 'getDeviceTypeList':
+                return self.getDeviceTypeList(request_dict, response)
+            elif operation == 'deleteDeviceType':
+                return self.deleteDeviceType(request_dict, response)
+            else:
+                return response.json(444, 'operation')
 
     # 获取设备信息数据
     def getDeviceInfoList(self, request_dict, response):
@@ -149,7 +156,7 @@ class DeviceManagement(View):
     def resetVod(self, request, request_dict, response):
         uid = request_dict.get('uid', None)
         if not uid:
-            return response.json(404)
+            return response.json(444)
         try:
             # 记录操作日志
             ip = CommonService.get_ip_address(request)
@@ -180,9 +187,73 @@ class DeviceManagement(View):
 
     # 获取设备类型数据
     def getDeviceTypeList(self, request_dict, response):
-        deviceType = request_dict.get('deviceType', None)
+        name = request_dict.get('name', None)
+        pageNo = request_dict.get('pageNo', None)
+        pageSize = request_dict.get('pageSize', None)
+
+        if not all([pageNo, pageSize]):
+            return response.json(444)
+
+        page = int(pageNo)
+        line = int(pageSize)
+        try:
+            if name:
+                device_type_qs = DeviceTypeModel.objects.filter(name__contains=name).values()
+                total = len(device_type_qs)
+            else:
+                device_type_qs = DeviceTypeModel.objects.filter().values()[(page - 1) * line:page * line]
+                total = DeviceTypeModel.objects.filter().count()
+            if not device_type_qs.exists():
+                return response.json(173)
+            device_type_list = []
+            for device_type in device_type_qs:
+                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
+
+                icon = device_type['icon']
+                url = 'device_type/' + icon
+                device_type['icon'] = bucket.sign_url('GET', url, 3600)
+                device_type_list.append(device_type)
+            return response.json(0, {'list': device_type_list, 'total': total})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    # 删除设备类型
+    def deleteDeviceType(self, request_dict, response):
+        deviceTypeID = request_dict.get('deviceTypeID', None)
+        if not deviceTypeID:
+            return response.json(444)
+        try:
+            DeviceTypeModel.objects.filter(id=deviceTypeID).delete()
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    # 添加设备类型
+    def addDeviceType(self, request, request_dict, response):
+        iconFile = request.FILES.get('iconFile', None)
+        name = request_dict.get('name', None)
+        model = request_dict.get('model', None)
+        type = request_dict.get('type', None)
+        ptz_type = request_dict.get('ptz_type', None)
 
+        if not all([iconFile, name, model, type, ptz_type]):
+            return response.json(444)
         try:
+            model = int(model)
+            ptz_type = int(ptz_type)
+            icon = iconFile.name
+            now_time = int(time.time())
+            # 上传文件到阿里云OSS
+            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+            bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
+            key = 'device_type/' + icon     # 图片文件存放于 device_type 目录下
+            # https://oss.console.aliyun.com/bucket/oss-cn-shenzhen/ansjer-static-resources/object?path=device_type%2F
+            bucket.put_object(key=key, data=iconFile)
+            DeviceTypeModel.objects.create(name=name, model=model, type=type, ptz_type=ptz_type, icon=icon,
+                                           add_time=now_time, update_time=now_time)
             return response.json(0)
         except Exception as e:
             print(e)

+ 1 - 1
Controller/SysMsg.py

@@ -151,7 +151,7 @@ class SysMsgView(View):
             sm_qs = SysMsgModel.objects.filter(userID_id=userID)
             count = sm_qs.count()
             sm_qs = sm_qs[(page - 1) * line:page * line]. \
-                values('status', 'id', 'msg', 'addTime', 'updTime', 'uid', 'eventType', 'electricity')
+                values('status', 'id', 'msg', 'addTime', 'updTime', 'uid', 'eventType')
             data_res = []
             uid_list = []