# coding=utf-8 from library.validator import Validator, ValidationError from library.validator.fields import IntegerField, BoolField, StringField, FloatField DEFAULT_REFUND_PROTECTION_TIME = 5 # 退费保护时间 默认5分钟 DEFAULT_SERVICE_FEE = 1 # 默认的最小消费 单位是元 DEFAULT_REFUND_CAL_BASE = 1 # 默认的退费进制时间 单位分钟 不满X分钟按X分钟计算 REASON_MAP = { 0x01: u"设备过载停止", 0x02: u"设备空载停止,请检查插头是否连接", 0x03: u"设备充满停止", 0x04: u"设备直通停止", 0x80: u"您的订购量已经使用完毕", 0x88: u"您的充电已经完成", 0xCB: u"远程断电,您的充电已经结束" } class SetResponse(object): SUCCESS = "52" FAIL = "53" class ChargeMode(object): TIME = 0 ELEC = 1 class CXJZDeviceSettingsValidator(Validator): cardCode = StringField(max_length=4, min_length=4, required=True) chargeMode = IntegerField(min_value=0, max_value=3, required=True, strict=False) maxPower = IntegerField(min_value=0, max_value=3000, required=True, strict=False) coinUpperLimit = IntegerField(min_value=0, required=True, strict=False) fullStopTime = IntegerField(min_value=0, required=True, strict=False) noLoadTime = IntegerField(min_value=0, required=True, strict=False) fullPower = IntegerField(min_value=0, required=True, strict=False) noLoadPower = IntegerField(min_value=0, required=True, strict=False) cardCoinElec = FloatField(min_value=0, required=True, strict=False) coinTime = IntegerField(min_value=0, required=True, strict=False) coinMax = IntegerField(min_value=0, required=True, strict=False) reportTime = IntegerField(min_value=0, required=True, strict=False) reCheckTime = IntegerField(min_value=0, required=True, strict=False) stopSwitch = BoolField(required=True, strict=False) coinSwitch = BoolField(required=True, strict=False) smokeSwitch = BoolField(required=True, strict=False) powerSwitch = BoolField(required=True, strict=False) # 功率分档设置 time1 = IntegerField(min_value=0, max_value=900, required=True, strict=False) time2 = IntegerField(min_value=0, max_value=900, required=True, strict=False) time3 = IntegerField(min_value=0, max_value=900, required=True, strict=False) time4 = IntegerField(min_value=0, max_value=900, required=True, strict=False) power1 = IntegerField(min_value=0, max_value=1000, required=True, strict=False) power2 = IntegerField(min_value=0, max_value=1000, required=True, strict=False) power3 = IntegerField(min_value=0, max_value=1000, required=True, strict=False) # 退费的服务器参数设置 serviceFee = FloatField(min_value=0, required=True, strict=False) refundProtectionTime = IntegerField(min_value=0, max_value=30, strict=False) refundCalBase = IntegerField(min_value=1, max_value=60, strict=False) def suit_data(self): if not self.validated_data: return {} data = self.validated_data.copy() # 对电量做单位转换 data["cardCoinElec"] = int(float(data["cardCoinElec"]) * 10) # 对C3时间做转换 C3实际上是差值 表示 第一档时间 - 投币时间 data["coinTime"] = data["time1"] - data["coinTime"] return data def validate(self, data): if data["coinTime"] > data["time1"]: raise ValidationError(u"投币时间不能大于第一段时间") return data