Browse Source

添加设备类型的相关接口

tanghongbin 4 years ago
parent
commit
d4b9446259
3 changed files with 116 additions and 1 deletions
  1. 5 1
      Ansjer/urls.py
  2. 95 0
      Controller/DeviceTypeController.py
  3. 16 0
      Model/models.py

+ 5 - 1
Ansjer/urls.py

@@ -10,7 +10,9 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     StsOssController, UIDPreview, OssCrd, SysMsg, UidUser, EquipmentManagerV2, EquipmentManagerV3, PushDeploy, \
     AppSetController, \
     ApplicationController, UserExController, CloudStorage, TestApi, UserBrandControllerV2, \
-    StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController
+    StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController, \
+    DeviceTypeController
+from Controller.DeviceTypeController import DeviceTypeView
 from Controller.VoicePromptController import VoicePromptView
 
 urlpatterns = [
@@ -246,6 +248,8 @@ urlpatterns = [
 
     # 语音提示
     url(r'^voicePrompt/(?P<operation>.*)$', VoicePromptController.VoicePromptView.as_view()),
+    # 设备类型
+    url(r'^deviceType/(?P<operation>.*)$', DeviceTypeController.DeviceTypeView.as_view()),
 
     # app 设备消息模板
     # 路由加参数参考

+ 95 - 0
Controller/DeviceTypeController.py

@@ -0,0 +1,95 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+import oss2
+from django.views import View
+
+from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
+from Model.models import DeviceTypeModel
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Service.ModelService import ModelService
+
+
+class DeviceTypeView(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        operation = kwargs.get('operation', None)
+        return self.validate(request_dict, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.POST
+        operation = kwargs.get('operation', None)
+        return self.validate(request_dict, operation)
+
+    def validate(self, request_dict, operation):
+        token = request_dict.get('token', None)
+        lang = request_dict.get('lang', None)
+
+        response = ResponseObject(lang=lang)
+        token = TokenObject(token)
+        if token.code != 0:
+            return response.json(token.code)
+
+        if operation == 'add':
+            return self.do_admin_add(token.userID, request_dict, response)
+        elif operation == 'query':
+            return self.do_query(request_dict, response)
+        elif operation == 'delete':
+            return self.do_admin_delete(token.userID, request_dict, response)
+        else:
+            return response.json(404)
+
+    def do_admin_add(self, userID, request_dict, response):
+        # own_perm = ModelService.check_perm(userID, 10)
+        # if not own_perm:
+        #     return response.json(404)
+
+        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)
+        icon = request_dict.get('icon', None)
+
+        if name and model and type and ptz_type and icon:
+            device_type = DeviceTypeModel()
+            device_type.name = name
+            device_type.model = model
+            device_type.type = type
+            device_type.ptz_type = ptz_type
+            device_type.icon = icon
+            device_type.save()
+            return response.json(0)
+        else:
+            return response.json(444)
+
+    def do_query(self, request_dict, response):
+        device_type_qs = DeviceTypeModel.objects.filter().values('id', 'type', 'ptz_type', 'model', 'icon', 'name')
+        res = {}
+        data = []
+        res['data'] = data
+        if device_type_qs.exists():
+            for device_type in device_type_qs:
+                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
+
+                icon = device_type['icon']
+                url = 'device_type/' + icon
+                device_type['icon'] = bucket.sign_url('GET', url, 3600)
+                data.append(device_type)
+
+        return response.json(0, res)
+
+    def do_admin_delete(self, userID, request_dict, response):
+        own_perm = ModelService.check_perm(userID, 10)
+        if not own_perm:
+            return response.json(404)
+
+        id = request_dict.get('id', None)
+        if id:
+            DeviceTypeModel.objects.filter(id=id).delete()
+            return response.json(0)
+        else:
+            return response.json(444)

+ 16 - 0
Model/models.py

@@ -1096,3 +1096,19 @@ class VoicePromptModel(models.Model):
         db_table = 'voice_prompt'
         verbose_name = '语音提示表'
         verbose_name_plural = verbose_name
+
+
+class DeviceTypeModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    name = models.CharField(max_length=64, default='', verbose_name='设备名称')
+    model = models.SmallIntegerField(default=0, verbose_name='设备大类。1:dvr,2:ipc')
+    type = models.IntegerField(default=0, verbose_name='设备类型')
+    ptz_type = models.IntegerField(default=0, verbose_name='ptz类型。1:dvr球机,2:IPCPTZ,3:同轴菜单')
+    icon = models.CharField(max_length=120, default='', verbose_name='文件名')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'device_type'
+        verbose_name = '设备类型表'
+        verbose_name_plural = verbose_name