SubDeviceController.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. # -*- coding: utf-8 -*-
  2. """
  3. @Time : 2022/5/25 15:17
  4. @Auth : Locky
  5. @File :SubDeviceController.py
  6. @IDE :PyCharm
  7. """
  8. import time
  9. from django.db import transaction
  10. from django.views import View
  11. from Model.models import Device_Info, GatewaySubDevice, FamilyRoomDevice
  12. from Object.ResponseObject import ResponseObject
  13. from Object.TokenObject import TokenObject
  14. class GatewaySubDeviceView(View):
  15. def get(self, request, *args, **kwargs):
  16. request.encoding = 'utf-8'
  17. operation = kwargs.get('operation')
  18. return self.validation(request.GET, request, operation)
  19. def post(self, request, *args, **kwargs):
  20. request.encoding = 'utf-8'
  21. operation = kwargs.get('operation')
  22. return self.validation(request.POST, request, operation)
  23. def validation(self, request_dict, request, operation):
  24. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  25. lang = request_dict.get('lang', None)
  26. response = ResponseObject(lang) if lang else ResponseObject(token.lang)
  27. # if token.code != 0:
  28. # return response.json(token.code)
  29. # user_id = token.userID
  30. user_id = '154700384179113800138000'
  31. if operation == 'add': # 添加子设备
  32. return self.add(request_dict, user_id, response)
  33. elif operation == 'query': # 查询子设备
  34. return self.query(request_dict, user_id, response)
  35. elif operation == 'update': # 更新子设备信息
  36. return self.update(request_dict, user_id, response)
  37. elif operation == 'delete': # 删除子设备
  38. return self.delete(request_dict, user_id, response)
  39. else:
  40. return response.json(414)
  41. @staticmethod
  42. def add(request_dict, user_id, response):
  43. """
  44. 添加子设备
  45. @param request_dict: 请求参数
  46. @request_dict serial_number: 序列号
  47. @request_dict device_type: 设备类型
  48. @request_dict nickname: 设备名
  49. @request_dict src_addr: 短地址
  50. @request_dict family_id: 家庭id
  51. @request_dict room_id: 房间id
  52. @param user_id: 用户id
  53. @param response: 响应对象
  54. @return: response 响应对象
  55. """
  56. serial_number = request_dict.get('serial_number', None)
  57. device_type = int(request_dict.get('device_type', None))
  58. nickname = request_dict.get('nickname', None)
  59. src_addr = request_dict.get('src_addr', None)
  60. family_id = request_dict.get('family_id', None)
  61. room_id = request_dict.get('room_id', None)
  62. if not all([serial_number, device_type, nickname, src_addr, family_id, room_id]):
  63. return response.json(444)
  64. now_time = int(time.time())
  65. try:
  66. device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number).values('id')
  67. if not device_info_qs.exists():
  68. return response.json(14)
  69. device_id = device_info_qs[0]['id']
  70. with transaction.atomic():
  71. sub_device = GatewaySubDevice.objects.create(device_id=device_id, device_type=device_type,
  72. nickname=nickname, src_addr=src_addr, status=1,
  73. created_time=now_time, updated_time=now_time)
  74. FamilyRoomDevice.objects.create(family_id=family_id, room_id=room_id, device_id=device_id,
  75. sub_device=sub_device, created_time=now_time, updated_time=now_time)
  76. return response.json(0)
  77. except Exception as e:
  78. return response.json(500, repr(e))
  79. @staticmethod
  80. def query(request_dict, user_id, response):
  81. """
  82. 查询子设备
  83. @param request_dict: 请求参数
  84. @request_dict serial_number: 序列号
  85. @param user_id: 用户id
  86. @param response: 响应对象
  87. @return: response
  88. """
  89. serial_number = request_dict.get('serial_number', None)
  90. if not all([serial_number]):
  91. return response.json(444)
  92. try:
  93. device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number).values('id')
  94. if not device_info_qs.exists():
  95. return response.json(14)
  96. device_id = device_info_qs[0]['id']
  97. count = GatewaySubDevice.objects.filter(device_id=device_id).count()
  98. gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id).values('device_type',
  99. 'nickname', 'src_addr',
  100. 'status')
  101. gateway_sub_device_list = [gateway_sub_device for gateway_sub_device in gateway_sub_device_qs]
  102. res = {
  103. 'count': count,
  104. 'gateway_sub_device_list': gateway_sub_device_list
  105. }
  106. return response.json(0, res)
  107. except Exception as e:
  108. return response.json(500, repr(e))
  109. @staticmethod
  110. def update(request_dict, user_id, response):
  111. """
  112. 更新子设备信息
  113. @param request_dict: 请求参数
  114. @request_dict serial_number: 序列号
  115. @request_dict sub_device_id: 子设备id
  116. @param user_id: 用户id
  117. @param response: 响应对象
  118. @return: response
  119. """
  120. serial_number = request_dict.get('serial_number', None)
  121. sub_device_id = request_dict.get('sub_device_id', None)
  122. nickname = request_dict.get('nickname', None)
  123. src_addr = request_dict.get('src_addr', None)
  124. status = int(request_dict.get('status', None))
  125. family_id = request_dict.get('family_id', None)
  126. room_id = request_dict.get('room_id', None)
  127. if not all([serial_number]):
  128. return response.json(444)
  129. try:
  130. device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number).values('id')
  131. if not device_info_qs.exists():
  132. return response.json(14)
  133. update_data = {
  134. 'nickname': nickname,
  135. 'src_addr': src_addr,
  136. 'status': status,
  137. }
  138. GatewaySubDevice.objects.filter(id=sub_device_id).update(**update_data)
  139. return response.json(0)
  140. except Exception as e:
  141. return response.json(500, repr(e))
  142. @staticmethod
  143. def delete(request_dict, user_id, response):
  144. """
  145. 更新子设备信息
  146. @param request_dict: 请求参数
  147. @request_dict sub_device_id: 子设备id
  148. @param user_id: 用户id
  149. @param response: 响应对象
  150. @return: response
  151. """
  152. sub_device_id = request_dict.get('sub_device_id', None)
  153. if not all([sub_device_id]):
  154. return response.json(444)
  155. try:
  156. GatewaySubDevice.objects.filter(id=sub_device_id).delete()
  157. return response.json(0)
  158. except Exception as e:
  159. return response.json(500, repr(e))