# -*- coding: utf-8 -*- # !/usr/bin/env python """ 全局常量管理类,避免在程序中使用魔鬼数字。 常量定义规范: 1、常量之间保持一行间隔 2、属于app下的常量前缀为APP名称,否则为COMMON 3、同一个app下的常量放在一起,COMMON放在最后面 常量声明格式: '''常量声明示例''' Const.APP_CONSTANT_NAME = '这是示例' 常量引用方式: print Const.TEST_CONSTANT """ from constantly import Values, ValueConstant from enum import Enum from apilib.constants import _Constant from apilib.monetary import RMB, Permillage from apilib.systypes import enum, IntEnum, StrEnum, IterConstant Const = _Constant() Const.DEV_WORK_STATUS_IDLE = 0 Const.DEV_WORK_STATUS_WORKING = 1 Const.DEV_WORK_STATUS_FAULT = 2 Const.DEV_WORK_STATUS_FORBIDDEN = 3 Const.DEV_WORK_STATUS_PAUSE = 4 Const.DEV_WORK_STATUS_CONNECTED = 5 # 汽车桩使用,表示和车辆连接OK Const.DEV_WORK_STATUS_FINISHED = 6 # 汽车桩使用,表示充电完成 Const.DEV_WORK_STATUS_MAINTENANCE = 7 # 维护状态. 例如洗衣机正在消毒 Const.DEV_WORK_STATUS_APPOINTMENT = 8 # 预约状态 Const.DEV_WORK_STATUS_FAULT_OVERLOAD = 9 # 端口功率过载 Const.DEV_WORK_STATUS_OCCUPY = 10 Const.DEV_WORK_STATUS_ESTOP = 11 # 汽车充电桩急停状态 Const.DEV_WORK_STATUS_READY = 12 # 汽车充电桩急停状态 Const.DEV_WORK_STATUS_FAULT_RELAY_CONNECT = 13 # 继电器粘连故障 Const.DEV_CYCLE_DEFAULT = 600 class DeviceOnlineStatus(IterConstant): DEV_STATUS_OFFLINE = 0 DEV_STATUS_ONLINE = 1 Const.DEVICE_TOPIC_PREFIX = 'smart_box' Const.SERVER_TOPIC_PREFIX = 'manyi' Const.MQTT_QOS = 0 Const.MQTT_QOS1 = 1 Const.MQTT_RETRY_TIMES = 4 Const.MQTT_RETRY_INTERVAL = 15 class MQTT_TIMEOUT(IntEnum): START_DEVICE = 120 START_DEVICE_PER_ROUND = 30 CHECK_DEVICE_STATUS = 25 TEST = 15 SHORT = 20 MEDIUM = 25 NORMAL = 35 LONG = 55 LOGGER = 120 LONGEST = 180 Const.DEFAULT_DISCOUNT_RULE = {'10': 10.0, '20': 20.0, '50': 50.0, '100': 100.0} Const.ServiceState = Enum('ServiceState', ('Normal', 'Ban')) Const.FeedBackResult = enum(UNTREATED = 0, TREATED = 1, REJECTED = 2) Const.NEAR_BY_MAX_DISTANCE = 6000 Const.DEVICE_ONLINE_CHECK_INTERVAL = 3 * 9 * 60 * 1000 # 超过3次KEEP ALIVE时间 Const.DEVICE_ONLINE_CHECK_TIMES = 3 Const.I_AM_FAULT = 120 Const.I_AM_EVENT = 100 Const.MAX_PAY_LIMIT = 500 Const.NO_PORT = 9999 # command code class DeviceCmdCode(object): # 经典命令码 GET_DEVINFO = 201 SET_DEVINFO = 202 PAY_MONEY = 203 STOP_DEVICE = 206 OPERATE_DEV_SYNC = 210 PASSTHROUGH_OPERATE_DEV_SYNC = 211 OPERATE_DEV_NO_RESPONSE = 220 PASSTHROUGH_OPERATE_DEV_NO_RESPONSE = 221 # 命令确认 EVENT_ACK = 223 OPERATE_DEV_SERVER_ASYNC = 226 # 发送消息,消息结果依赖100的事件上报 PASSTHROUGH_OPERATE_DEV_SERVER_ASYNC = 227 # 发送消息,消息结果依赖100的事件上报 UART_LOOP_TEST = 228 # 串口环回测试命令 UART_SIMULATE_RECEIVE_DATA = 229 # 串口模拟发送主板响应 # 随机命令码范围 RANDOM_START_CODE = 230 RANDOM_END_CODE = 299 RESPONSE_QR_CODE_URL = 102 # 设备请求二维码地址返回给设备 Const.DEVICE_TYPE_CODE_PULSE_BEGIN = '100000' # 脉冲类型编码起始号 Const.DEVICE_TYPE_CODE_PULSE = '100000' # 通用脉冲 Const.DEVICE_TYPE_CODE_PULSE_WASHER = '100028' # 洗衣机 Const.DEVICE_TYPE_CODE_PULSE_CHARGER = '100029' # 充电桩 Const.DEVICE_TYPE_CODE_PULSE_BLOW_DRYER = '100030' # 洗手液机 Const.DEVICE_TYPE_CODE_PULSE_CAR_WASHER = '100031' # 洗车机 Const.DEVICE_TYPE_CODE_PULSE_DISPENSER = '100032' # 售货机 Const.DEVICE_TYPE_CODE_PULSE_TUMBLE_DRYER = '100033' # 烘干机 Const.DEVICE_TYPE_CODE_PULSE_XIXIEJI = '100033' # 洗鞋机 Const.DEVICE_TYPE_CODE_PULSE_BATHER = '100035' # 我要洗澡 Const.DEVICE_TYPE_CODE_PULSE_YAOYAOCHE = '100036' # 摇摇车 Const.DEVICE_TYPE_CODE_PULSE_BEERTENDER = '100037' # 啤酒机 Const.DEVICE_TYPE_CODE_PULSE_OTHER = '100050' # 其他 Const.DEVICE_TYPE_CODE_PULSE_WAWAJI = '100051' # 娃娃机 Const.DEVICE_TYPE_CODE_PULSE_SHUKOUSHUI = '100052' # 漱口水 Const.DEVICE_TYPE_CODE_PULSE_SHOUYEJI = '100053' # 售液机 Const.DEVICE_TYPE_CODE_PULSE_WEIGHER = '100100' # 体重计 Const.DEVICE_TYPE_CODE_PULSE_DRINKER = '100101' # 饮水机 Const.DEVICE_TYPE_CODE_PULSE_COFFER = '100102' # 咖啡机 Const.DEVICE_TYPE_CODE_PULSE_HAND_WASHER = '100103' # 洗手液机 Const.DEVICE_TYPE_CODE_PULSE_END = '100107' # 脉冲类型编码结束号 Const.DEVICE_TYPE_CODE_BOARD_VOLT_HIGH = '100120' # 主板高电平使能投币器 Const.DEVICE_TYPE_CODE_CHILD_CAR = '100121' # 儿童车 Const.DEVICE_TYPE_CODE_WASHER_SCHZ = '100132' # 四川何总洗衣机,投币特殊要求(脉冲类型) 100301=>100132 # 10X200-10X299 12X000-12X999 充电桩类型 Const.DEVICE_TYPE_CODE_CHARGING_BASE = '100200' # 充电桩基础CODE Const.DEVICE_TYPE_CODE_QUICK_CHARGE = '100118' # TODO: GPRS双口快充(脉冲类型) Const.DEVICE_TYPE_CODE_CHARGING_KYXN = '100200' # 凯源新能的充电桩 Const.DEVICE_TYPE_CODE_CHARGING_JNDZ = '100202' # 郑州劲能电子/墨小智(是低版本,部分命令不支持) # Const.DEVICE_TYPE_CODE_CHARGING_DLY = '100203' # 多力源 # Const.DEVICE_TYPE_CODE_CHARGING_ZHUXING = '100204' # 助行电子 Const.DEVICE_TYPE_CODE_CHARGING_ZIXIA = '100205' # 子夏科技/助行电子/电川协议 Const.DEVICE_TYPE_CODE_CHARGING_JIUHEN = '100206' # 山东墨小智科技/久恒 Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ = '101206' # JNDZ 功率计费版本 Const.DEVICE_TYPE_CODE_CHARGING_HD = '1002061' # 和动 刷卡协议修改版 --> 刷卡流程 0x10 -- 0x2D Const.DEVICE_TYPE_CODE_CHARGING_JH_TOUBI = '1002062' # 久恒投币设置保险丝版本(投币可以设置3种投币时间) Const.DEVICE_TYPE_CODE_CHARGING_SERVICECHARGEMODEL = '1002063' # 现网兼容, 特制服务费计费版本 Const.DEVICE_TYPE_CODE_CHARGING_MOXIAOZHI2 = '100207' # 山东墨小智科技2 Const.DEVICE_TYPE_CODE_CHARGING_AIYAXING = '100208' # 艾亚新 Const.DEVICE_TYPE_CODE_CHARGING_ZHONGCHUANG = '100209' # 徐州中创 Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN = '100210' # 电川新版本协议 Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_HIGH = "1002101" # 电川的高版本 支持按度计费的 Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_SERVICECHARGE = "102210" # 电川协议永源支持服务费版本 Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT = "103210" # 电川协议 服务器功率计费版本 Const.DEVICE_TYPE_CODE_CHARGING_MOXIAOZHI3 = '100211' # 墨小智V3 Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO = '100212' # 海鸟 Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_SINGLE = '1002121' # 海鸟单路 Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_DOUBLE = '1002122' # 海鸟双路 Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_NEW = '1002123' # 海鸟新十路 Const.DEVICE_TYPE_CODE_CHARGING_HAINIAO_SINGLE_NEW = '1012121' # 海鸟新单路 Const.DEVICE_TYPE_CODE_CHARGING_ZHIYAN = '100214' # 智衍 Const.DEVICE_TYPE_CODE_CHARGING_HONGZHUO = '100215' # 鸿卓 Const.DEVICE_TYPE_CODE_CHARGING_LANGXIN = '100216' # 朗鑫 Const.DEVICE_TYPE_CODE_CHARGING_LANGXIN4 = '1002161' # 朗鑫4路 Const.DEVICE_TYPE_CODE_CHANGING_LANGXIN20 = '1002162' # 朗鑫20路 Const.DEVICE_TYPE_CODE_CHANGING_CXJZ = '100217' # 长兴聚展 # Const.DEVICE_TYPE_CODE_CHANGING_CXJZ_SMOKE = '1002171' # 长兴聚展烟感版本。逐步被101271代替 Const.DEVICE_TYPE_CODE_CHANGING_CXJZ_SMOKE = '101217' # 长兴聚展烟感版本 Const.DEVICE_TYPE_CODE_CHANGING_DELIXI = '100218' # 德力西 Const.DEVICE_TYPE_CODE_CHANGING_XUEYING = '100219' # 雪影 Const.DEVICE_TYPE_CODE_CHANGING_YUZE = '100220' # 宇泽(基于电川协议, 老协议) Const.DEVICE_TYPE_CODE_CHANGING_AIYAXIN5 = '100221' # 艾亚欣5档功率(基于电川协议, 支持5挡) Const.DEVICE_TYPE_CODE_CHANGING_ANXIN = '100222' # 安心 Const.DEVICE_TYPE_CODE_CHANGING_JINZE = '100223' # 金泽 Const.DEVICE_TYPE_CODE_CHANGING_JIUHENG_BAOXIANSHI = '100224' # 久恒保险丝旧版本 Const.DEVICE_TYPE_CODE_CHANGING_YUZE5 = '100225' # 宇泽5档功率(基于电川协议, 支持5挡) # Const.DEVICE_TYPE_CODE_CHANGING_ZHIXIA11 = '100226' # 端口从11开始计算的电川板子 Const.DEVICE_TYPE_CODE_CHANGING_HANGXIN = '100227' # 航鑫 Const.DEVICE_TYPE_CODE_CHANGING_HANGXIN_HIGN = "1002271" # 航鑫(汉尔云充版本) # Const.DEVICE_TYPE_CODE_CHANGING_DCALERT = '100228' # 电川温度告警 Const.DEVICE_TYPE_CODE_CHANGING_XUZHOU = '100229' # 旭州电子 Const.DEVICE_TYPE_CODE_CHARGING_AQKJ = '100230' # 安骑换电柜子 Const.DEVICE_TYPE_CODE_CHARGING_AQKJ_NEW = '1002301' # 安骑换电柜子 新版 Const.DEVICE_TYPE_CODE_CHARGING_SIJIANG = '100213' # 四江/三江/徽四江 Const.DEVICE_TYPE_CODE_CHARGING_SIJIANG4 = '1002131' # 四江4路 Const.DEVICE_TYPE_CODE_CHANGING_SIJIANG20 = '100231' # 四江20路 # Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUAN = '100232' # 电川整合 Const.DEVICE_TYPE_CODE_CHANGING_GUANGFA = '100233' # 光法#主要是支持退费直接到支付宝和微信,不是直接退金币 # Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUAN2 = '100234' # 电川新版本,支持烟感、温感、电压报警灯 Const.DEVICE_TYPE_CODE_CHANGING_DEKANG = '100235' # 得康 Const.DEVICE_TYPE_CODE_CHANGING_BAOJIA = '100236' # 宝佳,和劲能电子的协议比较像,但是有所不同 Const.DEVICE_TYPE_CODE_CHANGING_YUEWANGTONG = '100237' # 清远粤网通 # Const.DEVICE_TYPE_CODE_CHANGING_JIUHENG_HOURFEE = '100238' # 久恒的板子,按小时计费 Const.DEVICE_TYPE_CODE_CHANGING_WEIFULE = '100239' # 微弗智通的板子 # Const.DEVICE_TYPE_CODE_CHANGING_NANJIGUANG = '100240' # 里歌新能源和苏州南极光合作的充电桩 Const.DEVICE_TYPE_CODE_CHANGING_SHENGOU = '100241' # 郑州盛欧充电插座 Const.DEVICE_TYPE_CODE_CHANGING_CY4 = '100242' # 郑州昌原4代机 Const.DEVICE_TYPE_CODE_CHANGING_HAINIAOV2 = '100243' # 海鸟V2 # Const.DEVICE_TYPE_CODE_CHANGING_HAINIAOV2 = '100245' # 劲能SCK主板 + 电川刷卡板 Const.DEVICE_TYPE_CODE_CHANGING_QL = '100246' # 强隆10路机 Const.DEVICE_TYPE_CODE_CHANGING_AOQIANG = '100247' # 奥强充电板 Const.DEVICE_TYPE_CODE_CHANGING_YUNCHONG = '100248' # 云充充电板 Const.DEVICE_TYPE_CODE_CHANGING_WEIFULE2 = '100249' # 晨马修改的特殊版本基于微付乐100239 Const.DEVICE_TYPE_CODE_CHANGING_CY_POWER = '100250' # 昌原4路大功率机型 Const.DEVICE_TYPE_CODE_CHARGE_DIANCHUAN_NEW = '100252' # 电川协议新版本 Const.DEVICE_TYPE_CODE_CHANGING_WEIFULE_TIME = '100251' # 基于微付乐版本的只支持按时间计费 Const.DEVICE_TYPE_CODE_CHARGE_ZHONGSHAN = '100255' # 中山绿智 Const.DEVICE_TYPE_CODE_CHARGE_ZHONGSHAN_BILLASSERVICE = '101255' # 中山绿智支持服务费模式 Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU = '100256' # 小科豆 Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_SERVICEFEE = '101256' # 小科豆服务费 Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY = '102256' # 小科豆 Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_MAXTOTALPOWER = '1002561' # 小科豆兼容最大总功率 Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR = '100257' # 微付乐汽车充电桩 Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR_JFPG = '101257' # 微付乐汽车充电桩 支持尖峰平谷,定时心跳上报充电数据 Const.DEVICE_TYPE_CODE_CHARGE_DOUBLE_SERIAL_JH = "100258" # 久恒老协议双串口 Const.DEVICE_TYPE_CODE_CHARGING_HD_PREPAID_OR_POSTPAID = "100259" # 和动 新主板 Const.DEVICE_TYPE_CODE_CHARGING_CHAOCHEN = "100260" # 超辰 Const.DEVICE_TYPE_CODE_CHARGING_BL_GATEWAY = "100261" # 柏来插座 网关 Const.DEVICE_TYPE_CODE_CHARGING_BL_NODE = "100262" # 柏来插座 子节点 Const.DEVICE_TYPE_CODE_CHARGING_DC_GATEWAY = "100263" # 电川插座 网关 Const.DEVICE_TYPE_CODE_CHARGING_DC_NODE = "100264" # 电川插座 子节点 Const.DEVICE_TYPE_CODE_CHARGING_CHANGYUAN_FIVE = "100267" # 昌源5代十路充电桩 Const.DEVICE_TYPE_CODE_CHARGING_CHANGYUAN_FIVE_ONLINECARD = "102267" # 昌源5代十路充电桩在线卡 Const.DEVICE_TYPE_CODE_CHARGING_CHANGYUAN_SIX = "1002671" # 昌原6代十路充电桩 Const.DEVICE_TYPE_CODE_CHARGING_JINENENG_POWER = "100268" # 劲能充电桩 功率计费 Const.DEVICE_TYPE_CODE_CHANGING_SOCKET = '100269' # 微付乐插座 Const.DEVICE_TYPE_CODE_WEIFULE_MINI = '100270' # 微付乐融合mini板 Const.DEVICE_TYPE_CODE_HZFL = '100271' # 富联科技 Const.DEVICE_TYPE_CODE_GAOBORUI = '100272' # 苏州高博锐电川 Const.DEVICE_TYPE_CODE_WEIFULE_TOUCH_PAD = '100273' # 微付乐按键触控板 Const.DEVICE_TYPE_CODE_AOQIANG_CHAZUO_GATEWAY = '100274' # 奥强插座 网关 Const.DEVICE_TYPE_CODE_AOQIANG_CHAZUO_NODE = '100275' # 奥强插座 节点 Const.DEVICE_TYPE_CODE_GAOBORUI_SECOND = '100276' # 高博锐自己板子 Const.DEVICE_TYPE_CODE_CHARGING_BL_GATEWAYPLUG = "100277" # 柏来网关插座 Const.DEVICE_TYPE_CODE_ZHANGRUNYIHE = '100278' # 苏州中润易和智能科技有限公司 协议和100210一样 支持5挡 Const.DEVICE_TYPE_CODE_CHARGING_WXLZ = "100279" # 重庆无线绿洲充电桩 Const.DEVICE_TYPE_CODE_WEIFULE_ANJIAN = "100280" # 一体板按键版本 Const.DEVICE_TYPE_CODE_WEIFULE_POLICY = "101280" # 分体板(策略计费) 同100280 友能流程 Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC = "102280" # 分体板(策略计费) 默认流程(常规套餐预付费,无临时套餐) Const.DEVICE_TYPE_CODE_KE_HANG = "100281" Const.DEVICE_TYPE_CODE_KE_HANG_POLICY = "101281" Const.DEVICE_TYPE_CODE_WEIFULE_MINI_POLICY = "101270" # 纯扫码(策略计费) 同100270 Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY = "101249" # 一体板(策略计费) 同100249 Const.DEVICE_TYPE_CODE_WEIFULE_TOUCH_PAD_POLICY = "101273" # 一体板(策略计费) 同100273 Const.DEVICE_TYPE_CODE_SUZHOU_BEISIYUN = "100286" # 苏州贝斯云 Const.DEVICE_TYPE_CODE_CM_CHAZUO_GATEWAY = "100287" Const.DEVICE_TYPE_CODE_CM_CHAZUO_NODE = "100288" Const.DEVICE_TYPE_CODE_CHANGING_YUZE_DIANCHUAN = '100289' # 宇泽5档功率(基于新电川协议, 支持5挡) Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUAN_RONGHE = '100290' # 电川4G融合板 Const.DEVICE_TYPE_CODE_CHANGING_BL_TEN = '100291' # 柏来10路充电桩 Const.DEVICE_TYPE_CODE_CHANGING_BL_TWELVE = '100292' # 柏来12路充电桩 Const.DEVICE_TYPE_CODE_FENGSHUO = '100293' # 丰硕 # 洗衣机 10X300-10X399 Const.DEVICE_TYPE_CODE_WASHER_BASE = '100300' # 洗衣机基础CODE Const.DEVICE_TYPE_CODE_WASHER_CW = '100300' # 创维洗衣机 Const.DEVICE_TYPE_CODE_WASHER_SIMAIER = '100302' # 家伟(思迈尔协议) Const.DEVICE_TYPE_CODE_WASHER_TS = '100303' # 投石洗衣机 Const.DEVICE_TYPE_CODE_WASHER_CY_HJ_1 = "101305" # 彩亿主板 与100305 时间范围不同 时间范围由华杰老板提供 Const.DEVICE_TYPE_CODE_WASHER_CY_HJ = "100305" # 彩亿主板 华洁需求 Const.DEVICE_TYPE_CODE_WASHER_CY_HS = "1003051" # 彩亿主板 宁波海尚需求 Const.DEVICE_TYPE_CODE_WASHER_CY_HS_YUCHUAN = "1003052" # 彩亿主板 对接一卡通 要求刷卡 Const.DEVICE_TYPE_CODE_WASHER_CY_HS_HONGGAN = "1003053" # 彩亿主板 烘干机 Const.DEVICE_TYPE_CODE_WASHCAR_HAIER = "100307" # 海尔洗衣机 Const.DEVICE_TYPE_CODE_WASHER = '100308' # 串口洗衣机 100106=>100308 Const.DEVICE_TYPE_CODE_HUITENG = '100309' # 汇腾洗衣机 100109=>100309 Const.DEVICE_TYPE_CODE_YUCHUAN_SHUAKA = "100310" # 宇川一卡通 100001=>100310 Const.DEVICE_TYPE_CODE_WEIFULE_WASHER = '100327' # 微付乐洗衣机海尔一体板 100127=>100327 Const.DEVICE_TYPE_CODE_WEIFULE_WANNENGBAN_WASHER = '100328' # 微付乐洗衣机万能一体板 100128=>100328 # 洗车机 10X500-10X599 Const.DEVICE_TYPE_CODE_WASHCAR_LSHB = '100500' # 沥森环保洗车机 Const.DEVICE_TYPE_CODE_WASHCAR_LSHB_NOTIFY = '101500' # 沥森环保 通过设备类型控制是否进行刷卡推送 Const.DEVICE_TYPE_CODE_WASHCAR_LANGUANG = '100501' # 蓝光国际(大球)洗车机/饮水机 # 汽车桩 10X600-10X699 16X000-16X999 Const.DEVICE_TYPE_CODE_CAR_CHARGING_CY = '100600' # 昌源汽车充电桩 Const.DEVICE_TYPE_CODE_CAR_CHARGING_CY_ZZHX = '1006001' # 郑州和喜充电桩 与100600的区别主要是 离线卡录入的问题 Const.DEVICE_TYPE_CODE_CAR_CHARGING_YONGXIN = '100601' # 用芯汽车充电桩 Const.DEVICE_TYPE_CODE_CAR_CHARGING_ZHONGCHUANG = '100602' # 中创汽车充电桩 Const.DEVICE_TYPE_CODE_CAR_CHARGING_LIGE = '100603' # 里歌汽车充电桩 Const.DEVICE_TYPE_CODE_CAR_CHARGING_JN = "100604" # 劲能电子汽车充电桩 Const.DEVICE_TYPE_CODE_CAR_CHARGING_CY_V2 = "100605" # 昌原汽车充电桩V2升级版 # Const.DEVICE_TYPE_CODE_CAR_CHARGING = "100606" # 汽车直流快充. 自带网络,后续没有对接 Const.DEVICE_TYPE_CODE_CAR_CHARGING_KY = "100607" # 坤元汽车桩 Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB = "100608" # 微付乐一体汽车桩双枪 Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB_JFPG = "101608" # 微付乐一体汽车桩双枪,支持尖峰平谷,以及定时上报充电数据 Const.DEVICE_TYPE_CODE_CHANGING_DIANCHUANCARCHARGING = "100610" # 电川汽车充电桩(用芯提供) Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE = "100611" # 金雀汽车充电桩 Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW = "100612" # 微付乐大功率(21kw/32A)单枪 Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW_JFPG = "101612" # 微付乐大功率(21kw/32A)单枪,支持尖峰平谷,以及定时上报充电数据 Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_JFPG = "100614" #家用汽车充电桩 支持尖峰平谷 Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_DOUB_JFPG = "100615" #家用汽车充电桩 支持尖峰平谷 # 支付开关 10X700-10X799 Const.DEVICE_TYPE_CODE_PEDICURE2 = '100708' # 足疗机第二种版本,通过控制足疗机开关 100108=>100708 Const.DEVICE_TYPE_CODE_TIMESWITCH1 = '100710' # 支付时间开关,纯粹的12V的开关,输入输出都是12V,按摩坐垫,星步的足疗机、空气净化器,荣桥国际 100110=>100710 Const.DEVICE_TYPE_CODE_TIMESWITCH2 = '100711' # 支付时间开关,纯粹的开关,输入12V,输出2.3V。姚的足疗机(低开)港德,史晓鹏 100111=>100711 Const.DEVICE_TYPE_CODE_TIMESWITCH3 = '100712' # 支付时间开关,纯粹的开关,输入12V,输出3V。足疗机(高开) 上海卓摩 心之宝 100112=>100712 Const.DEVICE_TYPE_CODE_TIMESWITCH4 = '100713' # 支付时间开关,10ms交替周期,5ms上下。星步, 100113=>100713 Const.DEVICE_TYPE_CODE_TIMESWITCH5 = '100714' # 支付开关空气净化器. 同Const.DEVICE_TYPE_CODE_TIMESWITCH1 = '100110' 100114=>100714 Const.DEVICE_TYPE_CODE_TIMESWITCH6 = '100715' # 艾维斯 100115=>100715 Const.DEVICE_TYPE_CODE_TIMESWITCH7 = '100716' # 锁 100116=>100716 Const.DEVICE_TYPE_CODE_TIMESWITCH8 = '100717' # 制氧机. 同Const.DEVICE_TYPE_CODE_TIMESWITCH2 100117=>100717 # 充电柜 10X800-10X899 Const.DEVICE_TYPE_CODE_CABINET = '100803' # 粤万通的充电柜 Const.DEVICE_TYPE_CODE_CABINET_NEW = '1008031' # 粤万通的充电柜(开关门自控制版本) # 串口足疗机 10X900-10X999 Const.DEVICE_TYPE_CODE_PEDICURE_SERIAL1 = '100900' # 串口足疗机. 和奥创协议类似. 姚总 Const.DEVICE_TYPE_CODE_PEDICURE = '100901' # 奥创足疗机 100104 => 100901 Const.DEVICE_TYPE_CODE_PEDICURE_HONGPAI = '100902' # 鸿派、博峰足疗机 100119 => 100902 Const.DEVICE_TYPE_CODE_BINNUO = '100903' # 宾诺 100122=>100903 # 格子柜 11X000-11X099 Const.DEVICE_TYPE_CODE_CELL = '110000' # 格子柜 100800=>110000 Const.DEVICE_TYPE_CODE_CELL1 = '111000' # 格子柜(反序) 100801=>111000 Const.DEVICE_TYPE_CODE_GEZIGUI_485 = "110005" # 储物格子柜_485 100805=>110005 # 吹风机类型 11X100-11X199 Const.DEVICE_TYPE_CODE_WEIFULE_BLOWER = '110100' # 微付乐吹风机一体板 100129=>110100 Const.DEVICE_TYPE_CODE_DIANCHUAN_BLOWER = '110101' # 电川吹风机 101300=>110101 Const.DEVICE_TYPE_CODE_CHUIFENGJI = '110102' # 艾亚欣吹风机 100126=>110102 # 游艺相关的设备类型 11X200-11X299 Const.DEVICE_TYPE_CODE_WAWAJI = "110200" # 娃娃机 101200=>110200 Const.DEVICE_TYPE_CODE_WAWAJI_WUMAHANG = "110201" # 娃娃机 武马行串口 101201=>110201 Const.DEVICE_TYPE_CODE_WAWAJI_3706 = "110202" # 娃娃机 3706 101202=>110202 Const.DEVICE_TYPE_CODE_WAWAJI_HUAYING = "110203" # 娃娃机 华盈 101203=>110203 Const.DEVICE_TYPE_CODE_DUIBIJI = "110204" # 兑币机 101204=>110204 Const.DEVICE_TYPE_CODE_DAQIANG = '110205' # 打枪设备 101205=>110205 Const.DEVICE_TYPE_CODE_DUOBAO = "110206" # 多宝摇摇车. 已经废弃. 100107=>110206 # 纸巾机类型 11X300-11X399 Const.DEVICE_TYPE_CODE_TISSUE = '110300' # 纸巾机 (荣事达) 100105=>110300 # 水控 11X400-11X499 Const.DEVICE_TYPE_CODE_DEPARTMENT_SHOWER = '110400' # 公寓-淋浴器 100700=>110400 # 汗蒸机 11X500-11X599 Const.DEVICE_TYPE_CODE_HANZHEN = '110500' # 汗蒸机 100802=>110500 # 门禁类型 11X600-11X699 Const.DEVICE_TYPE_CODE_JH_GATE = "110601" # 久恒道闸门禁 101001=>110601 Const.DEVICE_TYPE_CODE_ONE_CARD = "110602" # 一卡通道闸门禁 101002=>110602 Const.DEVICE_TYPE_CODE_HP_GATE = "101000" # 霍珀道闸门禁 TODO: 101000=>110603 # 11X700-11X799 饮水机, Const.DEVICE_TYPE_CODE_WATER_DISPENSER = '110700' # 韩总加水机 100130=>110700 # 充值机 11X800-11X899 Const.DEVICE_TYPE_CODE_AHZT = "110804" # 安徽智同的 100804=>110804 Const.DEVICE_TYPE_CODE_JHIC = "110806" # 久恒IC卡充值机 100806=>110806 # 饮水机等 11X900-11X999 Const.DEVICE_TYPE_CODE_WATER_CONTROLLER = '110901' # 文智嘉盛控水器1 100131=>110901 Const.DEVICE_TYPE_CODE_HESHUICHONGDIAN = '110903' # 喝水充电 100123=>110903 Const.DEVICE_TYPE_CODE_HESHUI = '110904' # 打水 100124=>110904 Const.DEVICE_TYPE_CODE_CHONGDIAN = '110905' # 充电 100125=>110905 # 换电柜 13X000-13X099 Const.DEVICE_TYPE_CODE_YWT_HUANDIANGUI = '130001' # ywt换电柜 # 蓝牙设备 20X000-20X199 Const.DEVICE_TYPE_CODE_B_PULSE = '200001' # 蓝牙脉冲 Const.DEVICE_TYPE_CODE_B_CHARGING = '200002' # 蓝牙充电开关 Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_GPIO = '200003' # 蓝牙软开关, GPIO电平驱动 Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_IR = '200005' # 蓝牙软开关, 红外遥控驱动 Const.DEVICE_TYPE_CODE_B_QUICK_CHARGE_TWO = '200006' # 蓝牙两口快充脉冲 Const.DEVICE_TYPE_CODE_B_CLOTHES_TREE = '200008' # 干衣架 # 支持云快充TCP方式的协议的连接 Const.DEVICE_TYPE_CODE_CAR_NENGPAI = '300001' # 云快充协议 # 辅助串口驱动分配500000-500199 Const.DEVICE_TYPE_CODE_AUX_START = '500000' Const.DEVICE_TYPE_CODE_AUX_CARD_JH = '500001' Const.DEVICE_TYPE_CODE_AUX_CARD_MY1 = '500002' Const.DEVICE_TYPE_CODE_AUX_CARD_MY2 = '500003' Const.DEVICE_TYPE_CODE_AUX_CARD_JH_DOUBLE = '500005' Const.DEVICE_TYPE_CODE_AUX_CARD_HX_DOUBLE = '5000051' Const.DEVICE_TYPE_CODE_AUX_HEISHUI = '500123' Const.DEVICE_TYPE_CODE_AUX_END = '500199' # 铁塔 90X100-90X1XX Const.DEVICE_TYPE_CODE_SHANDONG_TIETA = '900100' Const.DEVICE_TYPE_CODE_HENAN_TIETA = '900101' # 测试类型 99X900-99X9XX, 999999保留 Const.BT_DEVICE_TYPE_CODE_MAP = { 1: Const.DEVICE_TYPE_CODE_B_PULSE, 2: Const.DEVICE_TYPE_CODE_B_CHARGING, 3: Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_GPIO, 5: Const.DEVICE_TYPE_CODE_B_TIME_SWITCH_IR, 6: Const.DEVICE_TYPE_CODE_B_QUICK_CHARGE_TWO, 8: Const.DEVICE_TYPE_CODE_B_CLOTHES_TREE } Const.PEDICURE_BOX_DZGZ = '10010401' # 堵转故障 Const.PEDICURE_BOX_BGW = '10010402' # 按摩脚霍尔传感器不归位 Const.PEDICURE_BOX_KJGZ = '10010403' # 付款没有开机故障 Const.TISSUE_BOX_QZ = '10010501' # 缺纸告警 Const.TISSUE_BOX_DJGZ = '10010502' # 电机故障 Const.WASHER_BOX_DJ = '10010601' # 待机 Const.WASHER_BOX_YZ = '10010602' # 运转 Const.WASHER_BOX_ZT = '10010603' # 暂停 Const.WASHER_BOX_GZ = '10010604' # 故障 Const.WASHER_BOX_CSSZ = '10010605' # 参数设置 Const.WASHER_STATUS_CODE_DESC = { Const.WASHER_BOX_DJ: u'待机', Const.WASHER_BOX_YZ: u'运转', Const.WASHER_BOX_ZT: u'暂停', Const.WASHER_BOX_GZ: u'故障', Const.WASHER_BOX_CSSZ: u'参数设置' } Const.WASHER_BOX_ZJ = '10010606' # 自检 Const.WASHER_BOX_DTS = '10010607' # 单脱水 Const.WASHER_BOX_KS = '10010608' # 快速 Const.WASHER_BOX_BZ = '10010609' # 标准 Const.WASHER_BOX_DW = '10010610' # 大物 Const.WASHER_BOX_JRKS = '10010611' # 加热快速 Const.WASHER_BOX_JRBZ = '10010612' # 加热标准 Const.WASHER_BOX_JRDW = '10010613' # 加热大物 Const.WASHER_BOX_SET_TQJ = u'桶清洁' Const.WASHER_BOX_SET_DTS = u'单脱水' Const.WASHER_BOX_SET_KSX = u'快速洗' Const.WASHER_BOX_SET_BZX = u'标准洗' Const.WASHER_BOX_SET_DWX = u'大物洗' Const.WASHER_BOX_SET_JRKS = u'加热快速洗' Const.WASHER_BOX_SET_JRBZ = u'加热标准洗' Const.WASHER_BOX_SET_JRDW = u'加热大物洗' Const.WASHER_PROGRAM_CODE_DESC = { Const.WASHER_BOX_ZJ: u'自检', Const.WASHER_BOX_DTS: u'单脱水', Const.WASHER_BOX_KS: u'快速', Const.WASHER_BOX_BZ: u'标准', Const.WASHER_BOX_DW: u'大物', Const.WASHER_BOX_JRKS: u'加热快速', Const.WASHER_BOX_JRBZ: u'加热标准', Const.WASHER_BOX_JRDW: u'加热大物', } Const.WASHER_BOX_YY = '10010614' # 预约 Const.WASHER_BOX_JP = '10010615' # 浸泡 Const.WASHER_BOX_XD = '10010616' # 洗涤 Const.WASHER_BOX_PX = '10010617' # 漂洗 Const.WASHER_BOX_TS = '10010618' # 脱水 Const.WASHER_BOX_ZJS = '10010619' # 主进水 Const.WASHER_PROCESS_CODE_DESC = { Const.WASHER_BOX_YY: u'预约', Const.WASHER_BOX_JP: u'浸泡', Const.WASHER_BOX_XD: u'洗涤', Const.WASHER_BOX_PX: u'漂洗', Const.WASHER_BOX_TS: u'脱水', Const.WASHER_BOX_ZJS: u'主进水' } Const.WASHER_BOX_JSCS = '10010620' # 进水超时 Const.WASHER_BOX_PSCS = '10010621' # 排水超时 Const.WASHER_BOX_TSKG = '10010622' # 脱水开盖 Const.WASHER_BOX_TSBPH = '10010623' # 脱水不平衡 Const.WASHER_BOX_TXGZ = '10010624' # 通讯故障 Const.WASHER_BOX_TONTSKG = '10010625' # 童锁开盖 Const.WASHER_BOX_YS = '10010626' # 溢水 Const.WASHER_BOX_SWCGQGZ = '10010627' # 水位传感器故障 Const.WASHER_BOX_SJCCGZ = '10010628' # 数据存储故障 Const.WASHER_BOX_WDCGQGZ = '10010629' # 温度传感器故障 Const.WASHER_BOX_WSJRGZ = '10010630' # 无水加热故障 Const.WASHER_BOX_DJDZGZ = '10010631' # 电机堵转故障 Const.WASHER_BOX_IPMWDGG = '10010632' # IPM温度过高故障 Const.WASHER_BOX_DJGL = '10010633' # 电机过流故障 Const.WASHER_BOX_DJQX = '10010634' # 电机缺相故障 Const.WASHER_BOX_QDQGZ = '10010635' # 驱动器故障 Const.WASHER_BOX_YEBENG = '10010636' # 液泵 Const.CHARGING_KYXN_DCGZ = '10010637' # 电池故障 Const.CHARGING_KYXN_CDZGZ = '10010638' # 充电桩故障 Const.CHARGING_KYXN_QTGZ = '10010639' # 其他故障 Const.EVENT_NORMAL = 1 Const.EVENT_MAJOR = 2 Const.EVENT_CRITICAL = 3 # 霍珀虚拟卡续卡时间 Const.VCARD_NEED_NOTIFY_TIME = 3 Const.ERROR_START_TIMES = 3 # 极验 Const.GEE_TEST_ID = 'cece0b9be07d6a367c28d32cd11e43c8' Const.GEE_TEST_KEY = '90c898f262a2fdda854ed59629297930' # 阿里滑块 Const.ALI_SLIDER_ACCESSKEY_ID = 'LTAI4FdCWfeML7Xqv3Eqw4V4' Const.ALI_SLIDER_ACCESSKEY_SECRET = 'xCW9nves10T3sEPfKSKXaALs7b3P19' Const.DATE_FMT = '%Y-%m-%d' Const.DATETIME_FMT = '%Y-%m-%d %H:%M:%S' # 提现费率常量 Const.PLATFORM_DEFAULT_WITHDRAW_FEE_RATIO = Permillage("6") Const.MIN_DEALER_WITHDRAW_FEE_RATIO = Permillage("0") Const.MAX_DEALER_WITHDRAW_FEE_RATIO = Permillage("1000") # 流量卡年费常量 Const.PLATFORM_DEFAULT_TRAFFIC_COST = RMB('20.00') Const.EVENT_CODE_DESC = { Const.PEDICURE_BOX_DZGZ: u'堵转故障', Const.PEDICURE_BOX_BGW: u'按摩脚霍尔传感器不归位', Const.PEDICURE_BOX_KJGZ: u'付款没有开机故障', Const.TISSUE_BOX_QZ: u'缺纸告警', Const.TISSUE_BOX_DJGZ: u'电机故障', Const.WASHER_BOX_JSCS: u'进水超时', Const.WASHER_BOX_PSCS: u'排水超时', Const.WASHER_BOX_TSKG: u'脱水开盖u', Const.WASHER_BOX_TSBPH: u'脱水不平衡', Const.WASHER_BOX_TXGZ: u'通讯故障', Const.WASHER_BOX_TONTSKG: u'童锁开盖', Const.WASHER_BOX_YS: u'溢水', Const.WASHER_BOX_SWCGQGZ: u'水位传感器故障', Const.WASHER_BOX_SJCCGZ: u'数据存储故障', Const.WASHER_BOX_WDCGQGZ: u'温度传感器故障', Const.WASHER_BOX_WSJRGZ: u'无水加热故障', Const.WASHER_BOX_DJDZGZ: u'电机堵转故障', Const.WASHER_BOX_IPMWDGG: u'IPM温度过高故障', Const.WASHER_BOX_DJGL: u'电机过流故障', Const.WASHER_BOX_DJQX: u'电机缺相故障', Const.WASHER_BOX_QDQGZ: u'驱动器故障', Const.CHARGING_KYXN_DCGZ: u'电池故障', Const.CHARGING_KYXN_CDZGZ: u'充电桩故障', Const.CHARGING_KYXN_QTGZ: u'其他故障' } Const.USER_SEX = enum(UNKNOWN = 0, MALE = 1, FEMALE = 2, ALL = -1) Const.CELERY_TASK_RESULT_TRANSLATION = { 'PENDING': u'处理中', 'STARTED': u'已开启', 'RETRY': u'等待重试', 'FAILURE': u'失败', 'SUCCESS': u'成功', 'UNKNOWN': u'未知' } Const.TRANSLATION = { 'feedback_process': u'故障处理完成提醒', 'feedback': u"用户报障", 'daily_income': u"次日收益推送", 'new_payment_order': u"每笔订单推送", 'abnormal_device_offline': u"设备离线通知", 'device_fault': u'设备故障通知', 'device_warnning': u'告警通知', 'online_notify': u'设备上线通知', 'refund_coins': u'设备退币', 'service_complete': u'服务完成', 'consume_notify': u'消费提醒', 'less_balance': u'余额不足', 'service_expired': u'服务到期提醒', 'sim_expire_notify': u'设备到期提醒', 'system_alarm_notify': u'系统告警通知', 'exchange_order_notify': u'售后服务通知', 'service_start': u'设备启动通知', 'dev_start': u'启动通知', 'charge_order_complete': u'充电订单完成提醒', 'common_order_complete': u'订单完成提醒' } class APP_TYPE(StrEnum): WECHAT_AUTH = 'wechat_auth' WECHAT_OLD_AUTH = 'wechat_old_auth' WECHAT_USER_MANAGER = 'wechat_user_manager' WECHAT_USER_SUBSCRIBE_MANAGER = 'wechat_user_subscribe_manager' WECHAT_DEALER_SUBSCRIBE_MANAGER = 'wechat_dealer_subscribe_manager' WECHAT_USER_MESSAGER = 'wechat_user_messager' WECHAT_MANAGER = 'wechat_manager' WECHAT_WITHDRAW = 'wechat_withdraw' ALIPAY_AUTH = 'alipay_auth' JD_AUTH = 'jd_auth' WECHAT_MINI_AUTH = 'wechat_mini_auth' # 支付APP按照平台来对应. # 微信平台可能对应微信支付,扫呗支付,京东支付 # 支付宝平台可能对应支付宝,扫呗,京东聚合 # 京东平台可能对应京东聚合,京东支付 # MY_WECHAT_ENV_PAY = 'my_wechat_env_pay' WECHAT_ENV_PAY = 'wechat_env_pay' WECHAT_MINI_ENV_PAY = 'wechat_mini_env_pay' ALIPAY_ENV_PAY = 'alipay_env_pay' JD_ENV_PAY = 'jd_env_pay' PLATFORM_ENV_PAY = 'platform_common_env_pay' SWAP_ENV_PAY = 'swap_env_pay' # 100,000,000 Const.A_HUNDRED_MILLION = 100000000 Const.DEFAULT_PRODUCT_NAME = u'微付乐' Const.TRANS_DICT = { 'leftTime': {'name': '剩余时间', 'unit': '分钟', 'sortIndex': 3}, 'nickname': {'name': '昵称', 'sortIndex': 1}, 'duration': {'name': '使用时间', 'unit': '分钟', 'sortIndex': 3}, 'coins': {'name': '支付', 'unit': '金币', 'sortIndex': 3}, 'voltage': {'name': '电压', 'unit': '伏', 'sortIndex': 3}, 'current': {'name': '电流', 'unit': '安', 'sortIndex': 3}, 'inputElec': {'name': '充入电量', 'unit': '度', 'sortIndex': 3}, 'statusDesc': {'name': '当前状态', 'sortIndex': 3}, } Const.SIM_CARD_FORBIDDEN_DAY = 20 # 平台统一SIM卡到期日 class GPS_TYPE(Values): gcj02 = ValueConstant('gcj02') # 国内特色 火星坐标系 高德,腾讯地图 bd09 = ValueConstant('bd09') # 百度 WGS84 = ValueConstant('WGS84') # 大部分国际使用 class MQTT_GROUP(object): event = '' api = '' chuangwei = '' # event = '$share/group-event/' # api = '$share/group-api/' # chuangwei = '$share/group-chuangwei/' class Unit(StrEnum): # : Misc PACK = 'pack' # : Volume L = 'l' # liter ML = 'ml' # milliliter CC = 'cm^3' # cubic centimeter CUBIC_METER = 'm^3' # cubic meter # : Time SECOND = 'second' HOUR = 'hour' MINUTE = 'minute' # : Temperature DEGREE = 'degree' # degree Celsius # : Power WATT = 'watt' KILOWATT = 'kilowatt' # : Energy KJ = 'kilojoule' J = 'joule' MJ = 'megajoule' # 1000 * KJ kW_h = 'kilowatt hour' # kW·h 1 kW·h = 3.6 MJ # : Length M = 'meter' KM = 'kilometer' # : Area SQUARE_METER = 'square meter' SQUARE_KILO_METER = 'square kilometer' # : Force N = 'newton' class REPORT_CHANNEL(StrEnum): PAY = 'pay' AD = 'ad' COIN = 'coin' COUNT = 'count' PAY_COIN = 'pay_coin' COUNT_COIN = 'count_coin' class DEV_TMPL(StrEnum): PAY = 'd_{devNo}_{nowDate}_pay' AD = 'd_{devNo}_{nowDate}_ad' COIN = 'd_{devNo}_{nowDate}_coin' COUNT = 'd_{devNo}_{nowDate}_count' PAY_COIN = 'd_{devNo}_{nowDate}_pay_coin' COUNT_COIN = 'd_{devNo}_{nowDate}_count_coin' class GROUP_TMPL(StrEnum): PAY = 'g_{groupId}_{nowDate}_pay' AD = 'g_{groupId}_{nowDate}_ad' COIN = 'g_{groupId}_{nowDate}_coin' COUNT = 'g_{groupId}_{nowDate}_count' PAY_COIN = 'g_{groupId}_{nowDate}_pay_coin' COUNT_COIN = 'g_{groupId}_{nowDate}_count_coin' class DEALER_TMPL(StrEnum): PAY = 'o_{ownerId}_{nowDate}_pay' AD = 'o_{ownerId}_{nowDate}_ad' COIN = 'o_{ownerId}_{nowDate}_coin' COUNT = 'o_{ownerId}_{nowDate}_count' PAY_COIN = 'o_{ownerId}_{nowDate}_pay_coin' COUNT_COIN = 'o_{ownerId}_{nowDate}_count_coin' class AGENT_TMPL(StrEnum): AD = 'a_{agentId}_{nowDate}_ad' class MANAGER_TMPL(StrEnum): AD = 'm_{managerId}_{nowDate}_ad' class RechargeRecordVia(StrEnum): Balance = 'recharge' StartDevice = "startDevice" Card = 'chargeCard' VirtualCard = 'chargeVirtualCard' SendCoin = 'sendcoin' Refund = 'refund' Cash = 'cash' # 现金直接支付订单 / 一般用于后付费 MonthlyPackage = "monthlyPackage" Insurance = "insurance" # 支付保险的钱 Redpack = "redpack" # 红包抵扣 Mix = "mix" # 混合单 (保险+充电)(红包抵扣+充电) RefundCash = "refundCash" # 现金退款 RevokeRefundCash = 'revokeRefundCash' # 现金退款退单 Swap = 'swap' # 互联互通 AutoSim = 'autoSim' RECHARGE_RECORD_VIA_TRANSLATION = { RechargeRecordVia.Balance: u'充值余额', RechargeRecordVia.Card: u'实体卡充值', RechargeRecordVia.VirtualCard: u'虚拟卡券充值', RechargeRecordVia.SendCoin: u'商家派币', RechargeRecordVia.Refund: u'商家退币', RechargeRecordVia.Cash: u"后付费支付", RechargeRecordVia.MonthlyPackage: u"包月卡充值", RechargeRecordVia.Insurance: u"保险", RechargeRecordVia.Redpack: u"红包抵扣", RechargeRecordVia.RefundCash: u'现金退款', RechargeRecordVia.RevokeRefundCash: u'现金退款退单', RechargeRecordVia.Swap: u'互联互通', RechargeRecordVia.AutoSim: u"流量卡自动充值" } class CONSUMETYPE(IterConstant): MOBILE = 'mobile' # 扫码付费 MOBILE_VCARD = 'mobile_vcard' # 虚拟卡抵扣 COIN = 'coin' # 投币 CARD = 'card' # 刷卡 SERVER_BILLING = 'serverBilling' # 后台计费 POWER_BILLING = 'powerBilling' # 功率计费 POSTPAID = 'postpaid' # 后支付 BILL_AS_SERVICE = 'billAsService' # 电量 + 服务费模式 BILL_AS_SERVICE_POSTPAID = 'billAsServicePostpaid' # 电量 + 服务费模式 后支付 class USER_RECHARGE_TYPE(IterConstant): RECHARGE = RechargeRecordVia.Balance START_DEVICE = RechargeRecordVia.StartDevice RECHARGE_CARD = RechargeRecordVia.Card RECHARGE_VIRTUAL_CARD = RechargeRecordVia.VirtualCard RECHARGE_CASH = RechargeRecordVia.Cash RECHARGE_MONTHLY_PACKAGE = RechargeRecordVia.MonthlyPackage RECHARGE_INSURANCE = RechargeRecordVia.Insurance RECHARGE_REDPACK = RechargeRecordVia.Redpack RECHARGE_MIX = RechargeRecordVia.Mix REFUND_CASH = RechargeRecordVia.RefundCash REVOKE_REFUND_CASH = RechargeRecordVia.RevokeRefundCash SWAP = RechargeRecordVia.Swap class DEALER_CONSUMPTION_AGG_KIND(IterConstant): # : 消费聚合类别 COIN = 'coin' SPEND_MONEY = 'spendMoney' # 实际花费 PACKAGE = 'package' # 纸巾包 REFUNDED_COINS = 'refundedMoney' # 退费金额(金币) REFUNDED_CASH = 'refundedCash' # 退费金额(元) ELEC = 'elec' # 消耗电量 CONSUME_CARD = 'consumeCard' # 刷卡消费额 REFUND_CARD = 'refundCard' # 刷卡退费额 DURATION = 'duration' # 充电时间 ITEM = 'item' # 一件商品 ELECFEE = 'elecFee' # 电费成本 TOTAL_COUNT = 'totalCount' # 线下投币 SERVICEFEE = 'serviceFee' # 服务费 SERVICE_CHARGE = 'serviceCharge' # 同SERVICEFEE,兼容需要,后续不在使用 ELEC_CHARGE = 'elecCharge' # ELECFEE,兼容需要,后续不在使用 DEALER_CONSUMPTION_AGG_KIND_TRANSLATION = \ { DEALER_CONSUMPTION_AGG_KIND.COIN: u'消费金币', DEALER_CONSUMPTION_AGG_KIND.PACKAGE: u'消费纸巾包', DEALER_CONSUMPTION_AGG_KIND.REFUNDED_COINS: u'退费金币', DEALER_CONSUMPTION_AGG_KIND.REFUNDED_CASH: u'退费金额', DEALER_CONSUMPTION_AGG_KIND.ELEC: u'消耗电量', DEALER_CONSUMPTION_AGG_KIND.SPEND_MONEY: u'实际花费', DEALER_CONSUMPTION_AGG_KIND.CONSUME_CARD: u'刷卡消费额', DEALER_CONSUMPTION_AGG_KIND.REFUND_CARD: u'卡退费', DEALER_CONSUMPTION_AGG_KIND.DURATION: u'使用时长', DEALER_CONSUMPTION_AGG_KIND.ITEM: u'销售货物', DEALER_CONSUMPTION_AGG_KIND.ELECFEE: u'电费', DEALER_CONSUMPTION_AGG_KIND.TOTAL_COUNT: u'线下投币次数', DEALER_CONSUMPTION_AGG_KIND.SERVICEFEE: u'服务费', DEALER_CONSUMPTION_AGG_KIND.SERVICE_CHARGE: u'服务费', # 兼容需要,后续不在使用 DEALER_CONSUMPTION_AGG_KIND.ELEC_CHARGE: u'电费' # 兼容需要,后续不在使用 } DEALER_CONSUMPTION_AGG_KIND_UNIT = \ { DEALER_CONSUMPTION_AGG_KIND.COIN: u'个', DEALER_CONSUMPTION_AGG_KIND.PACKAGE: u'包', DEALER_CONSUMPTION_AGG_KIND.REFUNDED_COINS: u'金币', DEALER_CONSUMPTION_AGG_KIND.REFUNDED_CASH: u'元', DEALER_CONSUMPTION_AGG_KIND.ELEC: u'度', DEALER_CONSUMPTION_AGG_KIND.SPEND_MONEY: u'元', DEALER_CONSUMPTION_AGG_KIND.CONSUME_CARD: u'元', DEALER_CONSUMPTION_AGG_KIND.DURATION: u'分钟', DEALER_CONSUMPTION_AGG_KIND.ITEM: u'件', DEALER_CONSUMPTION_AGG_KIND.ELECFEE: u'元', DEALER_CONSUMPTION_AGG_KIND.TOTAL_COUNT: u'次', DEALER_CONSUMPTION_AGG_KIND.REFUND_CARD: u'元', DEALER_CONSUMPTION_AGG_KIND.SERVICEFEE: u'元', DEALER_CONSUMPTION_AGG_KIND.SERVICE_CHARGE: u'元', # 兼容需要,后续不在使用 DEALER_CONSUMPTION_AGG_KIND.ELEC_CHARGE: u'元', # 兼容需要,后续不在使用 } DEALER_CONSUMPTION_AGG_KIND_UNIT_PRECISION = \ { DEALER_CONSUMPTION_AGG_KIND.COIN: '0.01', DEALER_CONSUMPTION_AGG_KIND.PACKAGE: '1', DEALER_CONSUMPTION_AGG_KIND.REFUNDED_COINS: '0.01', DEALER_CONSUMPTION_AGG_KIND.REFUNDED_CASH: '0.01', DEALER_CONSUMPTION_AGG_KIND.ELEC: '0.0001', DEALER_CONSUMPTION_AGG_KIND.SPEND_MONEY: '0.01', DEALER_CONSUMPTION_AGG_KIND.CONSUME_CARD: '0.01', DEALER_CONSUMPTION_AGG_KIND.DURATION: '0.01', DEALER_CONSUMPTION_AGG_KIND.ITEM: '1', DEALER_CONSUMPTION_AGG_KIND.ELECFEE: '0.01', DEALER_CONSUMPTION_AGG_KIND.TOTAL_COUNT: '1', DEALER_CONSUMPTION_AGG_KIND.SERVICEFEE: '0.01', DEALER_CONSUMPTION_AGG_KIND.SERVICE_CHARGE: '0.01', # 兼容需要,后续不在使用 DEALER_CONSUMPTION_AGG_KIND.ELEC_CHARGE: '0.01', # 兼容需要,后续不在使用 } MONTH_DATE_KEY = '{year:d}-{month:02d}' GLOSSARY_TRANSLATION = { 'elec': u'电量', 'reason': u'结束方式描述', 'chargeIndex': u'充电端口', 'actualNeedTime': u'动态功率计算', 'refundedMoney': u'退款', 'spendMoney': u'实际花费', 'feeType': u'收费标准', 'duration': u'充电时间', 'finishedTime': u'订单结束时间', 'leftTime': u'充电剩余时间', 'leftElec': u'剩余电量', 'power': u'功率', 'maxPower': u'最大功率', 'preBalance': u'充值前余额', 'batteryType': u'电池类型', 'coin': u'付款数额', 'needTime': u'订购时间', 'voltage': u'电池电压', 'leftMoney': u'剩余金额', 'cardBalance': u"刷卡后余额", "cardNo": u"支付卡号", "oldBatteryImei": u"放入电池", "newBatteryImei": u"取出电池", "chargeIndex1": u"放入端口号", "chargeIndex2": u"取出端口号", "pw": u"开锁密码", "stayTime": u"占位时间", "chargeType": u"收费模式", "port": u"使用端口", "exec_time": u"订单执行时间", "rechargeCode": u"续充动态码", "CODE": u"CODE", "masterOrderNo": u"关联主单号", "subOrderNo": u"关联子单号", "needElec": u"订购电量", "elecFee": u"电费", "elecCharge": u"电量费用", "serviceCharge": u"服务费用", "start": u"启动时间", "end": u"结束时间" } # 提现相关常量定义 # 经销商相关常量定义 REQUEST_ID_HEADER = 'HTTP_X_REQUEST_ID' class START_DEVICE_STATUS(IterConstant): RUNNING = 'running' PAYING = 'paying' FINISHED = 'finished' TIMEOUT = 'timeout' FAILURE = 'failure' Const.DEFAULT_TIME_FIELD_NAME = 'dateTimeAdded' class PARTITION_ROLE(IterConstant): """ 分账者的角色 """ OWNER = 'owner' # 被分账人 AGENT = 'agent' # 代理商 PARTNER = 'partner' # 合伙人 PLATFORM = 'platform' # 平台 class PARTITION_TYPE(IterConstant): """ 抽成的方式 一种是定额 另一种是百分比 """ PERCENT = "1" FIXED = "2" class DEVICE_INCOME_STRATEGY(IntEnum): AGENT_FIRST_LEDGER = 1 PARTNER_FIRST_LEDGER = 2 class INSURANCE_CATEGORY(StrEnum): CHARGE = "charge" # 充电险 STOLEN = "stolen" # 偷盗险 CYCLE = "cycle" # 骑行险 class AdType(IterConstant): INIT = 'init' PAY_AFTER = 'payAfter' BANNER = 'banner' TOPSHOW = 'topshow' class AdSpace(IterConstant): PAYAFTER = 'payAfter' TOPSHOW = 'topShow' BANNER = 'banner' class AdScriptType(IterConstant): INLINE = 'inline' REMOTE = 'remote' class MANAGER_EXPORT_EXCEL_TYPE(IterConstant): RECHARGE = 'charge' RECHARGE_CARD = 'chargeCard' class WECHAT_RESULT(IterConstant): SUCCESS = 'SUCCESS' FAIL = 'FAIL' class WECHAT_WITHDRAW_STATUS(IterConstant): UNKNOWN = 'UNKNOWN' PROCESSING = 'PROCESSING' SUCCESS = 'SUCCESS' FAILED = 'FAILED' BANK_FAIL = 'BANK_FAIL' Const.CMD_CMD_TRANSLATE_DICT = { '201': u'查询设备信息', '202': u'设置设备参数', '203': u'支付指令', '206': u'停止设备', '207': u'设备主动上报心跳数据', '210': u'操作设备指令', '211': u'设备必须回复服务器的指令', '199': u'回应设备消息', '220': u'回应设备消息,但是不需要设备响应', '100': u'设备上报事件', '110': u'设备上报告警', '120': u'设备上报故障', '130': u'设备上报功率', '301': u'水控设备上报查询卡余额', '302': u'水控设备上报消费单数据', '303': u'水控设备充值', '306': u'下发参数设置', } Const.CMD_PARAS_TRANSLATE_DICT = { 'IMEI': u'设备编号', 'imsi': u'SIM卡的imsi', 'iccid': u'SIM卡的iccid', 'hw_ver': u'硬件版本', 'soft_ver': u'软件基础版本', 'driverCode': u'驱动类型编码', 'driverVersion': u'驱动版本', 'coin': u'投币统计', 'signal': u'信号值', 'duration': u'使用时长', } Const.CMD_DATA_TRANSLATE_DICT = { 'status': u'状态', 'port': u'端口', 'reason': u'原因', 'leftTime': u'剩余时间', 'elec': u'电流/电量', 'FaultCode': u'故障编码', 'cardNo': u'卡号', 'preFee': u'预付款', 'oper': u'操作编码', 'needTime': u'订购时间', 'consumeType': u'消费方式', 'coins': u'金币', 'coin': u'投币数', 'money': u'钱', 'mobilePrice': u'移动支付使用价格', 'mobileTime': u'移动支付使用时间', 'mobileOnsale': u'移动支付使用折扣', 'icPrice': u'IC卡使用价格', 'icTime': u'IC卡使用时间', 'coinPrice': u'投币使用价格', 'coinTime': u'投币使用时间', 'orderNo': u'订单号', 'orderSequance': u'订单序号', 'duration': u'使用时长', 'balance': u'余额', 'finishedTime': u'结束时间', } Const.ZHEJIANG_PRODUCER_CODE = 88888888 Const.ZHEJIANG_EVENT_TYPE_DICT = {'100202': {'03': '502', '0B': '502'}, '100204': {'03': '502', '0B': '502'}, '100210': {'03': '502', '0B': '502'}, '100216': {'04': '502', '05': '502'}, '100228': {'11': '301', '12': '302'}, '100205': {'08': '501', '03': '599'}, '100206': {'0B': '599'} } Const.YUHUAN_PORT_OVERLOAD = '97' Const.YUHUAN_PORT_OVERLOAD_RECOVERY = '98' Const.YUHUAN_OFFLINE = '99' Const.YUHUAN_ONLINE = '100' Const.YUHUAN_EVENT_TYPE_DICT = {'100205': { '01': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电器故障,暂时无法充电,待恢复'}, '02': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'设备功率过载,待恢复'}, '03': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电桩电源故障,待恢复'}, '97': {'ftype': 'G44B3', 'fisok': '0', 'fhandlmemo': u'充电端口功率过载,系统会自动断电保护'}, '98': {'ftype': 'G44BC', 'fisok': '1', 'fhandlmemo': u'充电端口功率过载,系统自动结束充电'}, '99': {'ftype': 'G4436', 'fisok': '0', 'fhandlmemo': u'设备掉线,待检查恢复'}, '100': {'ftype': 'G4437', 'fisok': '1', 'fhandlmemo': u'设备恢复上线'} }, '100210': { '01': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电器故障,暂时无法充电,待恢复'}, '02': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'设备功率过载,待恢复'}, '03': {'ftype': 'G44B4', 'fisok': '0', 'fhandlmemo': u'充电桩电源故障,待恢复'}, '97': {'ftype': 'G44B3', 'fisok': '0', 'fhandlmemo': u'充电端口功率过载,系统会自动断电保护'}, '98': {'ftype': 'G44BC', 'fisok': '1', 'fhandlmemo': u'充电端口功率过载,系统自动结束充电'}, '99': {'ftype': 'G4436', 'fisok': '0', 'fhandlmemo': u'设备掉线,待检查恢复'}, '100': {'ftype': 'G4437', 'fisok': '1', 'fhandlmemo': u'设备恢复上线'} }, } # sim卡只允许主账号充值 Const.MAIN_MENU_LIST = { 'device_reg': True, 'device_management': True, 'business_stats': True, 'order_query': True, 'remote_upper': True, 'payoff_recharge': True, 'user_management': True, 'marketing': True, 'payoff_activity': True, 'card_management': True, 'sim_card': True, 'user_feedback': True, 'support_alarm': False, 'user_identify': False, 'stock_management': False, 'batteryManager': False, 'templateManager': False, 'apiManager': False, 'disableAdManager': False,'interconnection':False } Const.HOME_PAGE_DATA_LIST = { 'today_income': True, 'today_pay_income': True, 'today_ad_income': False, 'offline_coins': False } Const.ORDER_VERSION = '200' Const.TOPIC_WITH_SID_VERSION = '150' Const.MAINTENANCE_DAYS = 365 * 3 Const.KUAIDI_API_APPCODE = '8296fcd952e34713ba91fbdceb13e915' Const.DEFAULT_ADDR = u'湖北武汉光谷物联港1号楼A座1912-14' Const.DEFAULT_NAME = u'陈先生' Const.DEFAULT_TELNO = u'18963981712' Const.TESTER_DEFAULT_FEATURES = ['binding_device', 'binding_detection', 'manual_test_device', 'test_bluetooth_device', 'configuration_driver', 'unbind_device', 'manual_test_serial_device', 'test_history', 'testing_report'] class FEEDBACK_TYPE(IterConstant): FAULT = 'fault' REFUND = 'refund' UPPER = 'upper' class ErrorCode(IterConstant): SUCCESS = 0 # 设备操作错误码 -1 - 100 DEVICE_SUCCESS = 0 DEVICE_CONN_FAIL = -1 # 消息发送无响应 BOARD_UART_TIMEOUT = 1 # 串口发送无响应, 设备忙 BOARD_FAULT = 2 # 和主板通讯未建立 DEVICE_ORDER_IS_RUNNING = 3 # 订单正在运行 PARAMETER_ERROR_TO_BOX = 5 # 和模块通讯参数无效 IC_RECHARGE_FAIL = 6 # IC充值失败 START_DEVICE_FAILURE = 7 # 启动设备失败 NOT_CONNECT = 8 # 充电器未接上导致设备失败(和动插座协议不完善 只有下发了启动指令才能知道到底是否连接 这个应该是数据业务错误 没办法先加到这里) CHARGE_MODE_ERR = 93 # 充电模式错误 PULSE_IS_CLOSE = 94 # 脉冲功能未启动 PORT_IS_USED = 95 # 端口已经被占用 DEVICE_SYSTEM_ERROR = 96 # 模块系统错误. 代码有问题,能够侦测到的错误 CMD_IS_DOING = 97 # 命令正在处理 ORDER_IS_EXIST = 98 # 订单已经存在 ORDER_IS_FULL = 99 # 模块未确认订单达到最大数 PORT_NO_LOAD = 100 # 充电端口空载 TEST_BUSY = 101 # 正在测试串口 NO_SUPPORT = 102 # 功能不支持 # device 50000-50999 DEVICE_CONN_CHECK_FAIL = 50000 DEVICE_START_CONN_FAIL = 50001 DEVICE_START_FAILURE = 50002 DEVICE_START_PACKAGE_ERROR = 50003 # system EXCEPTION = 101 AUTH_CODE_IS_NULL = 102 USER_STATE_IS_NOT_VALID = 103 AUTH_ERROR = 104 DEVICE_NO_AUTH = 105 PARAMETER_ERROR = 106 LOGIN_USER_IS_NULL = 107 MONI_AUTH_IS_NULL = 108 MONI_APP_IS_NULL = 109 LOGIN_VERIFY = 401 # user 1000-1999 NEED_SIM_RECHARGE = 1000 TOO_BIG_RECHARGE = 1002 CARD_NEED_BIND_GROUP = 1003 CARD_FORBID_CHARGE_GROUP = 1004 CARD_BIND_BY_SELF = 1005 CARD_BIND_BY_OTHER = 1006 # 订单相关 1101 - 1199 ORDER_CREATED = 1101 ORDER_RUNNING = 1102 ORDER_NEED_PAY = 1103 ORDER_PAYING = 1104 # dealer 2000-2999 # 自动提现设置 提现到微信但是没有绑定微信 AUTO_WITHDRAW_WECHAT_NOT_BIND = 2001 # 40000 - 40100 API_AUTH_ERROR = 40000 API_AUTH_DEVICE_ERROR = 40001 API_PARAMETER_ERROR = 40002 API_EXCEPTION = 40003 API_NO_DEVICE = 40004 API_ERROR_DEVICE_TYPE = 40005 class DeviceErrorCodeDesc(object): ErrorCodeDescMap = { ErrorCode.DEVICE_SUCCESS: u'成功', ErrorCode.DEVICE_CONN_FAIL: u'当前设备信号弱无响应,启动失败。本次操作没有扣除您的任何金币,您可以稍后重试或者试试附近其他设备。', ErrorCode.DEVICE_CONN_CHECK_FAIL: u'设备信号弱无法连接,请稍后扫码重试或者试试附近其他设备。', ErrorCode.DEVICE_START_CONN_FAIL: u'当前设备信号弱无响应,启动失败。本次操作没有扣除您的任何金币,您可以稍后重试或者试试附近其他设备。', ErrorCode.DEVICE_START_FAILURE: u'启动设备失败({})。本次操作没有扣除您的任何金币,您可以稍后重试或者试试附近其他设备。', ErrorCode.BOARD_UART_TIMEOUT: u'设备正在忙,无响应,您的金币还在,重试不需要重新付款,请试试其他线路,或者请稍后再试哦', ErrorCode.BOARD_FAULT: u'当前设备故障,建议您试试旁边其他设备', ErrorCode.DEVICE_ORDER_IS_RUNNING: u'订单正在运行', ErrorCode.PARAMETER_ERROR_TO_BOX: u'和模块通讯参数无效', ErrorCode.IC_RECHARGE_FAIL: u'IC充值失败', ErrorCode.START_DEVICE_FAILURE: u'启动设备失败', ErrorCode.ORDER_IS_EXIST: u'订单已经存在', ErrorCode.PORT_NO_LOAD: u'充电端口空载', ErrorCode.ORDER_IS_FULL: u'未确认订单达到最大数', ErrorCode.PORT_IS_USED: u'端口已经占用', ErrorCode.DEVICE_START_PACKAGE_ERROR: u'启动套餐参数错误' } @classmethod def get(cls, error_code): return cls.ErrorCodeDescMap.get(error_code, u'设备操作失败({})'.format(error_code)) class AD_TYPE(IterConstant): PRE_HOOK = 'preHook' INIT = 'init' PAY_AFTER = 'payAfter' class RECHARGE_CARD_TYPE(StrEnum): ID = 'ID' IC = 'IC' class FAULT_RECORD_STATUS(StrEnum): IGNORED = 'ignored' HANDLED = 'handled' INIT = 'init' RECOVERED = 'recovered' class FAULT_LEVEL(StrEnum): FATAL = 'fatal' CRITICAL = 'critical' NORMAL = 'normal' class TYPE_ADJUST_USER_VIRTUAL_CARD(StrEnum): DELETE = "delete" ADJUST_DAYS = "adjustTime" ADJUST_QUOTA = "adjustQuota" class FAULT_CODE(StrEnum): OFFLINE = 'OFFLINE' OFFLINE_RECOVERY = 'OFFLINE_RECOVERY' OVER_VOLTAGE = 'OVER_VOLTAGE' OVER_TEMPERATURE = 'OVER_TEMPERATURE' SMOKE = 'SMOKE' FIRE_ALARM = "FIRE_ALARM" MCU_REBOOT = 'MCU_REBOOT' # MCU重启 RELAY_FAULT = 'RELAY_FAULT' # 继电器故障 COUNTER_FAULT = 'COUNTER_FAULT' # 计量芯片故障 DEV_OVERLOAD = 'DEV_OVERLOAD' # 整机功率过载 COPY_CARD = 'COPY_CARD' # 复制卡告警 WAWAJI_WUMAHANG_NG = 'WAWAJI_WUMAHANG_NG' class MYUSER_GATEWAY(IterConstant): WECHAT = 'wechat' ALIPAY = 'alipay' WECHAT_MINI = 'wechat_mini' class MYUSER_SPACE_DIMENSION(IterConstant): DEALER = 'dealer' AGENT = 'agent' GROUP = 'group' Const.MoniMenus = { 'gerenzhongxin': '%2Fuser%2Findex.html%23%2Fuser%2Fme', 'dangqianfuwu': '%2Fuser%2Findex.html%23%2Fuser%2FdeviceStatus', 'changjianwenti': '%2Fuser%2Findex.html%23%2Fuser%2Fhelp', 'baogaolaoban': '%2Fuser%2Findex.html%23%2Fuser%2FfeedbackList', 'zhoubianshebei': '%2Fuser%2Findex.html%23%2Fuser%2Findex', 'toushushouli': '%2Fuser%2Findex.html%23%2Fcomplaint%2Flist' } class AppPlatformType(IterConstant): ALIPAY = 'alipay' WECHAT = 'wechat' PLATFORM = 'platform' WITHDRAW = 'withdraw' APP_PLATFORM_TYPE_TRANSLATION = { AppPlatformType.ALIPAY: u'支付宝', AppPlatformType.WECHAT: u'微信', # AppPlatformType.JD: u'京东', # AppPlatformType.WECHAT_MINI: u'微信小程序', AppPlatformType.PLATFORM: u'平台', # AppPlatformType.SWAP: u'互联互通' } class PollRecordDefine(object): DELAY_BEFORE = 30 # 同步订单任务启动延迟时间(秒) TASK_EXPIRES = 180 # 任务超时时间(秒) TOTAL_ROUNDS = 12 # 同步轮数 WAIT_EACH_ROUND = 10 # 每轮同步等待时间(秒) class SimStatus(StrEnum): Updated = 'updated' Charged = 'chargedUnupdated' Illegal = 'illegal' support_policy_weifule = [ Const.DEVICE_TYPE_CODE_WEIFULE_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC, Const.DEVICE_TYPE_CODE_WEIFULE_MINI_POLICY, ] support_policy_device = [ Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ, Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT, Const.DEVICE_TYPE_CODE_KE_HANG_POLICY, Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY, ] skip_package_params_verify_list = [ Const.DEVICE_TYPE_CODE_HP_GATE, Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU, Const.DEVICE_TYPE_CODE_CHARGING_WXLZ, Const.DEVICE_TYPE_CODE_WEIFULE_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC, Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ, Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY, Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT, Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE, ] # 跳过 套餐单位一致性 验证 skip_package_unit_verify_list = [ Const.DEVICE_TYPE_CODE_HESHUICHONGDIAN, Const.DEVICE_TYPE_CODE_HESHUI, Const.DEVICE_TYPE_CODE_CHONGDIAN, # 喝水充电的设备类型有不同单位的参数 Const.DEVICE_TYPE_CODE_WEIFULE_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC, Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ, Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY, Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT, Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE, Const.DEVICE_TYPE_CODE_CAR_CHANGING_JINQUE, Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW, Const.DEVICE_TYPE_CODE_CAR_WEIFULE_21KW_JFPG, Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_JFPG, Const.DEVICE_TYPE_CODE_CAR_WEIFILE_HOME_DOUB_JFPG, Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB, Const.DEVICE_TYPE_CODE_CAR_WEIFULE_CHARGING_DOUB_JFPG, Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR, Const.DEVICE_TYPE_CODE_CHARGE_WEIFULE_CAR_JFPG, Const.DEVICE_TYPE_CODE_CAR_NENGPAI ] # 跳过 套餐用户获得保留小数点后两位 验证 skip_package_range_verify_list = [ Const.DEVICE_TYPE_CODE_WEIFULE_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_2_POLICY, Const.DEVICE_TYPE_CODE_WEIFULE_POLICY_CLASSIC, Const.DEVICE_TYPE_CODE_CHARGING_POLICY_JNDZ, Const.DEVICE_TYPE_CODE_CHARGE_XIAOKEDOU_POLICY, Const.DEVICE_TYPE_CODE_CHARGING_DIANCHUAN_FT, ] # 通过经销商绑定的卡的初始OPENID Const.DEFAULT_CARD_OPENID = "anonymous" Const.QUERY_START_DATE = '2017-01-01' Const.POWER_PRICE_RULES = [ {'min': 0, 'max': 200, 'price': 0.2}, {'min': 200, 'max': 300, 'price': 0.4}, {'min': 300, 'max': 400, 'price': 0.6}, {'min': 400, 'max': 500, 'price': 0.8} ] class ComplaintResponseTemplate(IterConstant): COMMON_RESPONSE_CONTENT = u'您好,经核实您在 {}时在{}这台{}上支付一笔金额为 {}元的订单,订单编号为{}。目前已为您联系到这台自助设备的商家,请您拨打商家的电话{},反馈您遇到的设备问题。' COMMON_RESPONSE_CONTENT_2 = u'平台已为您联系到这台自助设备的老板,请您拨打老板的电话{},反馈您遇到的设备问题。您付款的金额被设备老板收走了,请您联系设备老板进行处理。' ERROR_RESPONSE_CONTENT = u'麻烦您联系一下平台客服13100704039或18271944902,反馈您遇到的支付问题,客服可以为您解决。' REAL_PROBLEM_RESPONSE_CONTENT = u'建议您联系一下设备老板 {},反馈您遇到的售后问题。如果您联系不到老板,麻烦联系平台客服13100704039或18271944902解决您遇到的售后问题。' REFUND_RESPONSE_CONTENT_1 = u'您好,经核实您启动的{}设备, 编号为{}。 该笔订单已经给您退币,时间为{}, 退币个数为{}个, 您下次使用设备的时候优先扣除金币, 不需要付款。(当前账户的余币数量在扫描设备二维码后的页面右上角可以看到)' REFUND_RESPONSE_CONTENT_2 = u'您好,经核实您启动的{}设备, 编号为{}。 该笔订单已经给您退款,时间为{}, 退款金额为{}元, 请注意查收。' REFUND_RESPONSE_CONTENT_3 = u'您好,经核实您启动的{}设备, 编号为{}。 启动设备失败! 该笔订单已经给您退还消费金币, 您下次使用设备的时候优先扣除金币, 不需要付款。(当前账户的余币数量在扫描设备二维码后的页面右上角可以看到)' NO_RECHARGE_RECORD_CONTENT = u'您好,平台未查询到您投诉的订单号,麻烦您联系平台客服13100704039或18271944902,并提供一下您的订单截图谢谢。' class MoniAppStatus(IntEnum): ADDING = 1 FULL = 2 APP_OVER = 3 ADMIN_STOP = 4 DAY_FULL_STOP = 5 class OneCardGateAction(object): ENTER = 1 OUT = 2 def choice(self): return [self.ENTER, self.OUT] Const.DB_BATCH_ROW_READ = 5000