wawaji_common_serial.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import logging
  4. import time
  5. from apps import serviceCache
  6. from apps.web.core.accounting import Accounting
  7. from apps.web.dealer.utils import consume_stock
  8. from apps.web.device.models import Device
  9. from apps.web.eventer import EventBuilder
  10. from apps.web.eventer.base import WorkEvent
  11. logger = logging.getLogger(__name__)
  12. class builder(EventBuilder):
  13. def __getEvent__(self, device_event):
  14. data = self.deviceAdapter.analyze_event_data(device_event)
  15. if data is None:
  16. return None
  17. if data['funCode'] in ['13']:
  18. return WawajiWorkEvent(self.deviceAdapter, data)
  19. return None
  20. class WawajiWorkEvent(WorkEvent):
  21. SUCCESS = "01"
  22. FAIL = "00"
  23. def do(self, **args):
  24. # 娃娃被抓取后,需要发送消息确认,然后记录消耗记录
  25. funCode = self.event_data['funCode']
  26. devNo = self.device['devNo']
  27. if funCode in ['13']:
  28. devNo = self.device['devNo']
  29. lastCode = serviceCache.get('%s-event-random'%devNo,None)
  30. if lastCode == self.event_data['randomCode']:
  31. return
  32. else:
  33. serviceCache.set('%s-event-random'%devNo,self.event_data['randomCode'])
  34. coinCount = self.event_data['coinCount']
  35. itemCount = self.event_data['itemCount']
  36. if coinCount>0:
  37. Accounting.recordOfflineCoin(self.device,int(time.time()),int(coinCount))
  38. if itemCount>0:
  39. devObj = Device.objects.get(devNo = devNo)
  40. consume_stock(devObj,itemCount)
  41. logger.info('finished record stock ,devNo=%s' % devNo)