# -*- coding: utf-8 -*- import datetime import logging from apps.web.constant import Const from apps.web.device.models import Device, Group from apps.web.eventer import EventBuilder from apps.web.eventer.base import WorkEvent from apps.web.user.models import MyUser logger = logging.getLogger(__name__) class builder(EventBuilder): def __getEvent__(self, device_event): event_data = self.deviceAdapter.analyze_event_data(device_event['data']) if event_data is None or 'cmdCode' not in event_data: return None if event_data['cmdCode'] in ['FF', 'F1']: return DaQiangWorkEvent(self.deviceAdapter, event_data) return None class DaQiangWorkEvent(WorkEvent): def do(self, **args): devNo = self.device['devNo'] logger.info('da qiang event detected, devNo=%s,curInfo=%s' % (devNo, self.event_data)) if self.event_data['cmdCode'] == 'FF': lineInfo = Device.get_dev_control_cache(self.device.devNo) openId = lineInfo.get('openId') if openId: myUser = MyUser.objects.filter(openId=openId, groupId=self.device['groupId']).first() if not myUser: return else: group = Group.get_group(self.device['groupId']) self.notify_user(myUser.managerialOpenId, 'service_complete', **{ 'title': '您已订购成功', 'service': '订购(设备编号:%s, 地址:%s)' % (self.device['logicalCode'], group['address']), 'finishTime': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'remark': '谢谢您的支持' }) Device.update_dev_control_cache(self.device.devNo, {'status': Const.DEV_WORK_STATUS_IDLE}) elif self.event_data['cmdCode'] == 'F1': Device.update_dev_control_cache(self.device.devNo, {'status': Const.DEV_WORK_STATUS_FAULT})