constant.py 60 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """
  4. 全局常量管理类,避免在程序中使用魔鬼数字。
  5. 常量定义规范:
  6. 1、常量之间保持一行间隔
  7. 2、属于app下的常量前缀为APP名称,否则为COMMON
  8. 3、同一个app下的常量放在一起,COMMON放在最后面
  9. 常量声明格式:
  10. '''常量声明示例'''
  11. Const.APP_CONSTANT_NAME = '这是示例'
  12. 常量引用方式:
  13. print Const.TEST_CONSTANT
  14. """
  15. from constantly import Values, ValueConstant
  16. from enum import Enum
  17. from apilib.constants import _Constant
  18. from apilib.monetary import RMB, Permillage
  19. from apilib.systypes import enum, IntEnum, StrEnum, IterConstant
  20. Const = _Constant()
  21. Const.DEV_WORK_STATUS_IDLE = 0
  22. Const.DEV_WORK_STATUS_WORKING = 1
  23. Const.DEV_WORK_STATUS_FAULT = 2
  24. Const.DEV_WORK_STATUS_FORBIDDEN = 3
  25. Const.DEV_WORK_STATUS_PAUSE = 4
  26. Const.DEV_WORK_STATUS_CONNECTED = 5 # 汽车桩使用,表示和车辆连接OK
  27. Const.DEV_WORK_STATUS_FINISHED = 6 # 汽车桩使用,表示充电完成
  28. Const.DEV_WORK_STATUS_MAINTENANCE = 7 # 维护状态. 例如洗衣机正在消毒
  29. Const.DEV_WORK_STATUS_APPOINTMENT = 8 # 预约状态
  30. Const.DEV_WORK_STATUS_FAULT_OVERLOAD = 9 # 端口功率过载
  31. Const.DEV_WORK_STATUS_OCCUPY = 10
  32. Const.DEV_WORK_STATUS_ESTOP = 11 # 汽车充电桩急停状态
  33. Const.DEV_WORK_STATUS_READY = 12 # 汽车充电桩急停状态
  34. Const.DEV_WORK_STATUS_FAULT_RELAY_CONNECT = 13 # 继电器粘连故障
  35. Const.DEV_CYCLE_DEFAULT = 600
  36. class DeviceOnlineStatus(IterConstant):
  37. DEV_STATUS_OFFLINE = 0
  38. DEV_STATUS_ONLINE = 1
  39. Const.DEVICE_TOPIC_PREFIX = 'smart_box'
  40. Const.SERVER_TOPIC_PREFIX = 'manyi'
  41. Const.MQTT_QOS = 0
  42. Const.MQTT_QOS1 = 1
  43. Const.MQTT_RETRY_TIMES = 4
  44. Const.MQTT_RETRY_INTERVAL = 15
  45. class MQTT_TIMEOUT(IntEnum):
  46. START_DEVICE = 120
  47. START_DEVICE_PER_ROUND = 30
  48. CHECK_DEVICE_STATUS = 25
  49. TEST = 15
  50. SHORT = 20
  51. MEDIUM = 25
  52. NORMAL = 35
  53. LONG = 55
  54. LOGGER = 120
  55. LONGEST = 180
  56. Const.DEFAULT_DISCOUNT_RULE = {'10': 10.0, '20': 20.0, '50': 50.0, '100': 100.0}
  57. Const.ServiceState = Enum('ServiceState', ('Normal', 'Ban'))
  58. Const.FeedBackResult = enum(UNTREATED = 0, TREATED = 1, REJECTED = 2)
  59. Const.NEAR_BY_MAX_DISTANCE = 6000
  60. Const.DEVICE_ONLINE_CHECK_INTERVAL = 3 * 9 * 60 * 1000 # 超过3次KEEP ALIVE时间
  61. Const.DEVICE_ONLINE_CHECK_TIMES = 3
  62. Const.I_AM_FAULT = 120
  63. Const.I_AM_EVENT = 100
  64. Const.MAX_PAY_LIMIT = 500
  65. Const.NO_PORT = 9999
  66. # command code
  67. class DeviceCmdCode(object):
  68. # 经典命令码
  69. GET_DEVINFO = 201
  70. SET_DEVINFO = 202
  71. PAY_MONEY = 203
  72. STOP_DEVICE = 206
  73. OPERATE_DEV_SYNC = 210
  74. PASSTHROUGH_OPERATE_DEV_SYNC = 211
  75. OPERATE_DEV_NO_RESPONSE = 220
  76. PASSTHROUGH_OPERATE_DEV_NO_RESPONSE = 221
  77. # 命令确认
  78. EVENT_ACK = 223
  79. OPERATE_DEV_SERVER_ASYNC = 226 # 发送消息,消息结果依赖100的事件上报
  80. PASSTHROUGH_OPERATE_DEV_SERVER_ASYNC = 227 # 发送消息,消息结果依赖100的事件上报
  81. UART_LOOP_TEST = 228 # 串口环回测试命令
  82. UART_SIMULATE_RECEIVE_DATA = 229 # 串口模拟发送主板响应
  83. # 随机命令码范围
  84. RANDOM_START_CODE = 230
  85. RANDOM_END_CODE = 299
  86. RESPONSE_QR_CODE_URL = 102 # 设备请求二维码地址返回给设备
  87. Const.DEVICE_TYPE_CODE_PULSE_BEGIN = '100000' # 脉冲类型编码起始号
  88. Const.DEVICE_TYPE_CODE_PULSE = '100000' # 通用脉冲
  89. Const.DEVICE_TYPE_CODE_PULSE_WASHER = '100028' # 洗衣机
  90. Const.DEVICE_TYPE_CODE_PULSE_CHARGER = '100029' # 充电桩
  91. Const.DEVICE_TYPE_CODE_PULSE_BLOW_DRYER = '100030' # 洗手液机
  92. Const.DEVICE_TYPE_CODE_PULSE_CAR_WASHER = '100031' # 洗车机
  93. Const.DEVICE_TYPE_CODE_PULSE_DISPENSER = '100032' # 售货机
  94. Const.DEVICE_TYPE_CODE_PULSE_TUMBLE_DRYER = '100033' # 烘干机
  95. Const.DEVICE_TYPE_CODE_PULSE_XIXIEJI = '100033' # 洗鞋机
  96. Const.DEVICE_TYPE_CODE_PULSE_BATHER = '100035' # 我要洗澡
  97. Const.DEVICE_TYPE_CODE_PULSE_YAOYAOCHE = '100036' # 摇摇车
  98. Const.DEVICE_TYPE_CODE_PULSE_BEERTENDER = '100037' # 啤酒机
  99. Const.DEVICE_TYPE_CODE_PULSE_OTHER = '100050' # 其他
  100. Const.DEVICE_TYPE_CODE_PULSE_WAWAJI = '100051' # 娃娃机
  101. Const.DEVICE_TYPE_CODE_PULSE_SHUKOUSHUI = '100052' # 漱口水
  102. Const.DEVICE_TYPE_CODE_PULSE_SHOUYEJI = '100053' # 售液机
  103. Const.DEVICE_TYPE_CODE_PULSE_WEIGHER = '100100' # 体重计
  104. Const.DEVICE_TYPE_CODE_PULSE_DRINKER = '100101' # 饮水机
  105. Const.DEVICE_TYPE_CODE_PULSE_COFFER = '100102' # 咖啡机
  106. Const.DEVICE_TYPE_CODE_PULSE_HAND_WASHER = '100103' # 洗手液机
  107. Const.DEVICE_TYPE_CODE_PULSE_END = '100107' # 脉冲类型编码结束号
  108. Const.DEVICE_TYPE_CODE_BOARD_VOLT_HIGH = '100120' # 主板高电平使能投币器
  109. Const.DEVICE_TYPE_CODE_CHILD_CAR = '100121' # 儿童车
  110. Const.DEVICE_TYPE_CODE_WASHER_SCHZ = '100132' # 四川何总洗衣机,投币特殊要求(脉冲类型) 100301=>100132
  111. # 10X200-10X299 12X000-12X999 充电桩类型
  112. Const.DEVICE_TYPE_CODE_CHARGING_BASE = '100200' # 充电桩基础CODE
  113. Const.DEVICE_TYPE_CODE_QUICK_CHARGE = '100118' # TODO: GPRS双口快充(脉冲类型)
  114. Const.DEVICE_TYPE_CODE_CHARGING_KYXN = '100200' # 凯源新能的充电桩
  115. Const.DEVICE_TYPE_CODE_CHARGING_JNDZ = '100202' # 郑州劲能电子/墨小智(是低版本,部分命令不支持)
  116. # Const.DEVICE_TYPE_CODE_CHARGING_DLY = '100203' # 多力源
  117. # Const.DEVICE_TYPE_CODE_CHARGING_ZHUXING = '100204' # 助行电子
  118. Const.DEVICE_TYPE_CODE_CHARGING_ZIXIA = '100205' # 子夏科技/助行电子/电川协议
  119. Const.DEVICE_TYPE_CODE_CHARGING_JIUHEN = '100206' # 山东墨小智科技/久恒
  120. Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ = '101206' # JNDZ 功率计费版本
  121. Const.DEVICE_TYPE_CODE_CHARGING_HD = '1002061' # 和动 刷卡协议修改版 --> 刷卡流程 0x10 -- 0x2D
  122. Const.DEVICE_TYPE_CODE_CHARGING_JH_TOUBI = '1002062' # 久恒投币设置保险丝版本(投币可以设置3种投币时间)
  123. Const.DEVICE_TYPE_CODE_CHARGING_SERVICECHARGEMODEL = '1002063' # 现网兼容, 特制服务费计费版本
  124. Const.DEVICE_TYPE_CODE_CHARGING_MOXIAOZHI2 = '100207' # 山东墨小智科技2
  125. Const.DEVICE_TYPE_CODE_CHARGING_AIYAXING = '100208' # 艾亚新
  126. Const.DEVICE_TYPE_CODE_CHARGING_ZHONGCHUANG = '100209' # 徐州中创
  127. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN = '100210' # 电川新版本协议
  128. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_HIGH = "1002101" # 电川的高版本 支持按度计费的
  129. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_SERVICECHARGE = "102210" # 电川协议永源支持服务费版本
  130. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT = "103210" # 电川协议 服务器功率计费版本
  131. Const.DEVICE_TYPE_CODE_CHARGING_MOXIAOZHI3 = '100211' # 墨小智V3
  132. Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO = '100212' # 海鸟
  133. Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_SINGLE = '1002121' # 海鸟单路
  134. Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_DOUBLE = '1002122' # 海鸟双路
  135. Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_NEW = '1002123' # 海鸟新十路
  136. Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_SINGLE_NEW = '1012121' # 海鸟新单路
  137. Const.DEVICE_TYPE_CODE_CHARGING_ZHIYAN = '100214' # 智衍
  138. Const.DEVICE_TYPE_CODE_CHARGING_HONGZHUO = '100215' # 鸿卓
  139. Const.DEVICE_TYPE_CODE_CHARGING_LANGXIN = '100216' # 朗鑫
  140. Const.DEVICE_TYPE_CODE_CHARGING_LANGXIN4 = '1002161' # 朗鑫4路
  141. Const.DEVICE_TYPE_CODE_CHANGING_LANGXIN20 = '1002162' # 朗鑫20路
  142. Const.DEVICE_TYPE_CODE_CHANGING_CXJZ = '100217' # 长兴聚展
  143. # Const.DEVICE_TYPE_CODE_CHANGING_CXJZ_SMOKE = '1002171' # 长兴聚展烟感版本。逐步被101271代替
  144. Const.DEVICE_TYPE_CODE_CHANGING_CXJZ_SMOKE = '101217' # 长兴聚展烟感版本
  145. Const.DEVICE_TYPE_CODE_CHANGING_DELIXI = '100218' # 德力西
  146. Const.DEVICE_TYPE_CODE_CHANGING_XUEYING = '100219' # 雪影
  147. Const.DEVICE_TYPE_CODE_CHANGING_YUZE = '100220' # 宇泽(基于电川协议, 老协议)
  148. Const.DEVICE_TYPE_CODE_CHANGING_AIYAXIN5 = '100221' # 艾亚欣5档功率(基于电川协议, 支持5挡)
  149. Const.DEVICE_TYPE_CODE_CHANGING_ANXIN = '100222' # 安心
  150. Const.DEVICE_TYPE_CODE_CHANGING_JINZE = '100223' # 金泽
  151. Const.DEVICE_TYPE_CODE_CHANGING_JIUHENG_BAOXIANSHI = '100224' # 久恒保险丝旧版本
  152. Const.DEVICE_TYPE_CODE_CHANGING_YUZE5 = '100225' # 宇泽5档功率(基于电川协议, 支持5挡)
  153. # Const.DEVICE_TYPE_CODE_CHANGING_ZHIXIA11 = '100226' # 端口从11开始计算的电川板子
  154. Const.DEVICE_TYPE_CODE_CHANGING_HANGXIN = '100227' # 航鑫
  155. Const.DEVICE_TYPE_CODE_CHANGING_HANGXIN_HIGN = "1002271" # 航鑫(汉尔云充版本)
  156. # Const.DEVICE_TYPE_CODE_CHANGING_DCALERT = '100228' # 电川温度告警
  157. Const.DEVICE_TYPE_CODE_CHANGING_XUZHOU = '100229' # 旭州电子
  158. Const.DEVICE_TYPE_CODE_CHARGING_AQKJ = '100230' # 安骑换电柜子
  159. Const.DEVICE_TYPE_CODE_CHARGING_AQKJ_NEW = '1002301' # 安骑换电柜子 新版
  160. Const.DEVICE_TYPE_CODE_CHARGING_SIJIANG = '100213' # 四江/三江/徽四江
  161. Const.DEVICE_TYPE_CODE_CHARGING_SIJIANG4 = '1002131' # 四江4路
  162. Const.DEVICE_TYPE_CODE_CHANGING_SIJIANG20 = '100231' # 四江20路
  163. # Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUAN = '100232' # 电川整合
  164. Const.DEVICE_TYPE_CODE_CHANGING_GUANGFA = '100233' # 光法#主要是支持退费直接到支付宝和微信,不是直接退金币
  165. # Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUAN2 = '100234' # 电川新版本,支持烟感、温感、电压报警灯
  166. Const.DEVICE_TYPE_CODE_CHANGING_DEKANG = '100235' # 得康
  167. Const.DEVICE_TYPE_CODE_CHANGING_BAOJIA = '100236' # 宝佳,和劲能电子的协议比较像,但是有所不同
  168. Const.DEVICE_TYPE_CODE_CHANGING_YUEWANGTONG = '100237' # 清远粤网通
  169. # Const.DEVICE_TYPE_CODE_CHANGING_JIUHENG_HOURFEE = '100238' # 久恒的板子,按小时计费
  170. Const.DEVICE_TYPE_CODE_CHANGING_WEIFULE = '100239' # 微弗智通的板子
  171. # Const.DEVICE_TYPE_CODE_CHANGING_NANJIGUANG = '100240' # 里歌新能源和苏州南极光合作的充电桩
  172. Const.DEVICE_TYPE_CODE_CHANGING_SHENGOU = '100241' # 郑州盛欧充电插座
  173. Const.DEVICE_TYPE_CODE_CHANGING_CY4 = '100242' # 郑州昌原4代机
  174. Const.DEVICE_TYPE_CODE_CHANGING_HAINIAOV2 = '100243' # 海鸟V2
  175. # Const.DEVICE_TYPE_CODE_CHANGING_HAINIAOV2 = '100245' # 劲能SCK主板 + 电川刷卡板
  176. Const.DEVICE_TYPE_CODE_CHANGING_QL = '100246' # 强隆10路机
  177. Const.DEVICE_TYPE_CODE_CHANGING_AOQIANG = '100247' # 奥强充电板
  178. Const.DEVICE_TYPE_CODE_CHANGING_YUNCHONG = '100248' # 云充充电板
  179. Const.DEVICE_TYPE_CODE_CHANGING_WEIFULE2 = '100249' # 晨马修改的特殊版本基于微付乐100239
  180. Const.DEVICE_TYPE_CODE_CHANGING_CY_POWER = '100250' # 昌原4路大功率机型
  181. Const.DEVICE_TYPE_CODE_CHARGE_DIANCHUAN_NEW = '100252' # 电川协议新版本
  182. Const.DEVICE_TYPE_CODE_CHANGING_WEIFULE_TIME = '100251' # 基于微付乐版本的只支持按时间计费
  183. Const.DEVICE_TYPE_CODE_CHARGE_ZHONGSHAN = '100255' # 中山绿智
  184. Const.DEVICE_TYPE_CODE_CHARGE_ZHONGSHAN_BILLASSERVICE = '101255' # 中山绿智支持服务费模式
  185. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU = '100256' # 小科豆
  186. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_SERVICEFEE = '101256' # 小科豆服务费
  187. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY = '102256' # 小科豆
  188. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_MAXTOTALPOWER = '1002561' # 小科豆兼容最大总功率
  189. Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR = '100257' # 微付乐汽车充电桩
  190. Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR_JFPG = '101257' # 微付乐汽车充电桩 支持尖峰平谷,定时心跳上报充电数据
  191. Const.DEVICE_TYPE_CODE_CHARGE_DOUBLE_SERIAL_JH = "100258" # 久恒老协议双串口
  192. Const.DEVICE_TYPE_CODE_CHARGING_HD_PREPAID_OR_POSTPAID = "100259" # 和动 新主板
  193. Const.DEVICE_TYPE_CODE_CHARGING_CHAOCHEN = "100260" # 超辰
  194. Const.DEVICE_TYPE_CODE_CHARGING_BL_GATEWAY = "100261" # 柏来插座 网关
  195. Const.DEVICE_TYPE_CODE_CHARGING_BL_NODE = "100262" # 柏来插座 子节点
  196. Const.DEVICE_TYPE_CODE_CHARGING_DC_GATEWAY = "100263" # 电川插座 网关
  197. Const.DEVICE_TYPE_CODE_CHARGING_DC_NODE = "100264" # 电川插座 子节点
  198. Const.DEVICE_TYPE_CODE_CHARGING_CHANGYUAN_FIVE = "100267" # 昌源5代十路充电桩
  199. Const.DEVICE_TYPE_CODE_CHARGING_CHANGYUAN_FIVE_ONLINECARD = "102267" # 昌源5代十路充电桩在线卡
  200. Const.DEVICE_TYPE_CODE_CHARGING_CHANGYUAN_SIX = "1002671" # 昌原6代十路充电桩
  201. Const.DEVICE_TYPE_CODE_CHARGING_JINENENG_POWER = "100268" # 劲能充电桩 功率计费
  202. Const.DEVICE_TYPE_CODE_CHANGING_SOCKET = '100269' # 微付乐插座
  203. Const.DEVICE_TYPE_CODE_WEIFULE_MINI = '100270' # 微付乐融合mini板
  204. Const.DEVICE_TYPE_CODE_HZFL = '100271' # 富联科技
  205. Const.DEVICE_TYPE_CODE_GAOBORUI = '100272' # 苏州高博锐电川
  206. Const.DEVICE_TYPE_CODE_WEIFULE_TOUCH_PAD = '100273' # 微付乐按键触控板
  207. Const.DEVICE_TYPE_CODE_AOQIANG_CHAZUO_GATEWAY = '100274' # 奥强插座 网关
  208. Const.DEVICE_TYPE_CODE_AOQIANG_CHAZUO_NODE = '100275' # 奥强插座 节点
  209. Const.DEVICE_TYPE_CODE_GAOBORUI_SECOND = '100276' # 高博锐自己板子
  210. Const.DEVICE_TYPE_CODE_CHARGING_BL_GATEWAYPLUG = "100277" # 柏来网关插座
  211. Const.DEVICE_TYPE_CODE_ZHANGRUNYIHE = '100278' # 苏州中润易和智能科技有限公司 协议和100210一样 支持5挡
  212. Const.DEVICE_TYPE_CODE_CHARGING_WXLZ = "100279" # 重庆无线绿洲充电桩
  213. Const.DEVICE_TYPE_CODE_WEIFULE_ANJIAN = "100280" # 一体板按键版本
  214. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY = "101280" # 分体板(策略计费) 同100280 友能流程
  215. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC = "102280" # 分体板(策略计费) 默认流程(常规套餐预付费,无临时套餐)
  216. Const.DEVICE_TYPE_CODE_KE_HANG = "100281"
  217. Const.DEVICE_TYPE_CODE_KE_HANG_POLICY = "101281"
  218. Const.DEVICE_TYPE_CODE_WEIFULE_MINI_POLICY = "101270" # 纯扫码(策略计费) 同100270
  219. Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY = "101249" # 一体板(策略计费) 同100249
  220. Const.DEVICE_TYPE_CODE_WEIFULE_TOUCH_PAD_POLICY = "101273" # 一体板(策略计费) 同100273
  221. Const.DEVICE_TYPE_CODE_SUZHOU_BEISIYUN = "100286" # 苏州贝斯云
  222. Const.DEVICE_TYPE_CODE_CM_CHAZUO_GATEWAY = "100287"
  223. Const.DEVICE_TYPE_CODE_CM_CHAZUO_NODE = "100288"
  224. Const.DEVICE_TYPE_CODE_CHANGING_YUZE_DIANCHUAN = '100289' # 宇泽5档功率(基于新电川协议, 支持5挡)
  225. Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUAN_RONGHE = '100290' # 电川4G融合板
  226. Const.DEVICE_TYPE_CODE_CHANGING_BL_TEN = '100291' # 柏来10路充电桩
  227. Const.DEVICE_TYPE_CODE_CHANGING_BL_TWELVE = '100292' # 柏来12路充电桩
  228. Const.DEVICE_TYPE_CODE_FENGSHUO = '100293' # 丰硕
  229. # 洗衣机 10X300-10X399
  230. Const.DEVICE_TYPE_CODE_WASHER_BASE = '100300' # 洗衣机基础CODE
  231. Const.DEVICE_TYPE_CODE_WASHER_CW = '100300' # 创维洗衣机
  232. Const.DEVICE_TYPE_CODE_WASHER_SIMAIER = '100302' # 家伟(思迈尔协议)
  233. Const.DEVICE_TYPE_CODE_WASHER_TS = '100303' # 投石洗衣机
  234. Const.DEVICE_TYPE_CODE_WASHER_CY_HJ_1 = "101305" # 彩亿主板 与100305 时间范围不同 时间范围由华杰老板提供
  235. Const.DEVICE_TYPE_CODE_WASHER_CY_HJ = "100305" # 彩亿主板 华洁需求
  236. Const.DEVICE_TYPE_CODE_WASHER_CY_HS = "1003051" # 彩亿主板 宁波海尚需求
  237. Const.DEVICE_TYPE_CODE_WASHER_CY_HS_YUCHUAN = "1003052" # 彩亿主板 对接一卡通 要求刷卡
  238. Const.DEVICE_TYPE_CODE_WASHER_CY_HS_HONGGAN = "1003053" # 彩亿主板 烘干机
  239. Const.DEVICE_TYPE_CODE_WASHCAR_HAIER = "100307" # 海尔洗衣机
  240. Const.DEVICE_TYPE_CODE_WASHER = '100308' # 串口洗衣机 100106=>100308
  241. Const.DEVICE_TYPE_CODE_HUITENG = '100309' # 汇腾洗衣机 100109=>100309
  242. Const.DEVICE_TYPE_CODE_YUCHUAN_SHUAKA = "100310" # 宇川一卡通 100001=>100310
  243. Const.DEVICE_TYPE_CODE_WEIFULE_WASHER = '100327' # 微付乐洗衣机海尔一体板 100127=>100327
  244. Const.DEVICE_TYPE_CODE_WEIFULE_WANNENGBAN_WASHER = '100328' # 微付乐洗衣机万能一体板 100128=>100328
  245. # 洗车机 10X500-10X599
  246. Const.DEVICE_TYPE_CODE_WASHCAR_LSHB = '100500' # 沥森环保洗车机
  247. Const.DEVICE_TYPE_CODE_WASHCAR_LSHB_NOTIFY = '101500' # 沥森环保 通过设备类型控制是否进行刷卡推送
  248. Const.DEVICE_TYPE_CODE_WASHCAR_LANGUANG = '100501' # 蓝光国际(大球)洗车机/饮水机
  249. # 汽车桩 10X600-10X699 16X000-16X999
  250. Const.DEVICE_TYPE_CODE_CAR_CHARGING_CY = '100600' # 昌源汽车充电桩
  251. Const.DEVICE_TYPE_CODE_CAR_CHARGING_CY_ZZHX = '1006001' # 郑州和喜充电桩 与100600的区别主要是 离线卡录入的问题
  252. Const.DEVICE_TYPE_CODE_CAR_CHARGING_YONGXIN = '100601' # 用芯汽车充电桩
  253. Const.DEVICE_TYPE_CODE_CAR_CHARGING_ZHONGCHUANG = '100602' # 中创汽车充电桩
  254. Const.DEVICE_TYPE_CODE_CAR_CHARGING_LIGE = '100603' # 里歌汽车充电桩
  255. Const.DEVICE_TYPE_CODE_CAR_CHARGING_JN = "100604" # 劲能电子汽车充电桩
  256. Const.DEVICE_TYPE_CODE_CAR_CHARGING_CY_V2 = "100605" # 昌原汽车充电桩V2升级版
  257. # Const.DEVICE_TYPE_CODE_CAR_CHARGING = "100606" # 汽车直流快充. 自带网络,后续没有对接
  258. Const.DEVICE_TYPE_CODE_CAR_CHARGING_KY = "100607" # 坤元汽车桩
  259. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB = "100608" # 微付乐一体汽车桩双枪
  260. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB_JFPG = "101608" # 微付乐一体汽车桩双枪,支持尖峰平谷,以及定时上报充电数据
  261. Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUANCARCHARGING = "100610" # 电川汽车充电桩(用芯提供)
  262. Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE = "100611" # 金雀汽车充电桩
  263. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW = "100612" # 微付乐大功率(21kw/32A)单枪
  264. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW_JFPG = "101612" # 微付乐大功率(21kw/32A)单枪,支持尖峰平谷,以及定时上报充电数据
  265. Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_JFPG = "100614" #家用汽车充电桩 支持尖峰平谷
  266. Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_DOUB_JFPG = "100615" #家用汽车充电桩 支持尖峰平谷
  267. # 支付开关 10X700-10X799
  268. Const.DEVICE_TYPE_CODE_PEDICURE2 = '100708' # 足疗机第二种版本,通过控制足疗机开关 100108=>100708
  269. Const.DEVICE_TYPE_CODE_TIMESWITCH1 = '100710' # 支付时间开关,纯粹的12V的开关,输入输出都是12V,按摩坐垫,星步的足疗机、空气净化器,荣桥国际 100110=>100710
  270. Const.DEVICE_TYPE_CODE_TIMESWITCH2 = '100711' # 支付时间开关,纯粹的开关,输入12V,输出2.3V。姚的足疗机(低开)港德,史晓鹏 100111=>100711
  271. Const.DEVICE_TYPE_CODE_TIMESWITCH3 = '100712' # 支付时间开关,纯粹的开关,输入12V,输出3V。足疗机(高开) 上海卓摩 心之宝 100112=>100712
  272. Const.DEVICE_TYPE_CODE_TIMESWITCH4 = '100713' # 支付时间开关,10ms交替周期,5ms上下。星步, 100113=>100713
  273. Const.DEVICE_TYPE_CODE_TIMESWITCH5 = '100714' # 支付开关空气净化器. 同Const.DEVICE_TYPE_CODE_TIMESWITCH1 = '100110' 100114=>100714
  274. Const.DEVICE_TYPE_CODE_TIMESWITCH6 = '100715' # 艾维斯 100115=>100715
  275. Const.DEVICE_TYPE_CODE_TIMESWITCH7 = '100716' # 锁 100116=>100716
  276. Const.DEVICE_TYPE_CODE_TIMESWITCH8 = '100717' # 制氧机. 同Const.DEVICE_TYPE_CODE_TIMESWITCH2 100117=>100717
  277. # 充电柜 10X800-10X899
  278. Const.DEVICE_TYPE_CODE_CABINET = '100803' # 粤万通的充电柜
  279. Const.DEVICE_TYPE_CODE_CABINET_NEW = '1008031' # 粤万通的充电柜(开关门自控制版本)
  280. # 串口足疗机 10X900-10X999
  281. Const.DEVICE_TYPE_CODE_PEDICURE_SERIAL1 = '100900' # 串口足疗机. 和奥创协议类似. 姚总
  282. Const.DEVICE_TYPE_CODE_PEDICURE = '100901' # 奥创足疗机 100104 => 100901
  283. Const.DEVICE_TYPE_CODE_PEDICURE_HONGPAI = '100902' # 鸿派、博峰足疗机 100119 => 100902
  284. Const.DEVICE_TYPE_CODE_BINNUO = '100903' # 宾诺 100122=>100903
  285. # 格子柜 11X000-11X099
  286. Const.DEVICE_TYPE_CODE_CELL = '110000' # 格子柜 100800=>110000
  287. Const.DEVICE_TYPE_CODE_CELL1 = '111000' # 格子柜(反序) 100801=>111000
  288. Const.DEVICE_TYPE_CODE_GEZIGUI_485 = "110005" # 储物格子柜_485 100805=>110005
  289. # 吹风机类型 11X100-11X199
  290. Const.DEVICE_TYPE_CODE_WEIFULE_BLOWER = '110100' # 微付乐吹风机一体板 100129=>110100
  291. Const.DEVICE_TYPE_CODE_DIANCHUAN_BLOWER = '110101' # 电川吹风机 101300=>110101
  292. Const.DEVICE_TYPE_CODE_CHUIFENGJI = '110102' # 艾亚欣吹风机 100126=>110102
  293. # 游艺相关的设备类型 11X200-11X299
  294. Const.DEVICE_TYPE_CODE_WAWAJI = "110200" # 娃娃机 101200=>110200
  295. Const.DEVICE_TYPE_CODE_WAWAJI_WUMAHANG = "110201" # 娃娃机 武马行串口 101201=>110201
  296. Const.DEVICE_TYPE_CODE_WAWAJI_3706 = "110202" # 娃娃机 3706 101202=>110202
  297. Const.DEVICE_TYPE_CODE_WAWAJI_HUAYING = "110203" # 娃娃机 华盈 101203=>110203
  298. Const.DEVICE_TYPE_CODE_DUIBIJI = "110204" # 兑币机 101204=>110204
  299. Const.DEVICE_TYPE_CODE_DAQIANG = '110205' # 打枪设备 101205=>110205
  300. Const.DEVICE_TYPE_CODE_DUOBAO = "110206" # 多宝摇摇车. 已经废弃. 100107=>110206
  301. # 纸巾机类型 11X300-11X399
  302. Const.DEVICE_TYPE_CODE_TISSUE = '110300' # 纸巾机 (荣事达) 100105=>110300
  303. # 水控 11X400-11X499
  304. Const.DEVICE_TYPE_CODE_DEPARTMENT_SHOWER = '110400' # 公寓-淋浴器 100700=>110400
  305. # 汗蒸机 11X500-11X599
  306. Const.DEVICE_TYPE_CODE_HANZHEN = '110500' # 汗蒸机 100802=>110500
  307. # 门禁类型 11X600-11X699
  308. Const.DEVICE_TYPE_CODE_JH_GATE = "110601" # 久恒道闸门禁 101001=>110601
  309. Const.DEVICE_TYPE_CODE_ONE_CARD = "110602" # 一卡通道闸门禁 101002=>110602
  310. Const.DEVICE_TYPE_CODE_HP_GATE = "101000" # 霍珀道闸门禁 TODO: 101000=>110603
  311. # 11X700-11X799 饮水机,
  312. Const.DEVICE_TYPE_CODE_WATER_DISPENSER = '110700' # 韩总加水机 100130=>110700
  313. # 充值机 11X800-11X899
  314. Const.DEVICE_TYPE_CODE_AHZT = "110804" # 安徽智同的 100804=>110804
  315. Const.DEVICE_TYPE_CODE_JHIC = "110806" # 久恒IC卡充值机 100806=>110806
  316. # 饮水机等 11X900-11X999
  317. Const.DEVICE_TYPE_CODE_WATER_CONTROLLER = '110901' # 文智嘉盛控水器1 100131=>110901
  318. Const.DEVICE_TYPE_CODE_HESHUICHONGDIAN = '110903' # 喝水充电 100123=>110903
  319. Const.DEVICE_TYPE_CODE_HESHUI = '110904' # 打水 100124=>110904
  320. Const.DEVICE_TYPE_CODE_CHONGDIAN = '110905' # 充电 100125=>110905
  321. # 换电柜 13X000-13X099
  322. Const.DEVICE_TYPE_CODE_YWT_HUANDIANGUI = '130001' # ywt换电柜
  323. # 蓝牙设备 20X000-20X199
  324. Const.DEVICE_TYPE_CODE_B_PULSE = '200001' # 蓝牙脉冲
  325. Const.DEVICE_TYPE_CODE_B_CHARGING = '200002' # 蓝牙充电开关
  326. Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_GPIO = '200003' # 蓝牙软开关, GPIO电平驱动
  327. Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_IR = '200005' # 蓝牙软开关, 红外遥控驱动
  328. Const.DEVICE_TYPE_CODE_B_QUICK_CHARGE_TWO = '200006' # 蓝牙两口快充脉冲
  329. Const.DEVICE_TYPE_CODE_B_CLOTHES_TREE = '200008' # 干衣架
  330. # 支持云快充TCP方式的协议的连接
  331. Const.DEVICE_TYPE_CODE_CAR_NENGPAI = '300001' # 云快充协议
  332. # 辅助串口驱动分配500000-500199
  333. Const.DEVICE_TYPE_CODE_AUX_START = '500000'
  334. Const.DEVICE_TYPE_CODE_AUX_CARD_JH = '500001'
  335. Const.DEVICE_TYPE_CODE_AUX_CARD_MY1 = '500002'
  336. Const.DEVICE_TYPE_CODE_AUX_CARD_MY2 = '500003'
  337. Const.DEVICE_TYPE_CODE_AUX_CARD_JH_DOUBLE = '500005'
  338. Const.DEVICE_TYPE_CODE_AUX_CARD_HX_DOUBLE = '5000051'
  339. Const.DEVICE_TYPE_CODE_AUX_HEISHUI = '500123'
  340. Const.DEVICE_TYPE_CODE_AUX_END = '500199'
  341. # 铁塔 90X100-90X1XX
  342. Const.DEVICE_TYPE_CODE_SHANDONG_TIETA = '900100'
  343. Const.DEVICE_TYPE_CODE_HENAN_TIETA = '900101'
  344. # 测试类型 99X900-99X9XX, 999999保留
  345. Const.BT_DEVICE_TYPE_CODE_MAP = {
  346. 1: Const.DEVICE_TYPE_CODE_B_PULSE,
  347. 2: Const.DEVICE_TYPE_CODE_B_CHARGING,
  348. 3: Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_GPIO,
  349. 5: Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_IR,
  350. 6: Const.DEVICE_TYPE_CODE_B_QUICK_CHARGE_TWO,
  351. 8: Const.DEVICE_TYPE_CODE_B_CLOTHES_TREE
  352. }
  353. Const.PEDICURE_BOX_DZGZ = '10010401' # 堵转故障
  354. Const.PEDICURE_BOX_BGW = '10010402' # 按摩脚霍尔传感器不归位
  355. Const.PEDICURE_BOX_KJGZ = '10010403' # 付款没有开机故障
  356. Const.TISSUE_BOX_QZ = '10010501' # 缺纸告警
  357. Const.TISSUE_BOX_DJGZ = '10010502' # 电机故障
  358. Const.WASHER_BOX_DJ = '10010601' # 待机
  359. Const.WASHER_BOX_YZ = '10010602' # 运转
  360. Const.WASHER_BOX_ZT = '10010603' # 暂停
  361. Const.WASHER_BOX_GZ = '10010604' # 故障
  362. Const.WASHER_BOX_CSSZ = '10010605' # 参数设置
  363. Const.WASHER_STATUS_CODE_DESC = {
  364. Const.WASHER_BOX_DJ: u'待机',
  365. Const.WASHER_BOX_YZ: u'运转',
  366. Const.WASHER_BOX_ZT: u'暂停',
  367. Const.WASHER_BOX_GZ: u'故障',
  368. Const.WASHER_BOX_CSSZ: u'参数设置'
  369. }
  370. Const.WASHER_BOX_ZJ = '10010606' # 自检
  371. Const.WASHER_BOX_DTS = '10010607' # 单脱水
  372. Const.WASHER_BOX_KS = '10010608' # 快速
  373. Const.WASHER_BOX_BZ = '10010609' # 标准
  374. Const.WASHER_BOX_DW = '10010610' # 大物
  375. Const.WASHER_BOX_JRKS = '10010611' # 加热快速
  376. Const.WASHER_BOX_JRBZ = '10010612' # 加热标准
  377. Const.WASHER_BOX_JRDW = '10010613' # 加热大物
  378. Const.WASHER_BOX_SET_TQJ = u'桶清洁'
  379. Const.WASHER_BOX_SET_DTS = u'单脱水'
  380. Const.WASHER_BOX_SET_KSX = u'快速洗'
  381. Const.WASHER_BOX_SET_BZX = u'标准洗'
  382. Const.WASHER_BOX_SET_DWX = u'大物洗'
  383. Const.WASHER_BOX_SET_JRKS = u'加热快速洗'
  384. Const.WASHER_BOX_SET_JRBZ = u'加热标准洗'
  385. Const.WASHER_BOX_SET_JRDW = u'加热大物洗'
  386. Const.WASHER_PROGRAM_CODE_DESC = {
  387. Const.WASHER_BOX_ZJ: u'自检',
  388. Const.WASHER_BOX_DTS: u'单脱水',
  389. Const.WASHER_BOX_KS: u'快速',
  390. Const.WASHER_BOX_BZ: u'标准',
  391. Const.WASHER_BOX_DW: u'大物',
  392. Const.WASHER_BOX_JRKS: u'加热快速',
  393. Const.WASHER_BOX_JRBZ: u'加热标准',
  394. Const.WASHER_BOX_JRDW: u'加热大物',
  395. }
  396. Const.WASHER_BOX_YY = '10010614' # 预约
  397. Const.WASHER_BOX_JP = '10010615' # 浸泡
  398. Const.WASHER_BOX_XD = '10010616' # 洗涤
  399. Const.WASHER_BOX_PX = '10010617' # 漂洗
  400. Const.WASHER_BOX_TS = '10010618' # 脱水
  401. Const.WASHER_BOX_ZJS = '10010619' # 主进水
  402. Const.WASHER_PROCESS_CODE_DESC = {
  403. Const.WASHER_BOX_YY: u'预约',
  404. Const.WASHER_BOX_JP: u'浸泡',
  405. Const.WASHER_BOX_XD: u'洗涤',
  406. Const.WASHER_BOX_PX: u'漂洗',
  407. Const.WASHER_BOX_TS: u'脱水',
  408. Const.WASHER_BOX_ZJS: u'主进水'
  409. }
  410. Const.WASHER_BOX_JSCS = '10010620' # 进水超时
  411. Const.WASHER_BOX_PSCS = '10010621' # 排水超时
  412. Const.WASHER_BOX_TSKG = '10010622' # 脱水开盖
  413. Const.WASHER_BOX_TSBPH = '10010623' # 脱水不平衡
  414. Const.WASHER_BOX_TXGZ = '10010624' # 通讯故障
  415. Const.WASHER_BOX_TONTSKG = '10010625' # 童锁开盖
  416. Const.WASHER_BOX_YS = '10010626' # 溢水
  417. Const.WASHER_BOX_SWCGQGZ = '10010627' # 水位传感器故障
  418. Const.WASHER_BOX_SJCCGZ = '10010628' # 数据存储故障
  419. Const.WASHER_BOX_WDCGQGZ = '10010629' # 温度传感器故障
  420. Const.WASHER_BOX_WSJRGZ = '10010630' # 无水加热故障
  421. Const.WASHER_BOX_DJDZGZ = '10010631' # 电机堵转故障
  422. Const.WASHER_BOX_IPMWDGG = '10010632' # IPM温度过高故障
  423. Const.WASHER_BOX_DJGL = '10010633' # 电机过流故障
  424. Const.WASHER_BOX_DJQX = '10010634' # 电机缺相故障
  425. Const.WASHER_BOX_QDQGZ = '10010635' # 驱动器故障
  426. Const.WASHER_BOX_YEBENG = '10010636' # 液泵
  427. Const.CHARGING_KYXN_DCGZ = '10010637' # 电池故障
  428. Const.CHARGING_KYXN_CDZGZ = '10010638' # 充电桩故障
  429. Const.CHARGING_KYXN_QTGZ = '10010639' # 其他故障
  430. Const.EVENT_NORMAL = 1
  431. Const.EVENT_MAJOR = 2
  432. Const.EVENT_CRITICAL = 3
  433. # 霍珀虚拟卡续卡时间
  434. Const.VCARD_NEED_NOTIFY_TIME = 3
  435. Const.ERROR_START_TIMES = 3
  436. # 极验
  437. Const.GEE_TEST_ID = 'cece0b9be07d6a367c28d32cd11e43c8'
  438. Const.GEE_TEST_KEY = '90c898f262a2fdda854ed59629297930'
  439. # 阿里滑块
  440. Const.ALI_SLIDER_ACCESSKEY_ID = 'LTAI4FdCWfeML7Xqv3Eqw4V4'
  441. Const.ALI_SLIDER_ACCESSKEY_SECRET = 'xCW9nves10T3sEPfKSKXaALs7b3P19'
  442. Const.DATE_FMT = '%Y-%m-%d'
  443. Const.DATETIME_FMT = '%Y-%m-%d %H:%M:%S'
  444. # 提现费率常量
  445. Const.PLATFORM_DEFAULT_WITHDRAW_FEE_RATIO = Permillage("6")
  446. Const.MIN_DEALER_WITHDRAW_FEE_RATIO = Permillage("0")
  447. Const.MAX_DEALER_WITHDRAW_FEE_RATIO = Permillage("1000")
  448. # 流量卡年费常量
  449. Const.PLATFORM_DEFAULT_TRAFFIC_COST = RMB('20.00')
  450. Const.EVENT_CODE_DESC = {
  451. Const.PEDICURE_BOX_DZGZ: u'堵转故障',
  452. Const.PEDICURE_BOX_BGW: u'按摩脚霍尔传感器不归位',
  453. Const.PEDICURE_BOX_KJGZ: u'付款没有开机故障',
  454. Const.TISSUE_BOX_QZ: u'缺纸告警',
  455. Const.TISSUE_BOX_DJGZ: u'电机故障',
  456. Const.WASHER_BOX_JSCS: u'进水超时',
  457. Const.WASHER_BOX_PSCS: u'排水超时',
  458. Const.WASHER_BOX_TSKG: u'脱水开盖u',
  459. Const.WASHER_BOX_TSBPH: u'脱水不平衡',
  460. Const.WASHER_BOX_TXGZ: u'通讯故障',
  461. Const.WASHER_BOX_TONTSKG: u'童锁开盖',
  462. Const.WASHER_BOX_YS: u'溢水',
  463. Const.WASHER_BOX_SWCGQGZ: u'水位传感器故障',
  464. Const.WASHER_BOX_SJCCGZ: u'数据存储故障',
  465. Const.WASHER_BOX_WDCGQGZ: u'温度传感器故障',
  466. Const.WASHER_BOX_WSJRGZ: u'无水加热故障',
  467. Const.WASHER_BOX_DJDZGZ: u'电机堵转故障',
  468. Const.WASHER_BOX_IPMWDGG: u'IPM温度过高故障',
  469. Const.WASHER_BOX_DJGL: u'电机过流故障',
  470. Const.WASHER_BOX_DJQX: u'电机缺相故障',
  471. Const.WASHER_BOX_QDQGZ: u'驱动器故障',
  472. Const.CHARGING_KYXN_DCGZ: u'电池故障',
  473. Const.CHARGING_KYXN_CDZGZ: u'充电桩故障',
  474. Const.CHARGING_KYXN_QTGZ: u'其他故障'
  475. }
  476. Const.USER_SEX = enum(UNKNOWN = 0, MALE = 1, FEMALE = 2, ALL = -1)
  477. Const.ADDRESS_TYPE = [
  478. {
  479. 'value': 'school',
  480. 'label': u'学校'
  481. },
  482. {
  483. 'value': 'apartment',
  484. 'label': u'公寓'
  485. },
  486. {
  487. 'value': 'workshop',
  488. 'label': u'工厂'
  489. },
  490. {
  491. 'value': 'others',
  492. 'label': u'其他'
  493. },
  494. {
  495. 'value': 'mall',
  496. 'label': u'商场'
  497. },
  498. {
  499. 'value': 'hospital',
  500. 'label': u'医院'
  501. },
  502. {
  503. 'value': 'cafe',
  504. 'label': u'咖啡厅'
  505. },
  506. {
  507. 'value': 'KTV',
  508. 'label': u'ktv',
  509. },
  510. {
  511. 'value': 'hotel',
  512. 'label': u'宾馆'
  513. },
  514. {
  515. 'value': 'bar',
  516. 'label': u'酒吧'
  517. },
  518. {
  519. 'value': 'parking_lot',
  520. 'label': u'停车场'
  521. },
  522. {
  523. 'value': 'square',
  524. 'label': u'广场'
  525. },
  526. {
  527. 'value': 'bath_center',
  528. 'label': u'洗浴中心'
  529. }
  530. ]
  531. Const.CELERY_TASK_RESULT_TRANSLATION = {
  532. 'PENDING': u'处理中',
  533. 'STARTED': u'已开启',
  534. 'RETRY': u'等待重试',
  535. 'FAILURE': u'失败',
  536. 'SUCCESS': u'成功',
  537. 'UNKNOWN': u'未知'
  538. }
  539. # : 默认的消息推送模版
  540. Const.DEFAULT_WECHAT_USER_PUSH_MESSAGE_ID_MAP = {
  541. 'feedback_process': '',
  542. 'service_complete': '',
  543. 'refund_coins': '',
  544. 'device_fault': '',
  545. 'less_balance': '',
  546. 'consume_notify': '',
  547. 'service_expired': '',
  548. 'device_warnning': ''
  549. }
  550. Const.TRANSLATION = {
  551. 'feedback_process': u'故障处理完成提醒',
  552. 'feedback': u"用户报障",
  553. 'daily_income': u"次日收益推送",
  554. 'new_payment_order': u"每笔订单推送",
  555. 'abnormal_device_offline': u"设备离线通知",
  556. 'device_fault': u'设备故障通知',
  557. 'device_warnning': u'告警通知',
  558. 'online_notify': u'设备上线通知',
  559. 'refund_coins': u'设备退币',
  560. 'service_complete': u'服务完成',
  561. 'consume_notify': u'消费提醒',
  562. 'less_balance': u'余额不足',
  563. 'service_expired': u'服务到期提醒',
  564. 'sim_expire_notify': u'设备到期提醒',
  565. 'system_alarm_notify': u'系统告警通知',
  566. 'exchange_order_notify': u'售后服务通知',
  567. 'service_start': u'设备启动通知',
  568. 'dev_start': u'启动通知',
  569. }
  570. class APP_TYPE(StrEnum):
  571. WECHAT_AUTH = 'wechat_auth'
  572. WECHAT_OLD_AUTH = 'wechat_old_auth'
  573. WECHAT_USER_MANAGER = 'wechat_user_manager'
  574. WECHAT_USER_SUBSCRIBE_MANAGER = 'wechat_user_subscribe_manager'
  575. WECHAT_DEALER_SUBSCRIBE_MANAGER = 'wechat_dealer_subscribe_manager'
  576. WECHAT_USER_MESSAGER = 'wechat_user_messager'
  577. WECHAT_MANAGER = 'wechat_manager'
  578. WECHAT_WITHDRAW = 'wechat_withdraw'
  579. ALIPAY_AUTH = 'alipay_auth'
  580. JD_AUTH = 'jd_auth'
  581. WECHAT_MINI_AUTH = 'wechat_mini_auth'
  582. # 支付APP按照平台来对应.
  583. # 微信平台可能对应微信支付,扫呗支付,京东支付
  584. # 支付宝平台可能对应支付宝,扫呗,京东聚合
  585. # 京东平台可能对应京东聚合,京东支付
  586. # MY_WECHAT_ENV_PAY = 'my_wechat_env_pay'
  587. WECHAT_ENV_PAY = 'wechat_env_pay'
  588. WECHAT_MINI_ENV_PAY = 'wechat_mini_env_pay'
  589. ALIPAY_ENV_PAY = 'alipay_env_pay'
  590. JD_ENV_PAY = 'jd_env_pay'
  591. PLATFORM_ENV_PAY = 'platform_common_env_pay'
  592. SWAP_ENV_PAY = 'swap_env_pay'
  593. # 100,000,000
  594. Const.A_HUNDRED_MILLION = 100000000
  595. Const.DEFAULT_PRODUCT_NAME = u'微付乐'
  596. Const.TRANS_DICT = {
  597. 'leftTime': {'name': '剩余时间', 'unit': '分钟', 'sortIndex': 3},
  598. 'nickname': {'name': '昵称', 'sortIndex': 1},
  599. 'duration': {'name': '使用时间', 'unit': '分钟', 'sortIndex': 3},
  600. 'coins': {'name': '支付', 'unit': '金币', 'sortIndex': 3},
  601. 'voltage': {'name': '电压', 'unit': '伏', 'sortIndex': 3},
  602. 'current': {'name': '电流', 'unit': '安', 'sortIndex': 3},
  603. 'inputElec': {'name': '充入电量', 'unit': '度', 'sortIndex': 3},
  604. 'statusDesc': {'name': '当前状态', 'sortIndex': 3},
  605. }
  606. Const.SIM_CARD_FORBIDDEN_DAY = 20 # 平台统一SIM卡到期日
  607. class GPS_TYPE(Values):
  608. gcj02 = ValueConstant('gcj02') # 国内特色 火星坐标系 高德,腾讯地图
  609. bd09 = ValueConstant('bd09') # 百度
  610. WGS84 = ValueConstant('WGS84') # 大部分国际使用
  611. class MQTT_GROUP(object):
  612. event = ''
  613. api = ''
  614. chuangwei = ''
  615. # event = '$share/group-event/'
  616. # api = '$share/group-api/'
  617. # chuangwei = '$share/group-chuangwei/'
  618. class Unit(StrEnum):
  619. # : Misc
  620. PACK = 'pack'
  621. # : Volume
  622. L = 'l' # liter
  623. ML = 'ml' # milliliter
  624. CC = 'cm^3' # cubic centimeter
  625. CUBIC_METER = 'm^3' # cubic meter
  626. # : Time
  627. SECOND = 'second'
  628. HOUR = 'hour'
  629. MINUTE = 'minute'
  630. # : Temperature
  631. DEGREE = 'degree' # degree Celsius
  632. # : Power
  633. WATT = 'watt'
  634. KILOWATT = 'kilowatt'
  635. # : Energy
  636. KJ = 'kilojoule'
  637. J = 'joule'
  638. MJ = 'megajoule' # 1000 * KJ
  639. kW_h = 'kilowatt hour' # kW·h 1 kW·h = 3.6 MJ
  640. # : Length
  641. M = 'meter'
  642. KM = 'kilometer'
  643. # : Area
  644. SQUARE_METER = 'square meter'
  645. SQUARE_KILO_METER = 'square kilometer'
  646. # : Force
  647. N = 'newton'
  648. class REPORT_CHANNEL(StrEnum):
  649. PAY = 'pay'
  650. AD = 'ad'
  651. COIN = 'coin'
  652. COUNT = 'count'
  653. PAY_COIN = 'pay_coin'
  654. COUNT_COIN = 'count_coin'
  655. class DEV_TMPL(StrEnum):
  656. PAY = 'd_{devNo}_{nowDate}_pay'
  657. AD = 'd_{devNo}_{nowDate}_ad'
  658. COIN = 'd_{devNo}_{nowDate}_coin'
  659. COUNT = 'd_{devNo}_{nowDate}_count'
  660. PAY_COIN = 'd_{devNo}_{nowDate}_pay_coin'
  661. COUNT_COIN = 'd_{devNo}_{nowDate}_count_coin'
  662. class GROUP_TMPL(StrEnum):
  663. PAY = 'g_{groupId}_{nowDate}_pay'
  664. AD = 'g_{groupId}_{nowDate}_ad'
  665. COIN = 'g_{groupId}_{nowDate}_coin'
  666. COUNT = 'g_{groupId}_{nowDate}_count'
  667. PAY_COIN = 'g_{groupId}_{nowDate}_pay_coin'
  668. COUNT_COIN = 'g_{groupId}_{nowDate}_count_coin'
  669. class DEALER_TMPL(StrEnum):
  670. PAY = 'o_{ownerId}_{nowDate}_pay'
  671. AD = 'o_{ownerId}_{nowDate}_ad'
  672. COIN = 'o_{ownerId}_{nowDate}_coin'
  673. COUNT = 'o_{ownerId}_{nowDate}_count'
  674. PAY_COIN = 'o_{ownerId}_{nowDate}_pay_coin'
  675. COUNT_COIN = 'o_{ownerId}_{nowDate}_count_coin'
  676. class AGENT_TMPL(StrEnum):
  677. AD = 'a_{agentId}_{nowDate}_ad'
  678. class MANAGER_TMPL(StrEnum):
  679. AD = 'm_{managerId}_{nowDate}_ad'
  680. class RechargeRecordVia(StrEnum):
  681. Balance = 'recharge'
  682. StartDevice = "startDevice"
  683. Card = 'chargeCard'
  684. VirtualCard = 'chargeVirtualCard'
  685. SendCoin = 'sendcoin'
  686. Refund = 'refund'
  687. Cash = 'cash' # 现金直接支付订单 / 一般用于后付费
  688. MonthlyPackage = "monthlyPackage"
  689. Insurance = "insurance" # 支付保险的钱
  690. Redpack = "redpack" # 红包抵扣
  691. Mix = "mix" # 混合单 (保险+充电)(红包抵扣+充电)
  692. RefundCash = "refundCash" # 退款订单
  693. Swap = 'swap' # 互联互通
  694. AutoSim = 'autoSim'
  695. RECHARGE_RECORD_VIA_TRANSLATION = {
  696. RechargeRecordVia.Balance: u'充值余额',
  697. RechargeRecordVia.Card: u'实体卡充值',
  698. RechargeRecordVia.VirtualCard: u'虚拟卡券充值',
  699. RechargeRecordVia.SendCoin: u'商家派币',
  700. RechargeRecordVia.Refund: u'商家退币',
  701. RechargeRecordVia.Cash: u"后付费支付",
  702. RechargeRecordVia.MonthlyPackage: u"包月卡充值",
  703. RechargeRecordVia.Insurance: u"保险",
  704. RechargeRecordVia.Redpack: u"红包抵扣",
  705. RechargeRecordVia.RefundCash: u'退费',
  706. RechargeRecordVia.Swap: u'互联互通',
  707. RechargeRecordVia.AutoSim: u"流量卡自动充值"
  708. }
  709. class CONSUMETYPE(IterConstant):
  710. MOBILE = 'mobile' # 扫码付费
  711. MOBILE_VCARD = 'mobile_vcard' # 虚拟卡抵扣
  712. COIN = 'coin' # 投币
  713. CARD = 'card' # 刷卡
  714. SERVER_BILLING = 'serverBilling' # 后台计费
  715. POWER_BILLING = 'powerBilling' # 功率计费
  716. POSTPAID = 'postpaid' # 后支付
  717. BILL_AS_SERVICE = 'billAsService' # 电量 + 服务费模式
  718. BILL_AS_SERVICE_POSTPAID = 'billAsServicePostpaid' # 电量 + 服务费模式 后支付
  719. class USER_RECHARGE_TYPE(IterConstant):
  720. RECHARGE = RechargeRecordVia.Balance
  721. START_DEVICE = RechargeRecordVia.StartDevice
  722. RECHARGE_CARD = RechargeRecordVia.Card
  723. RECHARGE_VIRTUAL_CARD = RechargeRecordVia.VirtualCard
  724. RECHARGE_CASH = RechargeRecordVia.Cash
  725. RECHARGE_MONTHLY_PACKAGE = RechargeRecordVia.MonthlyPackage
  726. RECHARGE_INSURANCE = RechargeRecordVia.Insurance
  727. RECHARGE_REDPACK = RechargeRecordVia.Redpack
  728. RECHARGE_MIX = RechargeRecordVia.Mix
  729. REFUND_CASH = RechargeRecordVia.RefundCash
  730. SWAP = RechargeRecordVia.Swap
  731. class DEALER_CONSUMPTION_AGG_KIND(IterConstant):
  732. # : 消费聚合类别
  733. COIN = 'coin'
  734. PACKAGE = 'package' # 纸巾包
  735. REFUNDED_COINS = 'refundedMoney' # 退费金额(金币)
  736. REFUNDED_CASH = 'refundedCash' # 退费金额(元)
  737. ELEC = 'elec' # 消耗电量
  738. SPEND_MONEY = 'spendMoney' # 实际花费
  739. CONSUME_CARD = 'consumeCard' # 刷卡消费额
  740. REFUND_CARD = 'refundCard' # 刷卡退费额
  741. DURATION = 'duration' # 充电时间
  742. ITEM = 'item' # 一件商品
  743. ELECFEE = 'elecFee' # 电费成本
  744. TOTAL_COUNT = 'totalCount' # 线下投币
  745. SERVICEFEE = 'serviceFee' # 服务费
  746. SERVICE_CHARGE = 'serviceCharge'
  747. ELEC_CHARGE = 'elecCharge'
  748. DEALER_CONSUMPTION_AGG_KIND_TRANSLATION = \
  749. {
  750. DEALER_CONSUMPTION_AGG_KIND.COIN: u'消费金币',
  751. DEALER_CONSUMPTION_AGG_KIND.PACKAGE: u'消费纸巾包',
  752. DEALER_CONSUMPTION_AGG_KIND.REFUNDED_COINS: u'退费金币',
  753. DEALER_CONSUMPTION_AGG_KIND.REFUNDED_CASH: u'退费金额',
  754. DEALER_CONSUMPTION_AGG_KIND.ELEC: u'消耗电量',
  755. DEALER_CONSUMPTION_AGG_KIND.SPEND_MONEY: u'实际花费',
  756. DEALER_CONSUMPTION_AGG_KIND.CONSUME_CARD: u'刷卡消费额',
  757. DEALER_CONSUMPTION_AGG_KIND.REFUND_CARD: u'卡退费',
  758. DEALER_CONSUMPTION_AGG_KIND.DURATION: u'使用时长',
  759. DEALER_CONSUMPTION_AGG_KIND.ITEM: u'销售货物',
  760. DEALER_CONSUMPTION_AGG_KIND.ELECFEE: u'电费',
  761. DEALER_CONSUMPTION_AGG_KIND.TOTAL_COUNT: u'线下投币次数',
  762. DEALER_CONSUMPTION_AGG_KIND.SERVICEFEE: u'服务费',
  763. DEALER_CONSUMPTION_AGG_KIND.SERVICE_CHARGE: u'服务费',
  764. DEALER_CONSUMPTION_AGG_KIND.ELEC_CHARGE: u'电费'
  765. }
  766. DEALER_CONSUMPTION_AGG_KIND_UNIT = \
  767. {
  768. DEALER_CONSUMPTION_AGG_KIND.COIN: u'个',
  769. DEALER_CONSUMPTION_AGG_KIND.PACKAGE: u'包',
  770. DEALER_CONSUMPTION_AGG_KIND.REFUNDED_COINS: u'金币',
  771. DEALER_CONSUMPTION_AGG_KIND.REFUNDED_CASH: u'元',
  772. DEALER_CONSUMPTION_AGG_KIND.ELEC: u'度',
  773. DEALER_CONSUMPTION_AGG_KIND.SPEND_MONEY: u'元',
  774. DEALER_CONSUMPTION_AGG_KIND.CONSUME_CARD: u'元',
  775. DEALER_CONSUMPTION_AGG_KIND.DURATION: u'分钟',
  776. DEALER_CONSUMPTION_AGG_KIND.ITEM: u'件',
  777. DEALER_CONSUMPTION_AGG_KIND.ELECFEE: u'元',
  778. DEALER_CONSUMPTION_AGG_KIND.TOTAL_COUNT: u'次',
  779. DEALER_CONSUMPTION_AGG_KIND.REFUND_CARD: u'元',
  780. DEALER_CONSUMPTION_AGG_KIND.SERVICEFEE: u'元',
  781. DEALER_CONSUMPTION_AGG_KIND.SERVICE_CHARGE: u'元',
  782. DEALER_CONSUMPTION_AGG_KIND.ELEC_CHARGE: u'元',
  783. }
  784. DEALER_CONSUMPTION_AGG_KIND_UNIT_PRECISION = \
  785. {
  786. DEALER_CONSUMPTION_AGG_KIND.COIN: '0.01',
  787. DEALER_CONSUMPTION_AGG_KIND.PACKAGE: '1',
  788. DEALER_CONSUMPTION_AGG_KIND.REFUNDED_COINS: '0.01',
  789. DEALER_CONSUMPTION_AGG_KIND.REFUNDED_CASH: '0.01',
  790. DEALER_CONSUMPTION_AGG_KIND.ELEC: '0.0001',
  791. DEALER_CONSUMPTION_AGG_KIND.SPEND_MONEY: '0.01',
  792. DEALER_CONSUMPTION_AGG_KIND.CONSUME_CARD: '0.01',
  793. DEALER_CONSUMPTION_AGG_KIND.DURATION: '0.01',
  794. DEALER_CONSUMPTION_AGG_KIND.ITEM: '1',
  795. DEALER_CONSUMPTION_AGG_KIND.ELECFEE: '0.01',
  796. DEALER_CONSUMPTION_AGG_KIND.TOTAL_COUNT: '1',
  797. DEALER_CONSUMPTION_AGG_KIND.SERVICEFEE: '0.01',
  798. DEALER_CONSUMPTION_AGG_KIND.SERVICE_CHARGE: '0.01',
  799. DEALER_CONSUMPTION_AGG_KIND.ELEC_CHARGE: '0.01',
  800. }
  801. MONTH_DATE_KEY = '{year:d}-{month:02d}'
  802. GLOSSARY_TRANSLATION = {
  803. 'elec': u'电量',
  804. 'reason': u'结束方式描述',
  805. 'chargeIndex': u'充电端口',
  806. 'actualNeedTime': u'动态功率计算',
  807. 'refundedMoney': u'退款',
  808. 'spendMoney': u'实际花费',
  809. 'feeType': u'收费标准',
  810. 'duration': u'充电时间',
  811. 'finishedTime': u'订单结束时间',
  812. 'leftTime': u'充电剩余时间',
  813. 'leftElec': u'剩余电量',
  814. 'power': u'功率',
  815. 'maxPower': u'最大功率',
  816. 'preBalance': u'充值前余额',
  817. 'batteryType': u'电池类型',
  818. 'coin': u'付款数额',
  819. 'needTime': u'订购时间',
  820. 'voltage': u'电池电压',
  821. 'leftMoney': u'剩余金额',
  822. 'cardBalance': u"刷卡后余额",
  823. "cardNo": u"支付卡号",
  824. "oldBatteryImei": u"放入电池",
  825. "newBatteryImei": u"取出电池",
  826. "chargeIndex1": u"放入端口号",
  827. "chargeIndex2": u"取出端口号",
  828. "pw": u"开锁密码",
  829. "stayTime": u"占位时间",
  830. "chargeType": u"收费模式",
  831. "port": u"使用端口",
  832. "exec_time": u"订单执行时间",
  833. "rechargeCode": u"续充动态码",
  834. "CODE": u"CODE",
  835. "masterOrderNo": u"关联主单号",
  836. "subOrderNo": u"关联子单号",
  837. "needElec": u"订购电量",
  838. "elecFee": u"电费",
  839. "elecCharge": u"电量费用",
  840. "serviceCharge": u"服务费用",
  841. "start": u"启动时间",
  842. "end": u"结束时间"
  843. }
  844. # 提现相关常量定义
  845. # 经销商相关常量定义
  846. REQUEST_ID_HEADER = 'HTTP_X_REQUEST_ID'
  847. class START_DEVICE_STATUS(IterConstant):
  848. RUNNING = 'running'
  849. PAYING = 'paying'
  850. FINISHED = 'finished'
  851. TIMEOUT = 'timeout'
  852. FAILURE = 'failure'
  853. Const.DEFAULT_TIME_FIELD_NAME = 'dateTimeAdded'
  854. class PARTITION_ROLE(IterConstant):
  855. """ 分账者的角色 """
  856. OWNER = 'owner' # 被分账人
  857. AGENT = 'agent' # 代理商
  858. PARTNER = 'partner' # 合伙人
  859. PLATFORM = 'platform' # 平台
  860. class PARTITION_TYPE(IterConstant):
  861. """
  862. 抽成的方式 一种是定额 另一种是百分比
  863. """
  864. PERCENT = "1"
  865. FIXED = "2"
  866. class DEVICE_INCOME_STRATEGY(IntEnum):
  867. AGENT_FIRST_LEDGER = 1
  868. PARTNER_FIRST_LEDGER = 2
  869. class INSURANCE_CATEGORY(StrEnum):
  870. CHARGE = "charge" # 充电险
  871. STOLEN = "stolen" # 偷盗险
  872. CYCLE = "cycle" # 骑行险
  873. class AdType(IterConstant):
  874. INIT = 'init'
  875. PAY_AFTER = 'payAfter'
  876. BANNER = 'banner'
  877. TOPSHOW = 'topshow'
  878. class AdSpace(IterConstant):
  879. PAYAFTER = 'payAfter'
  880. TOPSHOW = 'topShow'
  881. BANNER = 'banner'
  882. class AdScriptType(IterConstant):
  883. INLINE = 'inline'
  884. REMOTE = 'remote'
  885. class MANAGER_EXPORT_EXCEL_TYPE(IterConstant):
  886. RECHARGE = 'charge'
  887. RECHARGE_CARD = 'chargeCard'
  888. class WECHAT_RESULT(IterConstant):
  889. SUCCESS = 'SUCCESS'
  890. FAIL = 'FAIL'
  891. class WECHAT_WITHDRAW_STATUS(IterConstant):
  892. UNKNOWN = 'UNKNOWN'
  893. PROCESSING = 'PROCESSING'
  894. SUCCESS = 'SUCCESS'
  895. FAILED = 'FAILED'
  896. BANK_FAIL = 'BANK_FAIL'
  897. Const.CMD_CMD_TRANSLATE_DICT = {
  898. '201': u'查询设备信息',
  899. '202': u'设置设备参数',
  900. '203': u'支付指令',
  901. '206': u'停止设备',
  902. '207': u'设备主动上报心跳数据',
  903. '210': u'操作设备指令',
  904. '211': u'设备必须回复服务器的指令',
  905. '199': u'回应设备消息',
  906. '220': u'回应设备消息,但是不需要设备响应',
  907. '100': u'设备上报事件',
  908. '110': u'设备上报告警',
  909. '120': u'设备上报故障',
  910. '130': u'设备上报功率',
  911. '301': u'水控设备上报查询卡余额',
  912. '302': u'水控设备上报消费单数据',
  913. '303': u'水控设备充值',
  914. '306': u'下发参数设置',
  915. }
  916. Const.CMD_PARAS_TRANSLATE_DICT = {
  917. 'IMEI': u'设备编号',
  918. 'imsi': u'SIM卡的imsi',
  919. 'iccid': u'SIM卡的iccid',
  920. 'hw_ver': u'硬件版本',
  921. 'soft_ver': u'软件基础版本',
  922. 'driverCode': u'驱动类型编码',
  923. 'driverVersion': u'驱动版本',
  924. 'coin': u'投币统计',
  925. 'signal': u'信号值',
  926. 'duration': u'使用时长',
  927. }
  928. Const.CMD_DATA_TRANSLATE_DICT = {
  929. 'status': u'状态',
  930. 'port': u'端口',
  931. 'reason': u'原因',
  932. 'leftTime': u'剩余时间',
  933. 'elec': u'电流/电量',
  934. 'FaultCode': u'故障编码',
  935. 'cardNo': u'卡号',
  936. 'preFee': u'预付款',
  937. 'oper': u'操作编码',
  938. 'needTime': u'订购时间',
  939. 'consumeType': u'消费方式',
  940. 'coins': u'金币',
  941. 'coin': u'投币数',
  942. 'money': u'钱',
  943. 'mobilePrice': u'移动支付使用价格',
  944. 'mobileTime': u'移动支付使用时间',
  945. 'mobileOnsale': u'移动支付使用折扣',
  946. 'icPrice': u'IC卡使用价格',
  947. 'icTime': u'IC卡使用时间',
  948. 'coinPrice': u'投币使用价格',
  949. 'coinTime': u'投币使用时间',
  950. 'orderNo': u'订单号',
  951. 'orderSequance': u'订单序号',
  952. 'duration': u'使用时长',
  953. 'balance': u'余额',
  954. 'finishedTime': u'结束时间',
  955. }
  956. Const.ZHEJIANG_PRODUCER_CODE = 88888888
  957. Const.ZHEJIANG_EVENT_TYPE_DICT = {'100202': {'03': '502', '0B': '502'},
  958. '100204': {'03': '502', '0B': '502'},
  959. '100210': {'03': '502', '0B': '502'},
  960. '100216': {'04': '502', '05': '502'},
  961. '100228': {'11': '301', '12': '302'},
  962. '100205': {'08': '501', '03': '599'},
  963. '100206': {'0B': '599'}
  964. }
  965. Const.YUHUAN_PORT_OVERLOAD = '97'
  966. Const.YUHUAN_PORT_OVERLOAD_RECOVERY = '98'
  967. Const.YUHUAN_OFFLINE = '99'
  968. Const.YUHUAN_ONLINE = '100'
  969. Const.YUHUAN_EVENT_TYPE_DICT = {'100205': {
  970. '01': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电器故障,暂时无法充电,待恢复'},
  971. '02': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'设备功率过载,待恢复'},
  972. '03': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电桩电源故障,待恢复'},
  973. '97': {'ftype': 'G44B3', 'fisok': '0', 'fhandlmemo': u'充电端口功率过载,系统会自动断电保护'},
  974. '98': {'ftype': 'G44BC', 'fisok': '1', 'fhandlmemo': u'充电端口功率过载,系统自动结束充电'},
  975. '99': {'ftype': 'G4436', 'fisok': '0', 'fhandlmemo': u'设备掉线,待检查恢复'},
  976. '100': {'ftype': 'G4437', 'fisok': '1', 'fhandlmemo': u'设备恢复上线'}
  977. },
  978. '100210': {
  979. '01': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电器故障,暂时无法充电,待恢复'},
  980. '02': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'设备功率过载,待恢复'},
  981. '03': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电桩电源故障,待恢复'},
  982. '97': {'ftype': 'G44B3', 'fisok': '0', 'fhandlmemo': u'充电端口功率过载,系统会自动断电保护'},
  983. '98': {'ftype': 'G44BC', 'fisok': '1', 'fhandlmemo': u'充电端口功率过载,系统自动结束充电'},
  984. '99': {'ftype': 'G4436', 'fisok': '0', 'fhandlmemo': u'设备掉线,待检查恢复'},
  985. '100': {'ftype': 'G4437', 'fisok': '1', 'fhandlmemo': u'设备恢复上线'}
  986. },
  987. }
  988. # sim卡只允许主账号充值
  989. Const.MAIN_MENU_LIST = {
  990. 'device_reg': True, 'device_management': True, 'business_stats': True, 'order_query': True,
  991. 'remote_upper': True, 'payoff_recharge': True, 'user_management': True, 'marketing': True,
  992. 'payoff_activity': True, 'card_management': True, 'sim_card': True, 'user_feedback': True,
  993. 'support_alarm': False, 'user_identify': False, 'stock_management': False,
  994. 'batteryManager': False, 'templateManager': False, 'apiManager': False,
  995. 'disableAdManager': False,'interconnection':False
  996. }
  997. Const.HOME_PAGE_DATA_LIST = {
  998. 'today_income': True, 'today_pay_income': True, 'today_ad_income': False, 'offline_coins': False
  999. }
  1000. Const.ORDER_VERSION = '200'
  1001. Const.TOPIC_WITH_SID_VERSION = '150'
  1002. Const.MAINTENANCE_DAYS = 365 * 3
  1003. Const.KUAIDI_API_APPCODE = '8296fcd952e34713ba91fbdceb13e915'
  1004. Const.DEFAULT_ADDR = u'湖北武汉光谷物联港1号楼A座1912-14'
  1005. Const.DEFAULT_NAME = u'陈先生'
  1006. Const.DEFAULT_TELNO = u'18963981712'
  1007. Const.TESTER_DEFAULT_FEATURES = ['binding_device', 'binding_detection', 'manual_test_device', 'test_bluetooth_device',
  1008. 'configuration_driver', 'unbind_device', 'manual_test_serial_device', 'test_history',
  1009. 'testing_report']
  1010. class FEEDBACK_TYPE(IterConstant):
  1011. FAULT = 'fault'
  1012. REFUND = 'refund'
  1013. UPPER = 'upper'
  1014. class ErrorCode(IterConstant):
  1015. SUCCESS = 0
  1016. # 设备操作错误码 -1 - 100
  1017. DEVICE_SUCCESS = 0
  1018. DEVICE_CONN_FAIL = -1 # 消息发送无响应
  1019. BOARD_UART_TIMEOUT = 1 # 串口发送无响应, 设备忙
  1020. BOARD_FAULT = 2 # 和主板通讯未建立
  1021. DEVICE_ORDER_IS_RUNNING = 3 # 订单正在运行
  1022. PARAMETER_ERROR_TO_BOX = 5 # 和模块通讯参数无效
  1023. IC_RECHARGE_FAIL = 6 # IC充值失败
  1024. START_DEVICE_FAILURE = 7 # 启动设备失败
  1025. NOT_CONNECT = 8 # 充电器未接上导致设备失败(和动插座协议不完善 只有下发了启动指令才能知道到底是否连接 这个应该是数据业务错误 没办法先加到这里)
  1026. CHARGE_MODE_ERR = 93 # 充电模式错误
  1027. PULSE_IS_CLOSE = 94 # 脉冲功能未启动
  1028. PORT_IS_USED = 95 # 端口已经被占用
  1029. DEVICE_SYSTEM_ERROR = 96 # 模块系统错误. 代码有问题,能够侦测到的错误
  1030. CMD_IS_DOING = 97 # 命令正在处理
  1031. ORDER_IS_EXIST = 98 # 订单已经存在
  1032. ORDER_IS_FULL = 99 # 模块未确认订单达到最大数
  1033. PORT_NO_LOAD = 100 # 充电端口空载
  1034. TEST_BUSY = 101 # 正在测试串口
  1035. NO_SUPPORT = 102 # 功能不支持
  1036. # device 50000-50999
  1037. DEVICE_CONN_CHECK_FAIL = 50000
  1038. DEVICE_START_CONN_FAIL = 50001
  1039. DEVICE_START_FAILURE = 50002
  1040. DEVICE_START_PACKAGE_ERROR = 50003
  1041. # system
  1042. EXCEPTION = 101
  1043. AUTH_CODE_IS_NULL = 102
  1044. USER_STATE_IS_NOT_VALID = 103
  1045. AUTH_ERROR = 104
  1046. DEVICE_NO_AUTH = 105
  1047. PARAMETER_ERROR = 106
  1048. LOGIN_USER_IS_NULL = 107
  1049. MONI_AUTH_IS_NULL = 108
  1050. MONI_APP_IS_NULL = 109
  1051. LOGIN_VERIFY = 401
  1052. # user 1000-1999
  1053. NEED_SIM_RECHARGE = 1000
  1054. TOO_BIG_RECHARGE = 1002
  1055. CARD_NEED_BIND_GROUP = 1003
  1056. CARD_FORBID_CHARGE_GROUP = 1004
  1057. CARD_BIND_BY_SELF = 1005
  1058. CARD_BIND_BY_OTHER = 1006
  1059. # 订单相关 1101 - 1199
  1060. ORDER_CREATED = 1101
  1061. ORDER_RUNNING = 1102
  1062. ORDER_NEED_PAY = 1103
  1063. ORDER_PAYING = 1104
  1064. # dealer 2000-2999
  1065. # 自动提现设置 提现到微信但是没有绑定微信
  1066. AUTO_WITHDRAW_WECHAT_NOT_BIND = 2001
  1067. # 40000 - 40100
  1068. API_AUTH_ERROR = 40000
  1069. API_AUTH_DEVICE_ERROR = 40001
  1070. API_PARAMETER_ERROR = 40002
  1071. API_EXCEPTION = 40003
  1072. API_NO_DEVICE = 40004
  1073. API_ERROR_DEVICE_TYPE = 40005
  1074. class DeviceErrorCodeDesc(object):
  1075. ErrorCodeDescMap = {
  1076. ErrorCode.DEVICE_SUCCESS: u'成功',
  1077. ErrorCode.DEVICE_CONN_FAIL: u'当前设备信号弱无响应,启动失败。本次操作没有扣除您的任何金币,您可以稍后重试或者试试附近其他设备。',
  1078. ErrorCode.DEVICE_CONN_CHECK_FAIL: u'设备信号弱无法连接,请稍后扫码重试或者试试附近其他设备。',
  1079. ErrorCode.DEVICE_START_CONN_FAIL: u'当前设备信号弱无响应,启动失败。本次操作没有扣除您的任何金币,您可以稍后重试或者试试附近其他设备。',
  1080. ErrorCode.DEVICE_START_FAILURE: u'启动设备失败({})。本次操作没有扣除您的任何金币,您可以稍后重试或者试试附近其他设备。',
  1081. ErrorCode.BOARD_UART_TIMEOUT: u'设备正在忙,无响应,您的金币还在,重试不需要重新付款,请试试其他线路,或者请稍后再试哦',
  1082. ErrorCode.BOARD_FAULT: u'当前设备故障,建议您试试旁边其他设备',
  1083. ErrorCode.DEVICE_ORDER_IS_RUNNING: u'订单正在运行',
  1084. ErrorCode.PARAMETER_ERROR_TO_BOX: u'和模块通讯参数无效',
  1085. ErrorCode.IC_RECHARGE_FAIL: u'IC充值失败',
  1086. ErrorCode.START_DEVICE_FAILURE: u'启动设备失败',
  1087. ErrorCode.ORDER_IS_EXIST: u'订单已经存在',
  1088. ErrorCode.PORT_NO_LOAD: u'充电端口空载',
  1089. ErrorCode.ORDER_IS_FULL: u'未确认订单达到最大数',
  1090. ErrorCode.PORT_IS_USED: u'端口已经占用',
  1091. ErrorCode.DEVICE_START_PACKAGE_ERROR: u'启动套餐参数错误'
  1092. }
  1093. @classmethod
  1094. def get(cls, error_code):
  1095. return cls.ErrorCodeDescMap.get(error_code, u'设备操作失败({})'.format(error_code))
  1096. class AD_TYPE(IterConstant):
  1097. PRE_HOOK = 'preHook'
  1098. INIT = 'init'
  1099. PAY_AFTER = 'payAfter'
  1100. class RECHARGE_CARD_TYPE(StrEnum):
  1101. ID = 'ID'
  1102. IC = 'IC'
  1103. class FAULT_RECORD_STATUS(StrEnum):
  1104. IGNORED = 'ignored'
  1105. HANDLED = 'handled'
  1106. INIT = 'init'
  1107. RECOVERED = 'recovered'
  1108. class FAULT_LEVEL(StrEnum):
  1109. FATAL = 'fatal'
  1110. CRITICAL = 'critical'
  1111. NORMAL = 'normal'
  1112. class TYPE_ADJUST_USER_VIRTUAL_CARD(StrEnum):
  1113. DELETE = "delete"
  1114. ADJUST_DAYS = "adjustTime"
  1115. ADJUST_QUOTA = "adjustQuota"
  1116. class FAULT_CODE(StrEnum):
  1117. OFFLINE = 'OFFLINE'
  1118. OFFLINE_RECOVERY = 'OFFLINE_RECOVERY'
  1119. OVER_VOLTAGE = 'OVER_VOLTAGE'
  1120. OVER_TEMPERATURE = 'OVER_TEMPERATURE'
  1121. SMOKE = 'SMOKE'
  1122. FIRE_ALARM = "FIRE_ALARM"
  1123. MCU_REBOOT = 'MCU_REBOOT' # MCU重启
  1124. RELAY_FAULT = 'RELAY_FAULT' # 继电器故障
  1125. COUNTER_FAULT = 'COUNTER_FAULT' # 计量芯片故障
  1126. DEV_OVERLOAD = 'DEV_OVERLOAD' # 整机功率过载
  1127. COPY_CARD = 'COPY_CARD' # 复制卡告警
  1128. WAWAJI_WUMAHANG_NG = 'WAWAJI_WUMAHANG_NG'
  1129. class MYUSER_GATEWAY(IterConstant):
  1130. WECHAT = 'wechat'
  1131. ALIPAY = 'alipay'
  1132. WECHAT_MINI = 'wechat_mini'
  1133. class MYUSER_SPACE_DIMENSION(IterConstant):
  1134. DEALER = 'dealer'
  1135. AGENT = 'agent'
  1136. GROUP = 'group'
  1137. Const.MoniMenus = {
  1138. 'gerenzhongxin': '%2Fuser%2Findex.html%23%2Fuser%2Fme',
  1139. 'dangqianfuwu': '%2Fuser%2Findex.html%23%2Fuser%2FdeviceStatus',
  1140. 'changjianwenti': '%2Fuser%2Findex.html%23%2Fuser%2Fhelp',
  1141. 'baogaolaoban': '%2Fuser%2Findex.html%23%2Fuser%2FfeedbackList',
  1142. 'zhoubianshebei': '%2Fuser%2Findex.html%23%2Fuser%2Findex',
  1143. 'toushushouli': '%2Fuser%2Findex.html%23%2Fcomplaint%2Flist'
  1144. }
  1145. class AppPlatformType(IterConstant):
  1146. ALIPAY = 'alipay'
  1147. WECHAT = 'wechat'
  1148. PLATFORM = 'platform'
  1149. WITHDRAW = 'withdraw'
  1150. APP_PLATFORM_TYPE_TRANSLATION = {
  1151. AppPlatformType.ALIPAY: u'支付宝',
  1152. AppPlatformType.WECHAT: u'微信',
  1153. # AppPlatformType.JD: u'京东',
  1154. # AppPlatformType.WECHAT_MINI: u'微信小程序',
  1155. AppPlatformType.PLATFORM: u'平台',
  1156. # AppPlatformType.SWAP: u'互联互通'
  1157. }
  1158. class PollRecordDefine(object):
  1159. DELAY_BEFORE = 30 # 同步订单任务启动延迟时间(秒)
  1160. TASK_EXPIRES = 180 # 任务超时时间(秒)
  1161. TOTAL_ROUNDS = 12 # 同步轮数
  1162. WAIT_EACH_ROUND = 10 # 每轮同步等待时间(秒)
  1163. class SimStatus(StrEnum):
  1164. Updated = 'updated'
  1165. Charged = 'chargedUnupdated'
  1166. Illegal = 'illegal'
  1167. support_policy_weifule = [
  1168. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY,
  1169. Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY,
  1170. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC,
  1171. Const.DEVICE_TYPE_CODE_WEIFULE_MINI_POLICY,
  1172. ]
  1173. support_policy_device = [
  1174. Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ,
  1175. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT,
  1176. Const.DEVICE_TYPE_CODE_KE_HANG_POLICY,
  1177. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY,
  1178. ]
  1179. skip_package_params_verify_list = [
  1180. Const.DEVICE_TYPE_CODE_HP_GATE,
  1181. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU,
  1182. Const.DEVICE_TYPE_CODE_CHARGING_WXLZ,
  1183. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY,
  1184. Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY,
  1185. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC,
  1186. Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ,
  1187. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY,
  1188. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT,
  1189. Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE,
  1190. ]
  1191. # 跳过 套餐单位一致性 验证
  1192. skip_package_unit_verify_list = [
  1193. Const.DEVICE_TYPE_CODE_HESHUICHONGDIAN,
  1194. Const.DEVICE_TYPE_CODE_HESHUI,
  1195. Const.DEVICE_TYPE_CODE_CHONGDIAN, # 喝水充电的设备类型有不同单位的参数
  1196. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY,
  1197. Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY,
  1198. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC,
  1199. Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ,
  1200. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY,
  1201. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT,
  1202. Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE,
  1203. Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE,
  1204. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW,
  1205. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW_JFPG,
  1206. Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_JFPG,
  1207. Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_DOUB_JFPG,
  1208. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB,
  1209. Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB_JFPG,
  1210. Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR,
  1211. Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR_JFPG,
  1212. Const.DEVICE_TYPE_CODE_CAR_NENGPAI
  1213. ]
  1214. # 跳过 套餐用户获得保留小数点后两位 验证
  1215. skip_package_range_verify_list = [
  1216. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY,
  1217. Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY,
  1218. Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC,
  1219. Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ,
  1220. Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY,
  1221. Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT,
  1222. ]
  1223. # 通过经销商绑定的卡的初始OPENID
  1224. Const.DEFAULT_CARD_OPENID = "anonymous"
  1225. Const.QUERY_START_DATE = '2017-01-01'
  1226. Const.POWER_PRICE_RULES = [
  1227. {'min': 0, 'max': 200, 'price': 0.2},
  1228. {'min': 200, 'max': 300, 'price': 0.4},
  1229. {'min': 300, 'max': 400, 'price': 0.6},
  1230. {'min': 400, 'max': 500, 'price': 0.8}
  1231. ]
  1232. class ComplaintResponseTemplate(IterConstant):
  1233. COMMON_RESPONSE_CONTENT = u'您好,经核实您在 {}时在{}这台{}上支付一笔金额为 {}元的订单,订单编号为{}。目前已为您联系到这台自助设备的商家,请您拨打商家的电话{},反馈您遇到的设备问题。'
  1234. COMMON_RESPONSE_CONTENT_2 = u'平台已为您联系到这台自助设备的老板,请您拨打老板的电话{},反馈您遇到的设备问题。您付款的金额被设备老板收走了,请您联系设备老板进行处理。'
  1235. ERROR_RESPONSE_CONTENT = u'麻烦您联系一下平台客服13100704039或18271944902,反馈您遇到的支付问题,客服可以为您解决。'
  1236. REAL_PROBLEM_RESPONSE_CONTENT = u'建议您联系一下设备老板 {},反馈您遇到的售后问题。如果您联系不到老板,麻烦联系平台客服13100704039或18271944902解决您遇到的售后问题。'
  1237. REFUND_RESPONSE_CONTENT_1 = u'您好,经核实您启动的{}设备, 编号为{}。 该笔订单已经给您退币,时间为{}, 退币个数为{}个, 您下次使用设备的时候优先扣除金币, 不需要付款。(当前账户的余币数量在扫描设备二维码后的页面右上角可以看到)'
  1238. REFUND_RESPONSE_CONTENT_2 = u'您好,经核实您启动的{}设备, 编号为{}。 该笔订单已经给您退款,时间为{}, 退款金额为{}元, 请注意查收。'
  1239. REFUND_RESPONSE_CONTENT_3 = u'您好,经核实您启动的{}设备, 编号为{}。 启动设备失败! 该笔订单已经给您退还消费金币, 您下次使用设备的时候优先扣除金币, 不需要付款。(当前账户的余币数量在扫描设备二维码后的页面右上角可以看到)'
  1240. NO_RECHARGE_RECORD_CONTENT = u'您好,平台未查询到您投诉的订单号,麻烦您联系平台客服13100704039或18271944902,并提供一下您的订单截图谢谢。'
  1241. class MoniAppStatus(IntEnum):
  1242. ADDING = 1
  1243. FULL = 2
  1244. APP_OVER = 3
  1245. ADMIN_STOP = 4
  1246. DAY_FULL_STOP = 5
  1247. class OneCardGateAction(object):
  1248. ENTER = 1
  1249. OUT = 2
  1250. def choice(self):
  1251. return [self.ENTER, self.OUT]