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