gatewayController.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # -*- coding: utf-8 -*-
  2. """
  3. @Time : 2022/5/9 10:51
  4. @Auth : Locky
  5. @File :gatewayController.py
  6. @IDE :PyCharm
  7. """
  8. import logging
  9. import time
  10. from django.views.generic.base import View
  11. from Object.ResponseObject import ResponseObject
  12. from Object.utils import LocalDateTimeUtil
  13. from Service.CommonService import CommonService
  14. from Service.EquipmentInfoService import EquipmentInfoService
  15. class GatewayView(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, request, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, request, operation)
  24. def validation(self, request_dict, request, operation):
  25. response = ResponseObject()
  26. if operation == 'gatewayPush': # 网关推送
  27. return self.gateway_push(request_dict, response)
  28. else:
  29. return response.json(414)
  30. def gateway_push(self, request_dict, response):
  31. logger = logging.getLogger('info')
  32. serial_number = request_dict.get('serial_number', None)
  33. src_addr = request_dict.get('src_addr', None)
  34. event_type = request_dict.get('event_type', None)
  35. alarm = request_dict.get('alarm', None)
  36. logger.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
  37. if not all([src_addr, event_type, alarm]):
  38. return response.json(444)
  39. equipment_info_list = []
  40. now_time = int(time.time())
  41. device_user_id = '160879593527813800138000'
  42. try:
  43. event_type = int(event_type)
  44. local_date_time = CommonService.get_now_time_str(n_time=now_time, tz=0, lang='cn')
  45. local_date_time = local_date_time[:10]
  46. equipment_info_list.append(EquipmentInfoService.get_equipment_info_obj(
  47. local_date_time,
  48. add_time=now_time,
  49. event_time=now_time,
  50. receive_time=now_time,
  51. device_uid=serial_number,
  52. event_type=event_type,
  53. alarm=alarm,
  54. device_nick_name=src_addr,
  55. device_user_id=device_user_id,
  56. ))
  57. if equipment_info_list:
  58. # 根据日期获得星期几
  59. week = LocalDateTimeUtil.date_to_week(local_date_time)
  60. EquipmentInfoService.equipment_info_bulk_create(week, equipment_info_list)
  61. return response.json(0)
  62. except Exception as e:
  63. return response.json(500, repr(e))