daqiang.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. import logging
  4. from apps.web.constant import Const
  5. from apps.web.device.models import Device, Group
  6. from apps.web.eventer import EventBuilder
  7. from apps.web.eventer.base import WorkEvent
  8. from apps.web.user.models import MyUser
  9. logger = logging.getLogger(__name__)
  10. class builder(EventBuilder):
  11. def __getEvent__(self, device_event):
  12. event_data = self.deviceAdapter.analyze_event_data(device_event['data'])
  13. if event_data is None or 'cmdCode' not in event_data:
  14. return None
  15. if event_data['cmdCode'] in ['FF', 'F1']:
  16. return DaQiangWorkEvent(self.deviceAdapter, event_data)
  17. return None
  18. class DaQiangWorkEvent(WorkEvent):
  19. def do(self, **args):
  20. devNo = self.device['devNo']
  21. logger.info('da qiang event detected, devNo=%s,curInfo=%s' % (devNo, self.event_data))
  22. if self.event_data['cmdCode'] == 'FF':
  23. lineInfo = Device.get_dev_control_cache(self.device.devNo)
  24. openId = lineInfo.get('openId')
  25. if openId:
  26. myUser = MyUser.objects.filter(openId=openId, groupId=self.device['groupId']).first()
  27. if not myUser:
  28. return
  29. else:
  30. group = Group.get_group(self.device['groupId'])
  31. self.notify_user(myUser.managerialOpenId, 'service_complete', **{
  32. 'title': '您已订购成功',
  33. 'service': '订购(设备编号:%s, 地址:%s)' % (self.device['logicalCode'], group['address']),
  34. 'finishTime': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
  35. 'remark': '谢谢您的支持'
  36. })
  37. Device.update_dev_control_cache(self.device.devNo, {'status': Const.DEV_WORK_STATUS_IDLE})
  38. elif self.event_data['cmdCode'] == 'F1':
  39. Device.update_dev_control_cache(self.device.devNo, {'status': Const.DEV_WORK_STATUS_FAULT})