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
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 # 啥都不做,只是凑成语法正确
def showProMgrView(pros, users, orders, sign): print("=====================商品管理界面=============") print("=====================商品列表=================") # 获取牌所有商品 for pro_lists in pros: pro_lists.show_pro() print("=====================商品列表=================") print("选择操作:1.商品上架 2.商品下架 3.修改商品信息 4.商品详情 5.退出系统 6.返回 ") pro_oper = input() if pro_oper == "1": print("商品上架") try: pro_name = input("请输入商品名称:") pro_price = float(input("请输入商品价格:")) pro_num = int(input("请输入商品数量:")) except ValueError: # 明确捕获ValueError print("输入有误,应输入数字!") showProMgrView(pros, users, orders, sign) except: print("发现未知异常") print(traceback.format_exc()) pro = Product(1, pro_name, pro_price, pro_num) # 因为ID由数据库生成,所以随便传一个参(不生效) sadd = add_product(pro) if not sadd: print("商品添加失败!") else: print("商品添加成功") # 向数据库查询该表的最后一条数据的编号,也就是我们刚刚添加的数据 pro = select_new_pro() pros.append(pro) elif pro_oper == "2": print("商品下架") try: pro_id = int(input("请输入要删除的商品编号:")) except ValueError: # 明确捕获ValueError # print(traceback.format_exc()) print("商品编号输入有误,应输入数字!") showProMgrView(pros, users, orders, sign) except: print("发现未知异常") print(traceback.format_exc()) sdel = remove_product(pro_id) if sdel == "nodel": print("要删除的商品在用户订单中,不能删除!") showProMgrView(pros, users, orders, sign) if not sdel: print("删除商品失败!") showProMgrView(pros, users, orders, sign) else: print("删除商品成功!") for pro in pros: if pro.pro_id == pro_id: pros.remove(pro) elif pro_oper == "3": print("修改商品") try: pro_id = int(input("请输入要修改的商品编号:")) pro_name = input("请输入商品新名称:") pro_price = float(input("请输入商品新价格:")) pro_num = int(input("请输入商品新数量:")) except ValueError: # 明确捕获ValueError # print(traceback.format_exc()) print("输入有误,应输入数字!") showProMgrView(pros, users, orders, sign) except: print("发现未知异常") print(traceback.format_exc()) pro = Product(pro_id, pro_name, pro_price, pro_num) stat = update_product(pro) if not stat: print("要修改的商品不存在!") showProMgrView(pros, users, orders, sign) else: print("修改商品信息成功!") for pro_up in pros: if pro_up.pro_id == pro_id: pro_up.pro_name = pro_name pro_up.pro_price = pro_price pro_up.pro_num = pro_num elif pro_oper == "4": print("商品详情") pro_oper4(pros, users, orders, sign) elif pro_oper == "5": print("=" * 10 + "您已经退出系统" + "=" * 15) exit(0) elif pro_oper == "6": from com.ly16.view.BgMainView import show_bg_main_view show_bg_main_view(pros, users, orders, sign) else: print("输入有误,请输入(1~5)数字!") showProMgrView(pros, users, orders, sign)
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)