1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- # -*- coding: utf-8 -*-
- #!/usr/bin/env python
- # TODO 每家驱动有自己的adapter, eventer, 以及自定义的常亮定义. 需要后续以驱动为包来组织
- # 本文件包含霍珀门禁设备的相关定义
- import simplejson as json
- from typing import TYPE_CHECKING
- from apilib.monetary import RMB
- from apps import serviceCache
- if TYPE_CHECKING:
- from typing import Dict
- class DefaultParams(object):
- DEFAULT_MAX_PARKING = 200
- DEFAULT_VIP_MAX_PARKING = 200
- DEFAULT_SN_NUM = u"请配置"
- DEFAULT_FREE_TIME = 0
- DEFAULT_MAX_CONSUME = 0
- # 四个常量
- SIGN = "1"
- DUTOU_NUM = '1'
- STAY_NUM = '0'
- AUTH_NUM = '0'
- INSTRUCT_FORMAT = "#{snNum},1,{dutou},{auth},{stay}@"
- class CacheKeyTemplate(object):
- PARKING_KEY_TEMPLATE = "parking-num-{groupId}_service"
- class HuopoCacheMgr(object):
- @classmethod
- def get_parking_cache(cls, group_id):
- # type: (basestring)->Dict
- cache_key = CacheKeyTemplate.PARKING_KEY_TEMPLATE.format(groupId = group_id)
- cache_value = serviceCache.get(cache_key)
- if cache_value:
- return json.loads(cache_value)
- else:
- return None
- @classmethod
- def set_parking_cache(cls, group_id, value):
- # type: (basestring, Dict)->Dict
- cache_key = CacheKeyTemplate.PARKING_KEY_TEMPLATE.format(groupId = group_id)
- serviceCache.set(cache_key, json.dumps(value))
- class Caculater(object):
- def __init__(self, duration, package):
- """
- 价格计算器
- :param duration:
- :param package:
- """
- self._duration = duration
- self._cycleHour, self._cyclePrice = int(package.get("maxHour", 0)), RMB(package.get("price", 0))
- assert self._cycleHour and self._cyclePrice
-
- @property
- def cycle(self):
- """
- 计费周期
- :return:
- """
- cycleSecond = self._cycleHour * 3600
- return self._duration // cycleSecond + int(bool(self._duration % cycleSecond))
- def caculate(self):
- return self._cyclePrice * self.cycle
|