|
@@ -0,0 +1,175 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+@Time : 2022/5/25 15:17
|
|
|
+@Auth : Locky
|
|
|
+@File :SubDeviceController.py
|
|
|
+@IDE :PyCharm
|
|
|
+"""
|
|
|
+import time
|
|
|
+
|
|
|
+from django.db import transaction
|
|
|
+from django.views import View
|
|
|
+
|
|
|
+from Model.models import Device_Info, GatewaySubDevice, FamilyRoomDevice
|
|
|
+from Object.ResponseObject import ResponseObject
|
|
|
+from Object.TokenObject import TokenObject
|
|
|
+
|
|
|
+
|
|
|
+class GatewaySubDeviceView(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', None)
|
|
|
+ response = ResponseObject(lang) if lang else ResponseObject(token.lang)
|
|
|
+
|
|
|
+ # if token.code != 0:
|
|
|
+ # return response.json(token.code)
|
|
|
+ # user_id = token.userID
|
|
|
+ user_id = '154700384179113800138000'
|
|
|
+ if operation == 'add': # 添加子设备
|
|
|
+ return self.add(request_dict, user_id, response)
|
|
|
+ elif operation == 'query': # 查询子设备
|
|
|
+ return self.query(request_dict, user_id, response)
|
|
|
+ elif operation == 'update': # 更新子设备信息
|
|
|
+ return self.update(request_dict, user_id, response)
|
|
|
+ elif operation == 'delete': # 删除子设备
|
|
|
+ return self.delete(request_dict, user_id, response)
|
|
|
+ else:
|
|
|
+ return response.json(414)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def add(request_dict, user_id, response):
|
|
|
+ """
|
|
|
+ 添加子设备
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @request_dict device_type: 设备类型
|
|
|
+ @request_dict nickname: 设备名
|
|
|
+ @request_dict src_addr: 短地址
|
|
|
+ @request_dict family_id: 家庭id
|
|
|
+ @request_dict room_id: 房间id
|
|
|
+ @param user_id: 用户id
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response 响应对象
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+ device_type = int(request_dict.get('device_type', None))
|
|
|
+ nickname = request_dict.get('nickname', None)
|
|
|
+ src_addr = request_dict.get('src_addr', None)
|
|
|
+ family_id = request_dict.get('family_id', None)
|
|
|
+ room_id = request_dict.get('room_id', None)
|
|
|
+
|
|
|
+ if not all([serial_number, device_type, nickname, src_addr, family_id, room_id]):
|
|
|
+ return response.json(444)
|
|
|
+ now_time = int(time.time())
|
|
|
+ try:
|
|
|
+ device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number).values('id')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(14)
|
|
|
+ device_id = device_info_qs[0]['id']
|
|
|
+ with transaction.atomic():
|
|
|
+ sub_device = GatewaySubDevice.objects.create(device_id=device_id, device_type=device_type,
|
|
|
+ nickname=nickname, src_addr=src_addr, status=1,
|
|
|
+ created_time=now_time, updated_time=now_time)
|
|
|
+ FamilyRoomDevice.objects.create(family_id=family_id, room_id=room_id, device_id=device_id,
|
|
|
+ sub_device=sub_device, created_time=now_time, updated_time=now_time)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def query(request_dict, user_id, response):
|
|
|
+ """
|
|
|
+ 查询子设备
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @param user_id: 用户id
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+
|
|
|
+ if not all([serial_number]):
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number).values('id')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(14)
|
|
|
+ device_id = device_info_qs[0]['id']
|
|
|
+ count = GatewaySubDevice.objects.filter(device_id=device_id).count()
|
|
|
+ gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id).values('device_type',
|
|
|
+ 'nickname', 'src_addr',
|
|
|
+ 'status')
|
|
|
+ gateway_sub_device_list = [gateway_sub_device for gateway_sub_device in gateway_sub_device_qs]
|
|
|
+ res = {
|
|
|
+ 'count': count,
|
|
|
+ 'gateway_sub_device_list': gateway_sub_device_list
|
|
|
+ }
|
|
|
+ return response.json(0, res)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def update(request_dict, user_id, response):
|
|
|
+ """
|
|
|
+ 更新子设备信息
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @request_dict sub_device_id: 子设备id
|
|
|
+ @param user_id: 用户id
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+ sub_device_id = request_dict.get('sub_device_id', None)
|
|
|
+ nickname = request_dict.get('nickname', None)
|
|
|
+ src_addr = request_dict.get('src_addr', None)
|
|
|
+ status = int(request_dict.get('status', None))
|
|
|
+ family_id = request_dict.get('family_id', None)
|
|
|
+ room_id = request_dict.get('room_id', None)
|
|
|
+
|
|
|
+ if not all([serial_number]):
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number).values('id')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(14)
|
|
|
+ update_data = {
|
|
|
+ 'nickname': nickname,
|
|
|
+ 'src_addr': src_addr,
|
|
|
+ 'status': status,
|
|
|
+ }
|
|
|
+ GatewaySubDevice.objects.filter(id=sub_device_id).update(**update_data)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def delete(request_dict, user_id, response):
|
|
|
+ """
|
|
|
+ 更新子设备信息
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict sub_device_id: 子设备id
|
|
|
+ @param user_id: 用户id
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ sub_device_id = request_dict.get('sub_device_id', None)
|
|
|
+
|
|
|
+ if not all([sub_device_id]):
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ GatewaySubDevice.objects.filter(id=sub_device_id).delete()
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|