Exemplo n.º 1
0
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 '定时生成订单成功'
Exemplo n.º 2
0
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/')
Exemplo n.º 3
0
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})