Beispiel #1
0
 def reserve_parking_space(self):
     if (self.carID < 0):
         return 
     #==================状态更新===================
     self.cur_state = 1  # 下了单但未停车
     update_parking_data(self.carID, 'openning',True)    # 车位可用
     insert_ucs_data(self.openid,self.carID)             # 建立映射关系
     update_user_data(self.openid,'cur_state',self.cur_state) # 状态变为预订没停车
Beispiel #2
0
    def carLeave(self):
        #wx_user = carID_to_Wx[self.carID]
        openid = search_ucs_carID_to_openId(self.carID,'openId')  # 获取openid
        if openid is None:
            self.raise_error()
            return 

        #=====计算时间======
        stop_Time = time_tool.get_Current_Time()
        sec = time_tool.time_subtract(self.start_time, stop_Time) # 获取持续时间
        cost_money = self.cal_Cost(sec)    #根据持续时间计算费用
        #wx_user.balance = wx_user.balance - cost_money
        balance = search_from_user_db(openid,'balance')
        balance = balance - cost_money
        #==================

        #=====给wx发消息=====
        msg = {}
        msg['header'] = 'timer_stop'
        msg['cost'] = cost_money
        msg['last_time'] = sec
        msg['current_time'] = stop_Time
        msg['current_money'] = balance
        msg = json.dumps(msg)

        user_state = 0 # 订单完成
        try:
            print(carID_to_Wx[self.carID].Data['userInfo']['nickName'],'还活着')
            carID_to_Wx[self.carID].sendMessage(msg.encode())
            print('%d号车位已空...' % self.carID)
        except Exception as err:
            # ++++++++++++++++和用户的连接断开了++++++++++++++++
            user_state = 3 # 订单完成但没发数据
            print('和用户连接断开...发送订单完成信息失败')
            # ++++++++++++++++++存入数据库++++++++++++++++++++
            
            
        #==================

        #=====注意,更新状态的时候,记得改变用户的状态->cur_state+++++++
        #=====更新状态=======

        #-----order状态------
        update_orders_data(openid,self.start_time,'cur_state',user_state)
        update_user_data(openid,'cur_state',user_state)
        print('cur_state更新成功为',user_state)
        update_orders_data(openid,self.start_time,'stop_time',stop_Time)
        update_orders_data(openid,self.start_time,'last_time',sec)
        update_orders_data(openid,self.start_time,'cost',cost_money)
        #-------------------

        a=update_user_data(openid, 'balance',balance) #更新余额
        b=delete_ucs_data(openid) # 删除user to carspace 的映射关系
        c=update_user_data(openid , 'start_time', '-') # 用户开始时间为'-',说明未使用
        d=update_parking_data(self.carID,'start_time','-') # 车位开始时间变为'-'
        e=update_parking_data(self.carID,'openning',False) # 关闭可用状态
        f=update_parking_data(self.carID,'occupied',False) # 车位变为空
Beispiel #3
0
    def carCome(self):
        if self.openning:
            openid = search_ucs_carID_to_openId(self.carID, 'openId')
            if openid is None:
                self.raise_error()
                return

            #========开始计时=======
            self.start_time = time_tool.get_Current_Time()
            #======================

            #========给wx发消息======
            msg = {}
            msg['header'] = 'timer_start'
            msg['time'] = self.start_time
            msg = json.dumps(msg)
            try:
                print(carID_to_Wx[self.carID].Data, '还活着')
                carID_to_Wx[self.carID].sendMessage(msg.encode())
                carID_to_Wx[self.carID].cur_state = 2
                print('%d号车位被占...' % self.carID)
            except Exception as err:
                print(err)
                print('和wx用户连接断开...')
                #+++++++++和微信的连接断开了+++++++++++
                pass
                #+++++++++++++++++++++++++++++++++++

            #=======================

            # 注意。 记得更新用户的状态信息-> cur_state++++++++
            #=======更新状态========
            order_data = self.get_order_json(openid)  # 获取一个order_json数据
            a = insert_orders_data(order_data)  # 在订单中插入一条
            print(order_data)
            print(a)
            update_user_data(openid, 'cur_state', 2)  # 正在停车状态
            update_parking_data(self.carID, 'start_time',
                                self.start_time)  # 更新车位数据库的开始时间
            update_user_data(openid, 'start_time',
                             self.start_time)  # 更新用户计时的开始时间
            update_parking_data(self.carID, 'occupied', True)  # 车位被占
            #======================
        else:
            print('有人非法占领车位!!!!!!!!!!!!!!!!!!!')
Beispiel #4
0
        
        #print(a,b,c,d,e)
=======
        update_orders_data(openid,self.start_time,'cur_state',user_state)
        update_user_data(openid,'cur_state',user_state)
        print('cur_state更新成功为',user_state)
        update_orders_data(openid,self.start_time,'stop_time',stop_Time)
        update_orders_data(openid,self.start_time,'last_time',sec)
        update_orders_data(openid,self.start_time,'cost',cost_money)
>>>>>>> 4af6067e442ce1217930abd63a62a1d757df1851
        #-------------------

        a=update_user_data(openid, 'balance',balance) #更新余额
        b=delete_ucs_data(openid) # 删除user to carspace 的映射关系
        c=update_user_data(openid , 'start_time', '-') # 用户开始时间为'-',说明未使用
        d=update_parking_data(self.carID,'start_time','-') # 车位开始时间变为'-'
        e=update_parking_data(self.carID,'openning',False) # 关闭可用状态
        f=update_parking_data(self.carID,'occupied',False) # 车位变为空
        #print(a,b,c,d,e,f)   #  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>情况
        #==================

    #====================车开来了=============================
    # 若合法: 1.开始计时 2.给微信发消息 3.更新状态
    # 若非法: 给当地管理员发送预警
    def carCome(self):
        if self.openning :
            openid = search_ucs_carID_to_openId(self.carID,'openId')
            if openid is None:
                self.raise_error()
                return