GatewayDeviceController.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : GatewayDeviceController.py
  4. @Time : 2022/6/6 13:50
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. import time
  10. import oss2
  11. from django.db import connection
  12. from django.db import transaction
  13. from django.db.models import Q, Count
  14. from django.views.generic.base import View
  15. from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
  16. from Controller.DeviceConfirmRegion import Device_Region
  17. from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidChannelSetModel, \
  18. iotdeviceInfoModel, UIDModel, Device_User, UserFamily, FamilyMember, FamilyMemberPermission, \
  19. FamilyRoomDevice, FamilyRoom, GatewaySubDevice
  20. from Object.ResponseObject import ResponseObject
  21. from Object.TokenObject import TokenObject
  22. from Service.CommonService import CommonService
  23. class GatewayDeviceView(View):
  24. def get(self, request, *args, **kwargs):
  25. request.encoding = 'utf-8'
  26. operation = kwargs.get('operation')
  27. return self.validation(request.GET, request, operation)
  28. def post(self, request, *args, **kwargs):
  29. request.encoding = 'utf-8'
  30. operation = kwargs.get('operation')
  31. return self.validation(request.POST, request, operation)
  32. def validation(self, request_dict, request, operation):
  33. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  34. lang = request_dict.get('lang', None)
  35. response = ResponseObject(lang) if lang else ResponseObject(token.lang)
  36. if token.code != 0:
  37. return response.json(token.code)
  38. user_id = token.userID
  39. # 手机端添加设备,查询,修改
  40. if operation == 'list':
  41. return self.gateway_device_list(request_dict, response)
  42. @classmethod
  43. def gateway_device_list(cls, request_dict, response):
  44. device_id = request_dict.get('deviceId', None)
  45. if not device_id:
  46. return response.json(444)
  47. device_qs = FamilyRoomDevice.objects.filter(device_id=device_id, sub_device=0)
  48. if not device_qs.exists():
  49. return response.json(173)
  50. device_qs = device_qs.values('room_id', 'device__Type', 'device__NickName', 'device__UID',
  51. 'device__serial_number')
  52. device_qs = device_qs.first()
  53. room_id = device_qs['room_id']
  54. gateway_room_name = ''
  55. if room_id:
  56. room_qs = FamilyRoom.objects.filter(id=room_id)
  57. gateway_room_name = room_qs.first().name if room_qs.exists() else ''
  58. gateway = {
  59. 'deviceType': device_qs['device__Type'],
  60. 'deviceNickName': device_qs['device__NickName'],
  61. 'UID': device_qs['device__UID'],
  62. 'serialNumber': device_qs['device__serial_number'],
  63. 'roomName': gateway_room_name
  64. }
  65. family_device_qs = FamilyRoomDevice.objects.filter(device_id=device_id)
  66. family_device_qs = family_device_qs.filter(~Q(sub_device=0)).order_by('-created_time')
  67. sub_device = []
  68. if family_device_qs.exists():
  69. for item in family_device_qs:
  70. sub_id = item['sub_device']
  71. gateway_sub_qs = GatewaySubDevice.objects.filter(device_id=device_id, id=sub_id).values(
  72. 'id', 'device_type',
  73. 'nickname',
  74. 'src_addr', 'status',
  75. 'created_time', )
  76. rood_id = item['rood_id']
  77. room_qs = FamilyRoom.objects.filter(id=rood_id)
  78. gateway_room_name = room_qs.first().name if room_qs.exists() else ''
  79. if device_qs.exists():
  80. gateway_sub_qs = gateway_sub_qs.first()
  81. sub_device.append({
  82. 'id': gateway_sub_qs['id'],
  83. 'nickName': gateway_sub_qs['nickname'],
  84. 'srcAddr': gateway_sub_qs['src_addr'],
  85. 'status': gateway_sub_qs['status'],
  86. 'createdTime': gateway_sub_qs['created_time'],
  87. 'roomName': gateway_room_name
  88. })
  89. return response.json(0, {'gateway': gateway, 'sub_device': sub_device})