# -*- encoding: utf-8 -*- """ @File : GatewayDeviceController.py @Time : 2022/6/6 13:50 @Author : stephen @Email : zhangdongming@asj6.wecom.work @Software: PyCharm """ import time import oss2 from django.db import connection from django.db import transaction from django.db.models import Q, Count from django.views.generic.base import View from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY from Controller.DeviceConfirmRegion import Device_Region from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidChannelSetModel, \ iotdeviceInfoModel, UIDModel, Device_User, UserFamily, FamilyMember, FamilyMemberPermission, \ FamilyRoomDevice, FamilyRoom, GatewaySubDevice from Object.ResponseObject import ResponseObject from Object.TokenObject import TokenObject from Service.CommonService import CommonService class GatewayDeviceView(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 # 手机端添加设备,查询,修改 if operation == 'list': return self.gateway_device_list(request_dict, response) @classmethod def gateway_device_list(cls, request_dict, response): device_id = request_dict.get('deviceId', None) if not device_id: return response.json(444) device_qs = FamilyRoomDevice.objects.filter(device_id=device_id, sub_device=0) if not device_qs.exists(): return response.json(173) device_qs = device_qs.values('room_id', 'device__Type', 'device__NickName', 'device__UID', 'device__serial_number') device_qs = device_qs.first() room_id = device_qs['room_id'] gateway_room_name = '' if room_id: room_qs = FamilyRoom.objects.filter(id=room_id) gateway_room_name = room_qs.first().name if room_qs.exists() else '' gateway = { 'deviceType': device_qs['device__Type'], 'deviceNickName': device_qs['device__NickName'], 'UID': device_qs['device__UID'], 'serialNumber': device_qs['device__serial_number'], 'roomName': gateway_room_name } family_device_qs = FamilyRoomDevice.objects.filter(device_id=device_id) family_device_qs = family_device_qs.filter(~Q(sub_device=0)).order_by('-created_time') sub_device = [] if family_device_qs.exists(): for item in family_device_qs: sub_id = item['sub_device'] gateway_sub_qs = GatewaySubDevice.objects.filter(device_id=device_id, id=sub_id).values( 'id', 'device_type', 'nickname', 'src_addr', 'status', 'created_time', ) rood_id = item['rood_id'] room_qs = FamilyRoom.objects.filter(id=rood_id) gateway_room_name = room_qs.first().name if room_qs.exists() else '' if device_qs.exists(): gateway_sub_qs = gateway_sub_qs.first() sub_device.append({ 'id': gateway_sub_qs['id'], 'nickName': gateway_sub_qs['nickname'], 'srcAddr': gateway_sub_qs['src_addr'], 'status': gateway_sub_qs['status'], 'createdTime': gateway_sub_qs['created_time'], 'roomName': gateway_room_name }) return response.json(0, {'gateway': gateway, 'sub_device': sub_device})