kehang.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. from library.validator.fields import IntegerField, BoolField, FloatField, ListField, DictField
  4. from library.validator import Validator
  5. from apilib.systypes import IntEnum
  6. from apps.web.constant import Const
  7. STATUS_MAP = {
  8. "01": Const.DEV_WORK_STATUS_IDLE,
  9. "02": Const.DEV_WORK_STATUS_WORKING,
  10. "03": Const.DEV_WORK_STATUS_FORBIDDEN,
  11. "04": Const.DEV_WORK_STATUS_FAULT,
  12. }
  13. REASON_MAP = {
  14. 0x00: u"订购额度使用完毕",
  15. 0x01: u"充电插头脱落,终止充电",
  16. 0x02: u"电量已充满,设备自动停止",
  17. 0x03: u"设备端口故障,终止充电",
  18. 0x04: u"充电功率超限,终止充电",
  19. 0x05: u"刷卡结束",
  20. 0x06: u"未检测到充电设备,终止充电",
  21. 0x07: u"远程停止充电",
  22. 0x08: u"设备烟雾告警,终止充电",
  23. -2: u"检测未在充电状态,主动关闭订单"
  24. }
  25. class BillingType(IntEnum):
  26. ELEC = 1
  27. TIME = 0
  28. class CARD_STATUS(IntEnum):
  29. SUCCESS = 1
  30. ILLEGAL = 3
  31. FROZEN = 4
  32. class CARD_OPT(IntEnum):
  33. DEDUCT = 1
  34. REFUND = 3
  35. class KeHangPowerStepValidator(Validator):
  36. power = IntegerField(required=True, max_value=5000, strict=False)
  37. ratio = IntegerField(required=True, min_value=0, max_value=100, strict=False)
  38. class KeHangDeviceSettingsValidator(Validator):
  39. maxPower = IntegerField(min_value=0, max_value=0xFFFF, required=True, strict=False)
  40. cardCost = FloatField(min_value=0, max_value=20, required=True, strict=False) # 单位转换
  41. coin1Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
  42. coin2Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
  43. coin3Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
  44. card1Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
  45. card2Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
  46. card3Time = IntegerField(min_value=0, max_value=999, required=True, strict=False)
  47. isCardRefund = BoolField(required=True, strict=False)
  48. isAutoStop = BoolField(required=True, strict=False)
  49. isFree = BoolField(required=True, strict=False)
  50. isCoinEnable = BoolField(required=True, strict=False)
  51. isCardEnable = BoolField(required=True, strict=False)
  52. voice = IntegerField(min_value=0, max_value=8, required=True, strict=False)
  53. minConsume = FloatField(min_value=0, max_value=2.2, required=True, strict=False)
  54. floatPower = FloatField(min_value=0, max_value=99.9, required=True, strict=False)
  55. floatTime = IntegerField(min_value=120, max_value=7200, required=True, strict=False)
  56. noloadPower = FloatField(min_value=0, max_value=30.0, required=True, strict=False)
  57. noloadTime = IntegerField(min_value=3, max_value=999, required=True, strict=False)
  58. consumeType = IntegerField(min_value=0, max_value=1, required=True, strict=False)
  59. billingType = IntegerField(min_value=0, max_value=2, required=True, strict=False)
  60. powerStep = ListField(field=DictField(validator=KeHangPowerStepValidator), max_length=6, min_length=5)
  61. def suit_data(self):
  62. if not self.validated_data:
  63. return {}
  64. data = self.validated_data.copy()
  65. data["cardCost"] = int(data["cardCost"] * 10)
  66. data["floatPower"] = int(data["floatPower"] * 10)
  67. data["noloadPower"] = int(data["noloadPower"] * 10)
  68. data["minConsume"] = int(data["minConsume"] * 10)
  69. return data