Пример #1
0
    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('没有用户信息')
Пример #2
0
 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'))
Пример #3
0
                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()  # 删除僵尸用户