wawaji_wumahang.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import logging
  4. import time
  5. from apps import serviceCache
  6. from apps.web.dealer.utils import consume_stock
  7. from apps.web.device.models import Device
  8. from apps.web.eventer import EventBuilder
  9. from apps.web.eventer.base import FaultEvent, WorkEvent
  10. logger = logging.getLogger(__name__)
  11. class builder(EventBuilder):
  12. def __getEvent__(self, device_event):
  13. data = self.deviceAdapter.analyze_event_data(device_event)
  14. if data is None:
  15. return None
  16. if data['funCode'] == '96':
  17. return WawajiWorkEvent(self.deviceAdapter, data)
  18. elif data['funCode'] == '8B':
  19. return FaultEvent(self.deviceAdapter,data)
  20. class WawajiWorkEvent(WorkEvent):
  21. SUCCESS = "01"
  22. FAIL = "00"
  23. def do(self, **args):
  24. # 娃娃被抓取后,需要发送消息确认,然后记录消耗记录
  25. funCode = self.event_data['funCode']
  26. if funCode != '96':
  27. return
  28. devNo = self.device['devNo']
  29. lastTime = serviceCache.get('%s-item-fall'%devNo,None)
  30. if lastTime:
  31. nowTime = int(time.time())
  32. if nowTime - lastTime < 10:# 10秒以内,忽略掉
  33. return
  34. serviceCache.set('%s-item-fall'%devNo,int(time.time()))
  35. devObj = Device.objects.get(devNo = devNo)
  36. consume_stock(devObj,1)
  37. logger.info('finished record stock ,devNo=%s' % devNo)