cxjz.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # coding=utf-8
  2. from library.validator import Validator, ValidationError
  3. from library.validator.fields import IntegerField, BoolField, StringField, FloatField
  4. DEFAULT_REFUND_PROTECTION_TIME = 5 # 退费保护时间 默认5分钟
  5. DEFAULT_SERVICE_FEE = 1 # 默认的最小消费 单位是元
  6. DEFAULT_REFUND_CAL_BASE = 1 # 默认的退费进制时间 单位分钟 不满X分钟按X分钟计算
  7. REASON_MAP = {
  8. 0x01: u"设备过载停止",
  9. 0x02: u"设备空载停止,请检查插头是否连接",
  10. 0x03: u"设备充满停止",
  11. 0x04: u"设备直通停止",
  12. 0x80: u"您的订购量已经使用完毕",
  13. 0x88: u"您的充电已经完成",
  14. 0xCB: u"远程断电,您的充电已经结束"
  15. }
  16. class SetResponse(object):
  17. SUCCESS = "52"
  18. FAIL = "53"
  19. class ChargeMode(object):
  20. TIME = 0
  21. ELEC = 1
  22. class CXJZDeviceSettingsValidator(Validator):
  23. cardCode = StringField(max_length=4, min_length=4, required=True)
  24. chargeMode = IntegerField(min_value=0, max_value=3, required=True, strict=False)
  25. maxPower = IntegerField(min_value=0, max_value=3000, required=True, strict=False)
  26. coinUpperLimit = IntegerField(min_value=0, required=True, strict=False)
  27. fullStopTime = IntegerField(min_value=0, required=True, strict=False)
  28. noLoadTime = IntegerField(min_value=0, required=True, strict=False)
  29. fullPower = IntegerField(min_value=0, required=True, strict=False)
  30. noLoadPower = IntegerField(min_value=0, required=True, strict=False)
  31. cardCoinElec = FloatField(min_value=0, required=True, strict=False)
  32. coinTime = IntegerField(min_value=0, required=True, strict=False)
  33. coinMax = IntegerField(min_value=0, required=True, strict=False)
  34. reportTime = IntegerField(min_value=0, required=True, strict=False)
  35. reCheckTime = IntegerField(min_value=0, required=True, strict=False)
  36. stopSwitch = BoolField(required=True, strict=False)
  37. coinSwitch = BoolField(required=True, strict=False)
  38. smokeSwitch = BoolField(required=True, strict=False)
  39. powerSwitch = BoolField(required=True, strict=False)
  40. # 功率分档设置
  41. time1 = IntegerField(min_value=0, max_value=900, required=True, strict=False)
  42. time2 = IntegerField(min_value=0, max_value=900, required=True, strict=False)
  43. time3 = IntegerField(min_value=0, max_value=900, required=True, strict=False)
  44. time4 = IntegerField(min_value=0, max_value=900, required=True, strict=False)
  45. power1 = IntegerField(min_value=0, max_value=1000, required=True, strict=False)
  46. power2 = IntegerField(min_value=0, max_value=1000, required=True, strict=False)
  47. power3 = IntegerField(min_value=0, max_value=1000, required=True, strict=False)
  48. # 退费的服务器参数设置
  49. serviceFee = FloatField(min_value=0, required=True, strict=False)
  50. refundProtectionTime = IntegerField(min_value=0, max_value=30, strict=False)
  51. refundCalBase = IntegerField(min_value=1, max_value=60, strict=False)
  52. def suit_data(self):
  53. if not self.validated_data:
  54. return {}
  55. data = self.validated_data.copy()
  56. # 对电量做单位转换
  57. data["cardCoinElec"] = int(float(data["cardCoinElec"]) * 10)
  58. # 对C3时间做转换 C3实际上是差值 表示 第一档时间 - 投币时间
  59. data["coinTime"] = data["time1"] - data["coinTime"]
  60. return data
  61. def validate(self, data):
  62. if data["coinTime"] > data["time1"]:
  63. raise ValidationError(u"投币时间不能大于第一段时间")
  64. return data