Example #1
0
def pro_oper4(pros, users, orders, sign):
    try:
        pro_id = int(input("请输入要查询的商品编号:"))
    except ValueError:  # 明确捕获ValueError
        # print(traceback.format_exc())
        print("商品编号输入有误,应输入数字!")
        showProMgrView(pros, users, orders, sign)
    except:
        print("发现未知异常")
        print(traceback.format_exc())

    selt = select_product(pro_id)  # 查询商品返回一个有两值得列表:[[布尔值][对象]]
    if selt[0]:
        selt[1].show_pro()

        # print("商品编号:%d" % lists.pro_id)
        # print("商品名称:%s" % lists.pro_name)
        # print("商品价格:%f" % lists.pro_price)
        # print("商品数量:%d" % lists.pro_num)
        print("1.继续查询 2.返回")
        op = input()
        if op == '1':
            pro_oper4(pros, users, orders, sign)
        elif op == '2':
            showProMgrView(pros, users, orders, sign)
        else:
            print("输入错误!返回商品管理界面!")
            showProMgrView(pros, users, orders, sign)
    else:
        print("查询失败!")
def process_product_requst(clientSocket, data):
    print("product线程体")
    if data[1] == "remove_product":
        # 验证用户账户和密码

        result = remove_product(data[2].pro_id)

        clientSocket.send(pickle.dumps((result)))
        return
    if data[1] == "get_all_pros":
        # 获取缓存

        products = get_all_pros()

        clientSocket.send(pickle.dumps((products)))
        return
    if data[1] == "select_product":
        # 查询商品

        result, product = select_product(data[2].pro_id)

        clientSocket.send(pickle.dumps((result, product)))
        return
    if data[1] == "update_product":
        # 更新商品

        result = update_product(data[2])

        clientSocket.send(pickle.dumps((result)))
        return
    if data[1] == "add_product":
        # 添加商品

        result = add_product(data[2])

        clientSocket.send(pickle.dumps((result)))
        return
    if data[1] == "select_new_pro":
        # 查询最新添加的数据

        product = select_new_pro()

        clientSocket.send(pickle.dumps((product)))
        return
Example #3
0
def show_order_main_view(pros, users, orders, sign):
    print("==============订单主界面==============")
    print("=====================订单列表=================")
    # 获取牌所有订单
    if pros != None:
        for order_lists in orders:
            order_lists.show_order()
    print("=====================订单列表=================")
    print("请选择操作:1.VIP下单 2.删除订单 3.修改订单 4订单详情5.退出系统 6.返回")
    order_oper = input()
    if order_oper == "1":
        print("VIP下单")

        try:
            user_id = int(input("请输入用户编号:"))
            pro_id = int(input("请输入商品编号:"))
            buy_num = int(input("请输入购买数量:"))
            address = input("请输入收货地址:")
        except ValueError:  # 明确捕获ValueError
            # print(traceback.format_exc())
            print("输入有误,应输入数字!")
            show_order_main_view(pros, users, orders, sign)
        except:
            print("发现未知异常")
            print(traceback.format_exc())

        selt = select_product(pro_id)  # 在数据库去寻找这个商品
        if not selt[0]:
            print("不存在这个商品编号!")
            show_order_main_view(pros, users, orders, sign)
        if selt[1].pro_num < buy_num:
            print("购买商品数量过大,剩余库存:%d" % selt[1].pro_num)
            show_order_main_view(pros, users, orders, sign)

        uselt = select_user(user_id)  # 查询是否存在这个用户编号
        if not uselt[0]:
            print("不存在这个用户编号!!!")
            show_order_main_view(pros, users, orders, sign)

        order_new = Order(1, user_id, pro_id, buy_num, address, 'A', None)
        sadd = add_order(order_new)
        if not sadd:
            print("订单添加失败!")
        else:
            print("订单添加成功")
            # 向数据库查询该表的最后一条数据的编号,也就是我们刚刚添加的数据
            order = select_new_order()
            order = Order(order.order_id, order.user_id, order.pro_id,
                          order.buy_num, order.address, order.order_stat,
                          order.order_time)
            orders.append(order)  # 更新订单缓存

            # 更新数据库的商品信息
            selt[1].pro_num = selt[1].pro_num - buy_num  # 更新库存余量
            pro = Product(selt[1].pro_id, selt[1].pro_name, selt[1].pro_price,
                          selt[1].pro_num)
            update_product(pro)
            # 更新商品缓存
            for pro in pros:  # 更新缓存中的商品数量
                if pro.pro_id == pro_id:
                    pro.pro_num -= buy_num
    elif order_oper == "2":
        print("删除订单")

        try:
            order_id = int(input("请输入要删除的订单编号:"))
        except ValueError:  # 明确捕获ValueError
            # print(traceback.format_exc())
            print("订单编号输入有误,应输入数字!")
            show_order_main_view(pros, users, orders, sign)
        except:
            print("发现未知异常")
            print(traceback.format_exc())

        selt = select_order(order_id)  # 查询这个订单数据,返回(bool,数据)

        if not selt[0]:
            print("找不到这个订单!!!")
            show_order_main_view(pros, users, orders, sign)

        sdel = remove_order(order_id)  # 删除订单
        if not sdel:
            print("删除订单失败!")
            show_order_main_view(pros, users, orders, sign)
        else:
            print("删除订单成功!")
            for order in orders:  # 更新缓存
                if order.order_id == order_id:
                    orders.remove(order)

            # 删除订单时订单的商品应恢复到数据库和缓存
            prot = select_product(selt[1].pro_id)  # 向数据库找到这个商品
            prot[1].pro_num += selt[1].buy_num  # 更新库存余量
            pro = Product(prot[1].pro_id, prot[1].pro_name, prot[1].pro_price,
                          prot[1].pro_num)
            update_product(pro)  # 向数据库提交更新数据

            # 释放商品到缓存
            for pro in pros:
                if pro.pro_id == selt[1].pro_id:
                    pro.pro_num += selt[1].buy_num

    elif order_oper == "3":
        print("修改订单")

        try:
            order_id = int(input("请输入要修改的订单编号:"))
        except ValueError:  # 明确捕获ValueError
            # print(traceback.format_exc())
            print("订单编号输入有误,应输入数字!")
            show_order_main_view(pros, users, orders, sign)
        except:
            print("发现未知异常")
            print(traceback.format_exc())

        selt = select_order(order_id)  # 查找这个订单
        if not selt[0]:
            print("没有这个订单编号!")
            show_order_main_view(pros, users, orders, sign)
        stat = input("请输入订单状态(A:新订单 B:配货中 C:物流中 D:已签收 E:可归档)")

        # user_id = int(input("请输入新的用户编号:"))
        # pro_id = int(input("请输入新的商品编号:"))
        # buy_num = int(input("请输入新的购买数量:"))
        # address = input("请输入新的收货地址:")
        # stat = input("请输入订单状态:")
        # selt = select_product(pro_id)
        # if not selt[0]:
        #     print("不存在这个商品编号!")
        #     show_order_main_view(pros, users, orders, sign)
        # uselt = select_user(user_id)
        # if not uselt[0]:
        #     print("不存在这个用户编号!!!")
        #     show_order_main_view(pros, users, orders, sign)
        # order_new = Order(order_id, user_id, pro_id, buy_num, address, stat)
        # colt = change_order(order_new)

        colt = modify_order_stat(order_id, stat)  # 修改订单

        if colt:
            print("订单修改成功!!")
            for order in orders:
                if order.order_id == order_id:
                    # order.user_id = user_id
                    # order.pro_id = pro_id
                    # order.buy_num = buy_num
                    # order.address = address
                    order.order_stat = stat
                    # print(order)
        else:
            print("订单修改失败!!")
    elif order_oper == "4":
        print("订单详情")

        try:
            order_id = int(input("请输入要查询的订单编号:"))
        except ValueError:  # 明确捕获ValueError
            # print(traceback.format_exc())
            print("订单编号输入有误,应输入数字!")
            show_order_main_view(pros, users, orders, sign)
        except:
            print("发现未知异常")
            print(traceback.format_exc())

        selt = select_order(order_id)
        if selt[0]:
            selt[1].show_order()
        else:
            print("查询失败!")
    elif order_oper == "5":
        print("=" * 10 + "您已经退出系统" + "=" * 15)
        exit(0)
    elif order_oper == "6":
        from com.ly16.view.BgMainView import show_bg_main_view
        show_bg_main_view(pros, users, orders, sign)
    else:
        print("输入有误,请输入(1~5)数字!")

    show_order_main_view(pros, users, orders, sign)
    # return 结束函数调用
    # return 'result' #返回单个值

    # return True, "result"  # 返回多个值

    # 匿名函数:之前是参数,:之后是执行语句,并返回

    if __name__ == '__main__':
        # x, y = show_bg_main_view()
        # print(x)
        # print(y)
        pass  # 啥都不做,只是凑成语法正确
Example #4
0
def show_fgmain_view(pros, users, orders, sign):
    print("==============前台购物主界面==============")
    print("==============在售商品列表================")
    if pros != None:
        # 获取所有商品
        for pro in pros:
            pro.show_pro()
    print("==============在售商品列表================")
    print("选择操作:1、购买商品 2、显示购物车、 3、修改购买数量 4、删除购物项 5、结账 6、系统退出 7、返回")
    user_oper = input()
    if user_oper == "1":
        print("购买商品")

        try:
            paly_pro_id = int(input("输入你要购买的商品编号:"))  # 先拿到编号然后获取到商品别的数据
            buy_num = int(input("输入你要购买的商品数量:"))
        except ValueError:  # 明确捕获ValueError
            # print(traceback.format_exc())
            print("输入有误,应输入数字!")
            show_fgmain_view(pros, users, orders, sign)
        except:
            print("发现未知异常")
            print(traceback.format_exc())

        add_retuen = add_pro_to_cart(pros, paly_pro_id, buy_num, sign)
        if add_retuen == "nnfine":
            print("没有找到这个商品哦!!!")
            show_fgmain_view(pros, users, orders, sign)
        if add_retuen == "bignum":
            print("购买数量太大,商品不足!")
            show_fgmain_view(pros, users, orders, sign)
        if add_retuen:
            print("已添加到购物车!!!")
            show_fgmain_view(pros, users, orders, sign)
        else:
            print("添加购物车失败!!!")
            show_fgmain_view(pros, users, orders, sign)

    elif user_oper == "2":
        print("显示购物车")
        print("=" * 40)
        print("购物车:")
        carts, sum = show_pro_to_cart(sign)
        if carts:
            for cart in carts:
                print("商品ID:%d  商品名称:%s  商品价格:%.2f 商品数量:%d" %
                      (cart[0], cart[1], cart[2], cart[3]))
            print("总价:%.2f" % sum)
        else:
            print("购物车为空!")
        print("=" * 40 + '\n')
    elif user_oper == "3":
        print("修改购买数量")

        try:
            pro_id = int(input("输入要修改的商品编号:"))
            new_buy_num = int(input("输入要修改的商品数量:"))
        except ValueError:  # 明确捕获ValueError
            print(traceback.format_exc())
            print("输入有误,应输入数字!")
            show_fgmain_view(pros, users, orders, sign)
        except:
            print("发现未知异常")
            print(traceback.format_exc())

        change_return = change_cart_num(sign, pro_id, new_buy_num, pros)
        if change_return == "none_cart":
            print("购物车为空!!!")
            show_fgmain_view(pros, users, orders, sign)
        if change_return == "bignum":
            print("输入的商品数量超出了在售的商品数量!")
            show_fgmain_view(pros, users, orders, sign)
        if change_return == "nofine":
            print("找不到这个商品!!!")
            show_fgmain_view(pros, users, orders, sign)
        print("修改购物项成功!!")
    elif user_oper == "4":
        print("删除购物项")

        try:
            pro_id_del = int(input("输入要删除的商品编号:"))
        except ValueError:  # 明确捕获ValueError
            # print(traceback.format_exc())
            print("输入有误,应输入数字!")
            show_fgmain_view(pros, users, orders, sign)
        except:
            print("发现未知异常")
            print(traceback.format_exc())

        del_return = del_cart(sign, pros, pro_id_del)
        if del_return == "none_cart":
            print("购物车为空!!!")
            show_fgmain_view(pros, users, orders, sign)
        if del_return == "nofine":
            print("找不到这个商品!!!")
            show_fgmain_view(pros, users, orders, sign)
        if del_return:
            print("删除购物项成功!")

    elif user_oper == "5":

        # 1.支付
        print("结账")
        # 2.生产订单
        carts = show_all_order(sign[0])  # 拿到原来的购物车
        if not carts:
            print("购物车为空!!!")
        else:
            # print(carts)
            for cart in carts:
                print(carts)
                address = input("请输入商品:" + str(cart[0]) + "," + cart[1] +
                                "的收货地址:")
                order_new = Order(1, sign[0], cart[0], cart[3], address, 'A',
                                  None)
                sadd = add_order(order_new)  # 添加生成订单(向服务器)
                if not sadd:
                    print("订单添加失败!")
                else:
                    print("订单" + str(cart[0]) + "添加成功!")

                    # 更新数据库的商品信息
                    result, selt = select_product(cart[0])  # 向数据库查询商品信息(向服务器)
                    # if selt[1].pro_num == cart[3]:  # 如果是买完当前商品的全部数量
                    #     remove_product(cart[0])  # 在库存里把余量为0的商品删除  #因为外键存在,所以删除失败
                    # else:
                    if result:
                        selt.pro_num = selt.pro_num - cart[3]  # 结账后商品数量应减少
                        pro = Product(cart[0], cart[1], cart[2], selt.pro_num)
                        update_product(pro)  # 更新库存余量(向服务器)

                    # 向数据库查询该表的最后一条数据的编号,也就是我们刚刚添加的数据
                    order = select_new_order()
                    orders.append(order)  # 更新订单缓存
                    # carts.remove(cart)#删除后商品项往前移,指针在后,影响执行
            else:
                carts.clear()  # 结账之后清空购物车

        # 3.持久化生产库存
    elif user_oper == "6":
        print("=" * 10 + "您已经退出系统" + "=" * 15)
        exit(0)
    elif user_oper == "7":
        # 运行时才会导入,延迟导入
        from com.ly16.main import show_Main_View
        show_Main_View(pros, users, orders, sign)
    else:
        print("输入错误!")

    show_fgmain_view(pros, users, orders, sign)