123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- from library.validator.fields import IntegerField, BoolField, FloatField, ListField, DictField
- from library.validator import Validator
- from apilib.systypes import IntEnum
- from apps.web.constant import Const
- STATUS_MAP = {
- "01": Const.DEV_WORK_STATUS_IDLE,
- "02": Const.DEV_WORK_STATUS_WORKING,
- "03": Const.DEV_WORK_STATUS_FORBIDDEN,
- "04": Const.DEV_WORK_STATUS_FAULT,
- }
- REASON_MAP = {
- 0x00: u"订购额度使用完毕",
- 0x01: u"充电插头脱落,终止充电",
- 0x02: u"电量已充满,设备自动停止",
- 0x03: u"设备端口故障,终止充电",
- 0x04: u"充电功率超限,终止充电",
- 0x05: u"刷卡结束",
- 0x06: u"未检测到充电设备,终止充电",
- 0x07: u"远程停止充电",
- 0x08: u"设备烟雾告警,终止充电",
- -2: u"检测未在充电状态,主动关闭订单"
- }
- class BillingType(IntEnum):
- ELEC = 1
- TIME = 0
- class CARD_STATUS(IntEnum):
- SUCCESS = 1
- ILLEGAL = 3
- FROZEN = 4
- class CARD_OPT(IntEnum):
- DEDUCT = 1
- REFUND = 3
- class KeHangPowerStepValidator(Validator):
- power = IntegerField(required=True, max_value=5000, strict=False)
- ratio = IntegerField(required=True, min_value=0, max_value=100, strict=False)
- class KeHangDeviceSettingsValidator(Validator):
- maxPower = IntegerField(min_value=0, max_value=0xFFFF, required=True, strict=False)
- cardCost = FloatField(min_value=0, max_value=20, required=True, strict=False) # 单位转换
- coin1Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
- coin2Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
- coin3Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
- card1Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
- card2Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
- card3Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
- isCardRefund = BoolField(required=True, strict=False)
- isAutoStop = BoolField(required=True, strict=False)
- isFree = BoolField(required=True, strict=False)
- isCoinEnable = BoolField(required=True, strict=False)
- isCardEnable = BoolField(required=True, strict=False)
- voice = IntegerField(min_value=0, max_value=8, required=True, strict=False)
- minConsume = FloatField(min_value=0, max_value=2.2, required=True, strict=False)
- floatPower = FloatField(min_value=0, max_value=99.9, required=True, strict=False)
- floatTime = IntegerField(min_value=120, max_value=7200, required=True, strict=False)
- noloadPower = FloatField(min_value=0, max_value=30.0, required=True, strict=False)
- noloadTime = IntegerField(min_value=3, max_value=999, required=True, strict=False)
- consumeType = IntegerField(min_value=0, max_value=1, required=True, strict=False)
- billingType = IntegerField(min_value=0, max_value=2, required=True, strict=False)
- powerStep = ListField(field=DictField(validator=KeHangPowerStepValidator), max_length=6, min_length=5)
- def suit_data(self):
- if not self.validated_data:
- return {}
- data = self.validated_data.copy()
- data["cardCost"] = int(data["cardCost"] * 10)
- data["floatPower"] = int(data["floatPower"] * 10)
- data["noloadPower"] = int(data["noloadPower"] * 10)
- data["minConsume"] = int(data["minConsume"] * 10)
- return data
|