SmartSceneController.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # -*- coding: utf-8 -*-
  2. """
  3. @Author : Rocky
  4. @Time : 2022/6/29 9:31
  5. @File :SmartSceneController.py
  6. """
  7. from django.core.exceptions import ObjectDoesNotExist
  8. from django.views import View
  9. from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom
  10. from Object.ResponseObject import ResponseObject
  11. from Object.TokenObject import TokenObject
  12. class SmartSceneView(View):
  13. def get(self, request, *args, **kwargs):
  14. request.encoding = 'utf-8'
  15. operation = kwargs.get('operation')
  16. return self.validation(request.GET, request, operation)
  17. def post(self, request, *args, **kwargs):
  18. request.encoding = 'utf-8'
  19. operation = kwargs.get('operation')
  20. return self.validation(request.POST, request, operation)
  21. def validation(self, request_dict, request, operation):
  22. token_obj = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  23. lang = request_dict.get('lang', None)
  24. response = ResponseObject(lang if lang else token_obj.lang)
  25. if token_obj.code != 0:
  26. return response.json(token_obj.code)
  27. user_id = token_obj.userID
  28. if operation == 'condition-devices': # 添加条件-查询设备
  29. return self.condition_devices(request_dict, response)
  30. if operation == 'task-devices': # 添加任务-查询设备
  31. return self.task_devices(request_dict, user_id, response)
  32. elif operation == 'create': # 创建智能场景
  33. return self.create_smart_scene(request_dict, response)
  34. else:
  35. return response.json(414)
  36. @staticmethod
  37. def condition_devices(request_dict, response):
  38. """
  39. 添加条件-查询设备
  40. @param request_dict: 请求参数
  41. @request_dict deviceId: 网关设备id
  42. @param response: 响应对象
  43. @return: response
  44. """
  45. device_id = request_dict.get('deviceId', None)
  46. if not all([device_id]):
  47. return response.json(444)
  48. try:
  49. gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id).values('id', 'device_type',
  50. 'nickname', 'status')
  51. if not gateway_sub_device_qs.exists():
  52. return response.json(173)
  53. sub_device_list = []
  54. for gateway_sub_device in gateway_sub_device_qs:
  55. room_id = FamilyRoomDevice.objects.filter(sub_device=gateway_sub_device['id']).values('room_id')[0][
  56. 'room_id']
  57. try:
  58. gateway_sub_device['room_name'] = FamilyRoom.objects.get(id=room_id).name
  59. except ObjectDoesNotExist:
  60. gateway_sub_device['room_name'] = ''
  61. gateway_sub_device.pop('id')
  62. sub_device_list.append(gateway_sub_device)
  63. return response.json(0, sub_device_list)
  64. except Exception as e:
  65. return response.json(500, repr(e))
  66. @staticmethod
  67. def task_devices(request_dict, user_id, response):
  68. """
  69. 添加任务-查询设备
  70. @param request_dict: 请求参数
  71. @param user_id: 用户id
  72. @request_dict deviceId: 网关设备id
  73. @param response: 响应对象
  74. @return: response
  75. """
  76. device_id = request_dict.get('deviceId', None)
  77. if not all([device_id]):
  78. return response.json(444)
  79. try:
  80. device_info_qs = GatewaySubDevice.objects.filter(device__userID_id=user_id)
  81. return response.json(0)
  82. except Exception as e:
  83. return response.json(500, repr(e))
  84. @staticmethod
  85. def create_smart_scene(request_dict, response):
  86. """
  87. 创建智能场景
  88. @param request_dict: 请求参数
  89. @request_dict gatewaySubId: 子设备id
  90. @param response: 响应对象
  91. @return: response
  92. """
  93. sub_device_id = request_dict.get('gatewaySubId', None)
  94. if not all([sub_device_id]):
  95. return response.json(444)
  96. try:
  97. return response.json(0)
  98. except Exception as e:
  99. return response.json(500, repr(e))