123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- # -*- 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})
|