FeedDiaryController.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : FeedDiaryController.py
  4. @Time : 2024-10-7 14:37:30
  5. @Author : peng
  6. @Email :
  7. @Software: PyCharm
  8. """
  9. import json
  10. import time
  11. from django.core.exceptions import ObjectDoesNotExist
  12. from django.db import transaction
  13. from django.db.models import F, Q, Count
  14. from django.views import View
  15. from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SENSOR_TYPE, EVENT_TYPE, SCENE_EVENT_CREATE, \
  16. SCENE_EVENT_EDIT, SCENE_EVENT_DELETE, SCENE_STATUS_ON, SCENE_STATUS_OFF, SCENE_EVENT_EDIT_STATUS, \
  17. VOICE_AUDITION_TOPIC, DEVICE_TYPE, SMART_SCENE_TASK, LINKAGE_DEVICE_TYPE_LIST
  18. from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom, SmartScene, EffectiveTime, Device_Info, \
  19. SceneLog
  20. from Object.ResponseObject import ResponseObject
  21. from Service.CommonService import CommonService
  22. class FeedDiaryView(View):
  23. def get(self, request, *args, **kwargs):
  24. request.encoding = 'utf-8'
  25. operation = kwargs.get('operation')
  26. return self.validation(request.GET, request, operation)
  27. def post(self, request, *args, **kwargs):
  28. request.encoding = 'utf-8'
  29. operation = kwargs.get('operation')
  30. return self.validation(request.POST, request, operation)
  31. def validation(self, request_dict, request, operation):
  32. if operation == 'get-scene': # 设备获取智能场景数据
  33. return self.get_scene_data(request_dict, ResponseObject('cn'))
  34. token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
  35. if token_code != 0:
  36. return response.json(token_code)
  37. if operation == 'condition-devices': # 添加条件-查询设备
  38. return self.condition_devices(request_dict, response)
  39. else:
  40. return response.json(414)
  41. @classmethod
  42. def condition_devices(cls, request_dict, response):
  43. """
  44. 添加条件-查询设备
  45. @param request_dict: 请求参数
  46. @request_dict deviceId: 网关设备id
  47. @request_dict subDeviceId: 子设备id
  48. @param response: 响应对象
  49. @return: response
  50. """
  51. device_id = request_dict.get('deviceId', None)
  52. sub_device_id = request_dict.get('subDeviceId', None)
  53. if not any([device_id, sub_device_id]):
  54. return response.json(444, {'error param': 'deviceId or subDeviceId'})
  55. try:
  56. if sub_device_id:
  57. device_id = GatewaySubDevice.objects.get(id=sub_device_id).device_id
  58. gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id)
  59. if not gateway_sub_device_qs.exists():
  60. return response.json(173)
  61. res = cls.get_sub_device_room_name(gateway_sub_device_qs)
  62. return response.json(0, res)
  63. except Exception as e:
  64. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))