tornado pyquery bootstrap简单的内部点餐用(增加:从html文本中获取所需外卖商品的方法的),,#! /usr/bin/


#! /usr/bin/env python# -*- coding: utf-8 -*-import osimport timeimport tornado.httpserverimport tornado.ioloopimport tornado.optionsimport tornado.webimport torndbimport randomimport sysfrom tornado.escape import json_encodefrom tornado.options import define,optionsdefine("port", default=9000, help="run on the given port", type=int)define("mysql_host",default="127.0.0.1:3306",help="database host")define("mysql_database",default="diancan",help="diancanle database name")define("mysql_user",default="root",help="diancanle database user")define("mysql_password",default="123456",help="diancanle database password")class Application(tornado.web.Application):    def __init__(self):        handlers = [            (r"/", ShopListHandler), #外卖店列表页面            (r"/auth/register", AuthRegisterHandler),#注册页面            (r"/auth/login", AuthLoginHandler), #登录叶面            (r"/food_list/(\d+)", FoodListHandler), #选择外卖店后的进入的该外卖店的商品列表页面            (r"/FoodListSubmitHandler", FoodListSubmitHandler),#处理顾客选择某个商品后的提交            (r"/admin",AdminHanlder),                        #管理员对外卖店和商品管理的页面            (r"/admin/add_shop_info",AdminAddShopHandler),            (r"/admin/add_shop_good",AdminAddShopGoodHandler),            (r"/admin/start_diancan",AdminStartDiancanInfoHandler),            (r"/admin/get_diancaninfo",AdminGetDiancanInfoHandler),            (r"/admin/stop_diancan",AdminStopDiancanHandler),            (r"/admin/search_order_his",AdminSearchOrderHisHandler),        ]        settings = dict(            template_path=os.path.join(os.path.dirname(__file__),"template"),            static_path=os.path.join(os.path.dirname(__file__),"static"),            # xsrf_cookies=True,            cookie_secret="thisisdiancanle",            login_url="/auth/login",            debug=True        )        tornado.web.Application.__init__(self,handlers,**settings)class BaseHandler(tornado.web.RequestHandler):    def get_current_user(self):        return self.get_secure_cookie("user_id")class AuthRegisterHandler(BaseHandler):    def get(self):        self.render("register.html",warn_info="")    def post(self):        user_mail = self.get_argument("user_mail")        user_passwd = self.get_argument("user_passwd")        db = torndb.Connection('127.0.0.1','dinning','root','123456')        select_sql = "SELECT * FROM user WHERE USER_NAME = '%s' and user_passwd = '%s'"%(user_mail,user_passwd)        query_resutl = db.get(select_sql)        if query_resutl is not None:            self.render("register.html",warn_info="请填写正确的信息")            return        sql_add_new_user = "insert into user(user_name,user_passwd,type) VALUE('%s','%s',%d)"%(user_mail,user_passwd,1)        db.execute(sql_add_new_user)        self.set_secure_cookie("user_id",user_mail)        self.redirect("/")class AuthLoginHandler(BaseHandler):    def get(self):        self.render("login.html",warn_info="")    def post(self):        user_mail = self.get_argument("user_mail")        user_passwd = self.get_argument("user_passwd")        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        select_sql = "select * from user where user_name = '%s' and user_passwd = '%s'"%(user_mail,user_passwd)        query_result = conn.get(select_sql)        if query_result is None:            self.render("login.html",warn_info="请输入正确的信息")            return ;        self.set_secure_cookie("user_id",user_mail)        self.redirect('/')class ShopListHandler(BaseHandler):    @tornado.web.authenticated    def get(self):        recommend_food_cur_list = [u"西红柿炒蛋",u"春笋炒肉",u"红烧狮子头"];        #推荐商店的名称、商店热门商品、总销量        # recommend_shop_list = [        #     ("杭州老娘舅","鱼香肉丝","1000","/food_list/1000"),        #     ("麦当劳","汉堡","900","/food_list/1001"),        #     ("五号便当","土豆丝","800","/food_list/1002"),        #     ("德克士","可乐","901","/food_list/1003"),        #     ("味捷外卖","红烧狮子头","1002","/food_list/1004")        # ]        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        select_sql = "select shop_id,shop_name,shop_image from shop"        select_result = conn.query(select_sql)        recommend_shop_list = [];        for item in select_result:            recommend_shop_list.append((item.shop_name,"/food_list/" + str(item.shop_id),item.shop_image))        # recommend_shop_list = [        #     ("杭州老娘舅","/food_list/1000"),        #     ("麦当劳","/food_list/1001"),        #     ("五号便当","/food_list/1002"),        #     ("德克士","/food_list/1003"),        #     ("味捷外卖","/food_list/1004")        # ]        self.render("shop_list.html",                    # recommend_shop_name_cur="味捷外卖",                    # recommend_shop_descrition_cur="中国餐饮外卖行业领导者",                    # recommend_food_cur_list=recommend_food_cur_list,                    recommend_shop_list=recommend_shop_list                    # recommend_shop_name=u"杭州老娘舅",                    # hot_sell_food=u"杭州老娘舅",                    # hot_sell_sum=1009        )class FoodListHandler(BaseHandler):    @tornado.web.authenticated    def get(self,shop_id):        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        select_shop_name_sql = "select distinct shop_name from shop where shop_id = '%s'" %(shop_id);        select_shop_name_result = conn.get(select_shop_name_sql);        try:            shop_name_temp = select_shop_name_result['shop_name']        except:            self.redirect('/')            return        select_sql = "select food_id,food_name,food_img from shop_food where shop_id = '%s'"%(shop_id)        print select_sql        select_result = conn.query(select_sql)        food_list = []        for item in select_result:            food_list.append((item.food_name,item.food_id,item.food_img))        self.render("food_list.html",food_page_title=shop_name_temp,food_list=food_list)    # def post(self):    #     self.write("test")    #     # food_name = self.get_argument("food_name")    #     # self.write(food_name)class FoodListSubmitHandler(BaseHandler):    @tornado.web.authenticated    def post(self):        status_success = {            "status":True,            "value":1        }           status_error = {            "status":False,            "value":2        }        status_shop_error = {            "status":False,            "value":3,            "shop_name_should":""        }        shop_name = self.get_argument('shop_name')        food_name = self.get_argument('food_name')        food_id = self.get_argument('food_id')        user_name = self.get_secure_cookie("user_id")        conn = torndb.Connection('127.0.0.1','dinning','root','123456')         select_user_cur_order="select count(*) as num from order_cur where user_name = '%s' " % user_name        select_user_cur_order_result = conn.get(select_user_cur_order)        print select_user_cur_order_result        select_shop_name = "select shop_name from order_cur where user_name = 'test' "          select_shop_name_result = conn.get(select_shop_name)        try:            shop_name_should = select_shop_name_result["shop_name"]        except:            status_error["value"]=4            self.write(json_encode(status_error))            return        if shop_name_should != shop_name:            status_shop_error["shop_name_should"] = shop_name_should            self.write(json_encode(status_shop_error))            return          if select_user_cur_order_result["num"] == 0:            insert_cur_user_order_cur = "insert into order_cur(order_id,user_name,food_name,shop_name) value ('%s','%s','%s','%s')"% \               (str(random.randint(1,1000000)),user_name,food_name,shop_name);            print insert_cur_user_order_cur            try:                conn.execute(insert_cur_user_order_cur)            except:                self.write(json_encode(status_error))                return        else:            update_cur_user_order_cur = "update order_cur set food_name = '%s' where user_name = '%s'" %(food_name,user_name)            print update_cur_user_order_cur                     try:                conn.execute(update_cur_user_order_cur)            except:                self.write(json_encode(status_error))                return        self.write(json_encode(status_success))class AdminHanlder(BaseHandler):    @tornado.web.authenticated    def get(self):        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        select_shop = "select distinct shop_name FROM shop"        list = conn.query(select_shop)        shop_list = []        shop_list_search = []        for item in list:            shop_list.append(item.shop_name)            shop_list_search.append(item.shop_name)        shop_list_search.append("全部")        user_list_search = []        select_user_sql = "select user_name from user"        select_user_list = conn.query(select_user_sql)        for user_item in select_user_list:            user_list_search.append(user_item.user_name)        user_list_search.append("全部")        self.render("admin.html",shop_list=shop_list,order_list=[],                    shop_list_search=shop_list_search,user_list_search=user_list_search)class AdminAddShopHandler(BaseHandler):    def post(self):        status_success = {            "status":True,            "value":1        }           status_error = {            "status":False,            "value":2        }        shop_name = self.get_argument('shop_name')        shop_addr = self.get_argument('shop_addr')        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        add_shop_sql = "insert into shop(shop_name,shop_addr) VALUE ('%s','%s')"%(shop_name,shop_addr)        try:            conn.execute(add_shop_sql)        except:            self.write(json_encode(status_error))            return             self.write(json_encode(status_success))class AdminAddShopGoodHandler(BaseHandler):    def post(self):        status_success = {            "status":True,            "value":1        }        status_error = {            "status":False,            "value":2        }                shop_name = self.get_argument('shop_name')        shop_food = self.get_argument('shop_food')        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        get_shop_addr = conn.get("select shop_id,shop_addr from shop where shop_name = '%s'" %(shop_name))        add_shop_sql = "insert into shop_food(shop_id,shop_name,shop_addr,food_name) VALUE \            ('%d','%s','%s','%s')"%(get_shop_addr["shop_id"],shop_name,get_shop_addr['shop_addr'],shop_food)        print add_shop_sql        try:            conn.execute(add_shop_sql)        except:             self.write(json_encode(status_error))             return        self.write(json_encode(status_success))class AdminStartDiancanInfoHandler(BaseHandler):    def post(self):        status_success = {            "status":True,            "value":1        }        status_error = {            "status":False,            "value":2        }                try:            shop_name = self.get_argument('shop_name')            except:            self.write(json_encode(status_error))            print "here is called"            return        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        add_order_cur_sql = "insert into order_cur(order_id,user_name,food_name,shop_name) VALUE \            ('%s','%s','%s','%s')"%(0,"test","test_food",shop_name)        print add_order_cur_sql        try:            conn.execute(add_order_cur_sql)        except:             self.write(json_encode(status_error))             return        self.write(json_encode(status_success))class AdminGetDiancanInfoHandler(BaseHandler):    def post(self):        status_success = {            "status":True,            "shop_name":"",            "result_list":[]        }        status_error = {            "status":False,            "shop_name":"",            "result_list":[]        }# {"user_name":"user_name1","food_name":"food_name1"},# {"user_name":"user_name2","food_name":"food_name2"},        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        select_order_cur_shop_name_sql = "select distinct shop_name from order_cur where user_name != 'test'"        select_order_cur_shop_name_result = conn.get(select_order_cur_shop_name_sql)        try:            shop_name = select_order_cur_shop_name_result["shop_name"]        except:            print "order cur is empty"            return;        status_success["shop_name"] = shop_name        status_error["shop_name"] = shop_name        select_order_cur = "select user_name ,food_name from order_cur where user_name != 'test'"        select_order_list = conn.query(select_order_cur)        for item_order in select_order_list:            status_success["result_list"].append(item_order)        if len(status_success["result_list"]) == 0:            self.write(status_error)            return        self.write(status_success)class AdminStopDiancanHandler(BaseHandler):    def post(self):        # shop_name = self.get_argument('shop_name')        # shop_addr = self.get_argument('shop_addr')        conn = torndb.Connection('127.0.0.1','dinning','root','123456')        order_cur_select = "select order_id ,user_name,food_name,shop_name from order_cur where user_name != 'test'"        order_cur_list = conn.query(order_cur_select)        for order_cur_item in order_cur_list:             order_his_insert = "insert into order_his(order_id,user_name,food_name,shop_name) value('%s','%s','%s','%s')"% \                (order_cur_item.order_id,order_cur_item.user_name,order_cur_item.food_name,order_cur_item.shop_name)              print order_his_insert            conn.execute(order_his_insert)        delete_order_cur = "delete from order_cur";        conn.execute(delete_order_cur);        self.redirect('/admin')class AdminSearchOrderHisHandler(BaseHandler):    def post(self):        pass        # result = {        #     "errorid":"0"        # }        # shop_name = self.get_argument("shop_name")        # user_name = self.get_argument("user_name")        # search_date_start = self.get_argument("start_date")        # search_date_end = self.get_argument("end_date")        # print shop_name,user_name,search_date_start,search_date_end        #        # search_sql = "SELECT user_name,food_name,shop_name,order_time FROM order_his where user_name = '%s'" \        #              " and shop_name = '%s' and order_time > '%s' and order_time < '%s'" %\        #              (user_name,shop_name,search_date_start,search_date_end);        # conn = torndb.Connection('127.0.0.1','dinning','root','123456')        # conn.get(search_sql);        #        # self.write(json_encode(result))if __name__ == '__main__':    reload(sys)    sys.setdefaultencoding('utf8')    tornado.options.parse_command_line()    http_server = tornado.httpserver.HTTPServer(Application())    http_server.listen(options.port)    tornado.ioloop.IOLoop.instance().start()

评论关闭