def onMessage(self,data,isBinary): #send back what the server received #self.sendMessage(data,isBinary) if not isBinary : # isBinary==False <=> bytes string data = data.decode('utf-8') # '$$'是结束标识符 if ( data=='$$' ): self.transport.loseConnection() #=============接收用户信息数据(建立连接)——res_Info和res_state============ if not self.start_operator : try: data = json.loads(data) # 接收到的是一个json字符串 #是res_state if (tuple(data.keys())[0] == 'code' or tuple(data.keys())[1]=='code'): self.res_state = data #使用它来获取session_key param['js_code'] = self.res_state['code'] res = requests.post(url,data=param) try: text = json.loads(res.text) self.session_key = text['session_key'] self.openid = text['openid'] except Exception as err: print('error2.................') print(err) #是res_Info else: self.res_info = data #=================数据接收完毕=========================== #received finished if (self.res_state != '' and self.res_info !=''): self.start_operator = True # 下次开始就是操作了 self.user_info_received() # 调用 当接收完数据时需要触发的函数 except Exception as err: print('error3.................') print(err) else: # 当已经接收完毕的时候,执行wx发来的请求操作 operation, value = data.split(':') print(operation,value) # debug print=>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>操作和值 # 操作一:================充值操作=========================== if operation == 'addMoney': value = float(value) self.balance = self.balance + value print(self.balance) #=>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>剩余金额 if update_user_data(self.openid,'balance',self.balance): print('充值成功!') else: print('充值失败!') msg = {} msg['balance'] = self.balance msg['header'] = 'balance' #发送给微信一个Json字符串,表示充值信息 self.sendMessage(json.dumps(msg).encode()) # 操作二:=============预订车位操作============================ elif operation == 'carID': value = int(value) if self.balance >= 0 : if eval(search_from_ps_db(value,'occupied')) == True: # 已经被占 # 看看是不是这个用户占的 if value == search_ucs_openId_to_carID(self.openid,'carID'): #是这个用户占的 self.carID = value else: #不是这个用户占的 self.carID = -1 else: #-------没有被占, 说明可以预订!----------- self.carID = value #-------是否存在僵尸用户(扫了码不停车)------ pre_openid = search_ucs_carID_to_openId(self.carID,'openId') if pre_openid : # 存在 self.delete_ghost_user() # 删除僵尸用户 # 微信端避免了同一用户多次扫码情况... #---------空车位被占,数据更新操作------------ self.cur_state = 1 # 状态更新为1 => 下了单但没停车 else:# 余额不足 self.carID = -2 #****建立映射关系***** if self.carID>0: carID_to_Wx[self.carID] = self #******************* #===============给wx发送carID================= msgs = {} msgs['carID'] = self.carID msgs['header'] = 'carID' self.sendMessage(json.dumps(msgs).encode()) # 预订一个车位 self.reserve_parking_space() # 预订一个车位 # 操作三:================询问当前时间======================= elif operation == 'askTime': start_t = search_from_user_db(self.openid,'start_time') # 不是'-'并且不是None if start_t != '-' and start_t : last_t = time_tool.time_subtract(start_t, time_tool.get_Current_Time() ) msg = {} msg['header'] = 'last_time' msg['last_time'] = last_t msg = json.dumps(msg) self.sendMessage(msg.encode()) print('last_time信息发送成功...') # 操作四:================历史订单======================== elif operation == 'askOrder': result = get_history_orders(self.openid) if result: res = {} res['header'] = 'his_order' res['len'] = len(result) order_list = ['start_time','stop_time','cost','last_time'] cnt = 1 for e in result: #print('e:',e) #print(type(e)) #print('order:',order_list) assert len(e)==len(order_list) elem = {} for k,v in zip(order_list,e): elem[k] = v res[cnt] = elem cnt = cnt + 1 print(res) res = json.dumps(res) self.sendMessage(res.encode()) print('历史订单发送成功!') else: print('没有用户信息')
def Fill(self,carID): self.carID = carID self.openning = eval(search_from_ps_db(carID,'openning')) self.occupied = eval(search_from_ps_db(carID,'occupied'))
else: print('充值失败!') msg = {} msg['balance'] = self.balance msg['header'] = 'balance' #发送给微信一个Json字符串,表示充值信息 self.sendMessage(json.dumps(msg).encode()) # 操作二:=============预订车位操作============================ elif operation == 'carID': value = int(value) <<<<<<< HEAD if self.balance > 0 : ======= if self.balance >= 0 : >>>>>>> 4af6067e442ce1217930abd63a62a1d757df1851 if eval(search_from_ps_db(value,'occupied')) == True: # 已经被占 # 看看是不是这个用户占的 if value == search_ucs_openId_to_carID(self.openid,'carID'): #是这个用户占的 self.carID = value else: #不是这个用户占的 self.carID = -1 else: #-------没有被占, 说明可以预订!----------- self.carID = value #-------是否存在僵尸用户(扫了码不停车)------ pre_openid = search_ucs_carID_to_openId(self.carID,'openId') if pre_openid : # 存在 self.delete_ghost_user() # 删除僵尸用户