def create_order_detail(order: Order, order_detail_info: dict): """ :param order: :param order_detail_info: { "product_id" product.id, "quantity_gross": decimal, "quantity_net": decimal, "price_gross": decimal, "price_net": decimal, "amount_gross": decimal, "amount_net": decimal, "promotion_id": groupon.id or null } :return: """ order_info = { "order_id": order.id, "shop_id": order.shop.id, "customer_id": order.customer.id, "create_date": order.create_date, "status": order.order_status, "pay_type": order.pay_type, } order_detail_info.update(order_info) order_detail = OrderDetail(**order_detail_info) order_detail.save() return order_detail
def post(self, request): json_data = json.loads(request.body.decode('utf-8')) print(json_data) current_user = User.objects.filter(id=json_data['user_id'])[0] order = Order(user_id=current_user, address=json_data['address'], area=json_data['area'], mobile=json_data['mobile'], token=json_data['token']) order.save() order_items = json_data['orderitems'] for item in order_items: item = OrderDetail(order_id=order, itemname=item['itemname'], itemquantity=item['itemquantity'], itemImage=item['itemImage'], attribute=item['attribute'], currency=item['currency'], itemtotal=item['itemtotal'], status=order.status, itemprice=item['itemprice'], total=item['itemtotal']) #order.totalamount = str(float(item.itemtotal) + float(order.totalamount)) item.save() #order.save() products = [] orders = [] try: orders = Order.objects.filter(user_id=order.user_id) print(orders) except: pass # fetch all record in order related to orders for order in orders: temp = OrderDetail.objects.filter(order_id=order.id) for item in temp: products.append(item) print(products) try: # serialize data serialized = OrderDetailSerializer(products, many=True).data except Exception as e: print(e) return JsonResponse({ "code": 200, "status": "success", "orders": serialized })
def shop_cart_checkout(request): current_user = request.user shopcart = ShopCart.objects.all().filter(user_id=current_user.id) carttotal = 0 for rs in shopcart: carttotal += rs.quantity * rs.product.price form = OrderForm(request.POST or None) if request.method == 'POST': # check whether it's valid: if form.is_valid(): # Send Credit card information to bank and get result # If payment accepted continue else send payment error to checkout page data = Order() data.name = form.cleaned_data[ 'name'] #get product quantity from form data.surname = form.cleaned_data['surname'] data.address = form.cleaned_data['address'] data.city = form.cleaned_data['city'] data.phone = form.cleaned_data['phone'] data.to = form.cleaned_data['name'] data.user_id = current_user.id data.total = carttotal data.save() # Save Shopcart items to Order detail items for rs in shopcart: detail = OrderDetail() detail.order_id = data.id # Order Id detail.product_id = rs.product_id detail.user_id = current_user.id detail.quantity = rs.quantity detail.price = rs.product.price detail.total = rs.amount detail.save() # Reduce product Amount (quantity) ShopCart.objects.filter( user_id=current_user.id).delete() # Clear & Delete shopcart request.session['cart_items'] = 0 messages.success(request, "Order has been completed. Thank You ") return HttpResponseRedirect("/order") context = { 'page': 'checkout', 'shopcart': shopcart, 'carttotal': carttotal, } return render(request, 'shop_cart_checkout.html', context)
def add_order(): # 定时( 00:00:00 )将 抢购的商品存入到订单 # [{'user_id': 8, 'goods_id': 2}] qbuy_goods = get_all_qbuy() if not qbuy_goods: return '无数据,无法生成订单' for goods in qbuy_goods: user_id = goods.get('user_id') book_id = goods.get('goods_id') order = Order() order.title = '抢读%s' % Book.objects.get(pk=book_id).title order.price = 0 order.user_id = user_id order.pay_status = 1 # 1 已支付 order.save() order_detail = OrderDetail() order_detail.order = order order_detail.price = 0 order_detail.cnt = 1 order_detail.book_id = book_id order_detail.save() # 清空qbuy缓存 clear_qbuy() return '定时生成订单成功'
def shop_cart_checkout(request): categoryList = Category.objects.all() current_user = request.user shopcart = ShopCart.objects.all().filter(user_id=current_user.id) carttotal = 0 for rs in shopcart: carttotal += rs.quantity * rs.product.price form = OrderForm(request.POST or None) if request.method == 'POST': if form.is_valid(): # Credit Card information section if bank accept payment then order==true data = Order() data.name = form.cleaned_data['name'] data.surname = form.cleaned_data['surname'] data.address = form.cleaned_data['address'] data.city = form.cleaned_data['city'] data.phone = form.cleaned_data['phone'] data.to = form.cleaned_data['name'] data.user_id = current_user.id data.total = carttotal data.save() for rs in shopcart: detail = OrderDetail() detail.order_id = data.id detail.product_id = rs.product.id detail.user_id = current_user.id detail.quantity = rs.quantity detail.price = rs.product.price detail.total = rs.amount detail.save() ShopCart.objects.filter(user_id=current_user.id).delete() request.session['cart_items'] = 0 messages.success(request, "Order has been completed ") return HttpResponseRedirect("/order") context = { 'page': 'checkout', 'shopcart': shopcart, 'carttotal': carttotal, 'categoryList': categoryList, } return render(request, 'shop_cart_checkout.html', context)
def order_handle(request): """订单处理""" # 保存一个事物点 tran_id = transaction.savepoint() # 接收购物车编号 # 根据POST和session获取信息 # cart_ids = post.get('cart_ids') try: post = request.POST order_list = post.getlist('id[]') total = post.get('total') address = post.get('address') order = Order() now = datetime.now() uid = request.session.get('user_id') order.order_id = '%s%d'%(now.strftime('%Y%m%d%H%M%S'),uid) order.order_user_id = uid order.order_date = now order.order_total = Decimal(total) order.order_address = address order.save() # 遍历购物车中提交信息,创建订单详情表 for order_id in order_list: cart_o = Cart.objects.get(id=order_id) goods_o = Goods.objects.get(pk=cart_o.cart_goods_id) # 判断库存是否够 if int(goods_o.goods_inventory) >= int(cart_o.count): # 库存够的话,减去购买的数量并保存 goods_o.goods_inventory -= int(cart_o.count) goods_o.save() # 创建订单详情表 detail = OrderDetail() detail.order_goods_id = int(goods_o.id) detail.order_id = int(order.order_id) detail.order_price = Decimal(int(goods_o.goods_price)) detail.order_count = int(cart_o.count) detail.save() # 循环删除购物车对象 cart_o.delete() else: # 库存不够触发事务回滚 transaction.savepoint_rollback(tran_id) # 返回json供前台提示失败 return JsonResponse({'status': 2}) except Exception as e: transaction.savepoint_rollback(tran_id) # 返回json供前台提示成功 return JsonResponse({'status': 1})
def shop_cart_checkout(request): current_user = request.user shopcart = ShopCart.objects.all().filter(user_id=current_user.id) carttotal = 0 for rs in shopcart: carttotal += rs.quantity * rs.product.price form = OrderForm(request.POST or None) if request.method == 'POST': if form.is_valid(): data = Order() data.shipname = form.cleaned_data['shipname'] data.shipaddress = form.cleaned_data['shipaddress'] data.shipphone = form.cleaned_data['shipphone'] data.to = form.cleaned_data['shipname'] data.user_id = current_user.id data.total = carttotal data.save() for rs in shopcart: detail = OrderDetail() detail.order_id = data.id detail.product_id = rs.product_id detail.user_id = current_user.id detail.quantity = rs.quantity detail.price = rs.product.price detail.total = rs.amount detail.save() ShopCart.objects.filter(user_id=current_user.id).delete() request.session['cart_items'] = 0 messages.success(request, "Order has been completed. Thank You") return HttpResponseRedirect("/order") context = { 'page': 'checkout', 'shopcart': shopcart, 'carttotal': carttotal, } return render(request, 'shop_cart_checkout.html', context)
def order_handle(request): # 可以通过request.POST.get来获取名为 xxx 的input标签的value值,前提是所有的元素都在表单内且表单以post或者get方式提交 """ 对ordermain数据的处理 :param request: :return: """ address_id = request.POST.get('address') # 默认提交的地址 cart_id_list = request.POST.get('cart_id_list').split(',') sp = transaction.savepoint() try: order = OrderMain() order.address_id = address_id now_str = datetime.datetime.now().strftime("%Y%m%d%H%M%S") order.id = "%s%s" % (now_str, random_str()) order.user_id = request.session['uid'] order.save() """ 对orderdetail表数据的处理 """ list = CartInfo.objects.filter(id__in=cart_id_list) total = 0 # 总价 for cart in list: if cart.count <= cart.goods.inventory: detail = OrderDetail() detail.goods = cart.goods detail.order = order detail.count = cart.count detail.price = cart.goods.price * detail.count # 一项商品的购物记录难道不要乘上它的数量??? detail.save() goods = cart.goods goods.inventory -= cart.count goods.save() cart.delete() # 订单每样商品处理结束后删除 total += detail.price + 10 else: raise Exception() order.total = total order.save() transaction.savepoint_commit(sp) return redirect('/user/order/') except Exception: transaction.savepoint_rollback(sp) return redirect('/cart/checkout/')
def shop_cart_checkout(request): current_user = request.user shopcart = ShopCart.objects.all().filter(user_id=current_user.id) carttotal = 0 for rs in shopcart: carttotal += rs.quantity * rs.product.price if request.method == 'POST': data = Order() data.name = request.POST['name'] data.surname = request.POST['surname'] data.address = request.POST['address'] data.city = request.POST['city'] data.phone = request.POST['phone'] data.user_id = current_user.id data.total = carttotal data.save() for rs in shopcart: detail = OrderDetail() detail.order_id = data.id detail.product_id = rs.product_id detail.user_id = current_user.id detail.quantity = rs.quantity detail.price = rs.product.price detail.total = rs.amount detail.save() ShopCart.objects.filter(user_id=current_user.id).delete() request.session['cart_items'] = 0 return HttpResponseRedirect("/order") context = { 'page': 'checkout', 'shopcart': shopcart, 'carttotal': carttotal, } return render(request, 'shop_cart_checkout.html', context)
def order_handle(request): # 获取多个id getlist pay = request.POST.get('pay') ids_str = request.POST.get('ids_str') ids_list = ids_str.split('#') # 查询购物车记录 carts = Cart.objects.filter(id__in=ids_list) user_id = request.session.get('user_id') # print(pay,ids_str,'============================') # 2: 创建存档点 保存点 save_point1 = transaction.savepoint() # 判断是否生成订单 try: # 生成订单 order = Order() order.num = str(user_id)+ str(int(time.time())) order.fee = 10 order.status = 1 order.payway = pay order.user_id = user_id order.save() for cart in carts: detail = OrderDetail() detail.order = order detail.good = cart.good detail.num = cart.amount detail.xiaoji = cart.xiaoji detail.save() #存到订单以后 把购物车对应的记录删除 cart.delete() # 3: 订单事务执行成功 提交事务 transaction.savepoint_commit(save_point1) return JsonResponse({'ret':1}) except: # 4: 订单执行失败 ,滚回到保存点 transaction.savepoint_rollback(save_point1) return JsonResponse({'ret':0})