# -*- coding: utf-8 -*- #!/usr/bin/env python import logging import time from apps import serviceCache from apps.web.core.accounting import Accounting from apps.web.dealer.utils import consume_stock from apps.web.device.models import Device from apps.web.eventer import EventBuilder from apps.web.eventer.base import WorkEvent logger = logging.getLogger(__name__) class builder(EventBuilder): def __getEvent__(self, device_event): data = self.deviceAdapter.analyze_event_data(device_event) if data is None: return None if data['funCode'] in ['13']: return WawajiWorkEvent(self.deviceAdapter, data) return None class WawajiWorkEvent(WorkEvent): SUCCESS = "01" FAIL = "00" def do(self, **args): # 娃娃被抓取后,需要发送消息确认,然后记录消耗记录 funCode = self.event_data['funCode'] devNo = self.device['devNo'] if funCode in ['13']: devNo = self.device['devNo'] lastCode = serviceCache.get('%s-event-random'%devNo,None) if lastCode == self.event_data['randomCode']: return else: serviceCache.set('%s-event-random'%devNo,self.event_data['randomCode']) coinCount = self.event_data['coinCount'] itemCount = self.event_data['itemCount'] if coinCount>0: Accounting.recordOfflineCoin(self.device,int(time.time()),int(coinCount)) if itemCount>0: devObj = Device.objects.get(devNo = devNo) consume_stock(devObj,itemCount) logger.info('finished record stock ,devNo=%s' % devNo)