gatewayController.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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 Model.models import UidPushModel
  12. from Object.ResponseObject import ResponseObject
  13. from Object.utils import LocalDateTimeUtil
  14. from Service.CommonService import CommonService
  15. from Service.EquipmentInfoService import EquipmentInfoService
  16. class GatewayView(View):
  17. def get(self, request, *args, **kwargs):
  18. request.encoding = 'utf-8'
  19. operation = kwargs.get('operation')
  20. return self.validation(request.GET, request, operation)
  21. def post(self, request, *args, **kwargs):
  22. request.encoding = 'utf-8'
  23. operation = kwargs.get('operation')
  24. return self.validation(request.POST, request, operation)
  25. def validation(self, request_dict, request, operation):
  26. response = ResponseObject()
  27. if operation == 'gatewayPush': # 网关推送
  28. return self.gateway_push(request_dict, response)
  29. else:
  30. return response.json(414)
  31. def gateway_push(self, request_dict, response):
  32. logger = logging.getLogger('info')
  33. serial_number = request_dict.get('serial_number', None)
  34. src_addr = request_dict.get('src_addr', None)
  35. event_type = request_dict.get('event_type', None)
  36. alarm = request_dict.get('alarm', None)
  37. logger.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
  38. if not all([serial_number, src_addr, event_type, alarm]):
  39. return response.json(444)
  40. equipment_info_list = []
  41. now_time = int(time.time())
  42. device_user_id = '160879593527813800138000'
  43. try:
  44. '''
  45. # 查询推送数据
  46. uid_push_qs = UidPushModel.objects.filter(uid_set__uid=serial_number, uid_set__detect_status=1). \
  47. values('token_val', 'app_type', 'appBundleId', 'm_code', 'push_type', 'userID_id', 'userID__NickName',
  48. 'lang', 'm_code', 'tz', 'uid_set__nickname', 'uid_set__detect_interval', 'uid_set__detect_group',
  49. 'uid_set__channel')
  50. if not uid_push_qs.exists():
  51. return response.json(173)
  52. uid_push_list = [uid_push for uid_push in uid_push_qs]
  53. '''
  54. event_type = int(event_type)
  55. local_date_time = CommonService.get_now_time_str(n_time=now_time, tz=0, lang='cn')
  56. local_date_time = local_date_time[:10]
  57. equipment_info_list.append(EquipmentInfoService.get_equipment_info_obj(
  58. local_date_time,
  59. add_time=now_time,
  60. event_time=now_time,
  61. receive_time=now_time,
  62. device_uid=serial_number,
  63. event_type=event_type,
  64. alarm=alarm,
  65. device_nick_name=src_addr,
  66. device_user_id=device_user_id,
  67. ))
  68. if equipment_info_list:
  69. # 根据日期获得星期几
  70. week = LocalDateTimeUtil.date_to_week(local_date_time)
  71. EquipmentInfoService.equipment_info_bulk_create(week, equipment_info_list)
  72. return response.json(0)
  73. except Exception as e:
  74. logger.info('---网关推送接口异常--- {}'.format(repr(e)))
  75. return response.json(500, repr(e))