コード例 #1
0
def order_handle(request):
    #保存一个事物点
    tran_id = transaction.savepoint()
    #接受购物车编号
    #cart_ids = request.POST.get('cart_ids')
    try:
        post = request.POST
        orderlist = post.getlist('id[]')
        total = post.get('total')
        address = post.get('address')

        order = OrderInfo()
        now = datetime.now()
        uid = request.session.get('user_id')
        order.oid = '%s%d' % (now.strftime('%Y%m%d%H%M%S'), uid)
        order.user_id = uid

        order.odate = now
        order.ototal = Decimal(total)
        order.oaddress = address
        order.save()

        # 遍历购物车中提交信息,创建订单详情表
        for orderid in orderlist:
            cartinfo = CartInfo.objects.get(id=orderid)
            # good = GoodsInfo.objects.get(cartinfo__id=cartinfo.id)
            good = GoodsInfo.objects.get(pk=cartinfo.goods_id)
            # print '*'*10
            # print cartinfo.goods_id
            # 判断库存是否够
            if int(good.gkucun) >= int(cartinfo.count):
                # 库存够,移除购买数量并保存
                good.gkucun -= int(cartinfo.count)
                good.save()

                goodinfo = GoodsInfo.objects.get(cartinfo__id=orderid)

                # 创建订单详情表
                detailinfo = OrderDetailInfo()
                detailinfo.goods_id = int(goodinfo.id)
                detailinfo.order_id = int(order.oid)
                detailinfo.price = Decimal(int(goodinfo.gprice))
                detailinfo.count = int(cartinfo.count)
                detailinfo.save()

                # 循环删除购物车对象
                cartinfo.delete()
            else:
                # 库存不够出发事务回滚
                transaction.savepoint_rollback(tran_id)
                # 返回json供前台提示失败
                return JsonResponse({'status': 2})
        transaction.savepoint_commit(tran_id)
    except Exception as e:
        print '==================%s' % e
        transaction.savepoint_rollback(tran_id)
        # 返回json供前台提示成功
    return JsonResponse({'status': 1})
コード例 #2
0
 def post(self):
     # 1.接收参数
     house_id = self.json_args.get('house_id')
     start_date = self.json_args.get('start_date')
     end_date = self.json_args.get('end_date')
     # 2.参数校验
     s_date = datetime.strptime(start_date, "%Y-%m-%d")
     e_date = datetime.strptime(end_date, "%Y-%m-%d")
     # 3.查询数据
     # 查询房屋信息
     try:
         house = self.session_sql.query(HouseInfo).filter(
             HouseInfo.hi_house_id == house_id).first()
     except Exception as e:
         logging.error(e)
         return self.write({
             "errno": RET.DBERR,
             "errmsg": "get house info error"
         })
     # 查询客户提交的时间段内,该房间是否已有订单
     try:
         h_order = self.session_sql.query(OrderInfo).filter(
             and_(OrderInfo.oi_house_id == house_id,
                  OrderInfo.oi_begin_date <= e_date,
                  OrderInfo.oi_end_date >= s_date)).first()
     except Exception as e:
         logging.error(e)
         return self.write({
             "errno": RET.DBERR,
             "errmsg": "database query error!"
         })
     # 4.数据处理
     if h_order:
         return self.write({"errno": RET.DATAERR, "errmsg": "房间已经被预定"})
     else:
         order_obj = OrderInfo(oi_user_id=self.session.data.get('id'),
                               oi_house_id=house_id,
                               oi_begin_date=s_date,
                               oi_end_date=e_date,
                               oi_days=(e_date - s_date).days + 1,
                               oi_house_price=house.hi_price * 100,
                               oi_amount=((e_date - s_date).days + 1) *
                               house.hi_price * 100,
                               oi_status=0,
                               oi_comment="")
         self.session_sql.add(order_obj)
         try:
             self.session_sql.commit()
         except Exception as e:
             logging.error(e)
             return self.write({
                 "errno": RET.DBERR,
                 "errmsg": "data upload error"
             })
     # 5.返回结果
         return self.write({"errno": RET.OK, "errmsg": "OK"})
コード例 #3
0
ファイル: views.py プロジェクト: nl30du/python
def handle_order(request):
    '''
        处理订单
    '''
    # 定义事务id
    tran_id = transaction.savepoint()

    goods_ids1 = request.POST.get('goods_ids')
    total = request.POST.get('total')
    goods_ids = goods_ids1.split(',')[:-1]
    address = request.POST.get('address')

    try:
        # 创建订单对象
        order = OrderInfo()
        # 定义创建订单时间对象
        now = datetime.now()
        # 获取uid
        user_id = int(request.session['user_id'])

        # 赋值订单各信息
        order.oid = '{}{}'.format(now.strftime('%Y%m%d%H%M%S'), user_id)
        order.user_id = user_id
        order.odate = now
        order.oTotal = Decimal(total)
        order.oaddress = address
        order.save()

        # 存入订单详情信息
        for item in goods_ids:
            detail = OrderDetail()
            detail.order = order
            cart = CartInfo.objects.get(goods_id=item, user_id=user_id)
            detail.goods_id = item
            goods = GoodsInfo.objects.get(id=item)
            detail.price = goods.gprice
            detail.count = cart.number
            detail.save()

        transaction.savepoint_commit(tran_id)

    except Exception as e:
        print '==============', e
        transaction.savepoint_rollback(tran_id)

    return JsonResponse({'status': 'ok'})
コード例 #4
0
def order_handle(request):
    tran_id = transaction.savepoint()

    try:
        post = request.POST
        orderlist = post.getlist('id[]')
        total = post.get('total')
        address = post.get('address')

        order = OrderInfo()
        now = datetime.now()
        uid = request.session.get('user_id')
        order.oid = '%s%d' % (now.strftime('%Y%m%d%H%M%S'), uid)
        order.user_id = uid
        order.odate = now
        order.ototal = Decimal(total)
        order.oaddress = address
        order.save()

        for orderid in orderlist:
            cartinfo = CartInfo.objects.get(id=orderid)
            good = GoodsInfo.objects.get(pk=cartinfo.goods_id)
            if int(good.gkucun) >= int(cartinfo.count):
                good.gkucun -= int(cartinfo.count)
                good.save()

                goodinfo = GoodsInfo.objects.get(cartinfo__id=orderid)

                detailinfo = OrderDetailInfo()
                detailinfo.goods_id = int(goodinfo.id)
                detailinfo.order_id = int(order.oid)
                detailinfo.price = Decimal(int(goodinfo.gprice))
                detailinfo.count = int(cartinfo.count)
                detailinfo.save()

                cartinfo.delete()
            else:
                transaction.savepoint_rollback(tran_id)
                return JsonResponse({'status': 2})

    except Exception as e:
        print '========================%s' % e
        transaction.savepoint_rollback(tran_id)

    return JsonResponse({'status': 1})
コード例 #5
0
ファイル: views.py プロジェクト: laosuaidami/django1
def order_handle(request):
    tran_id = transaction.savepoint()
    #接收购物车编号
    cart_ids = request.POST.get('cart_ids')
    try:
        #创建订单对象
        order = OrderInfo()
        now = datetime.now()
        uid = request.session['user_id']
        order.oid = '%s%d' % (now.strftime('%Y%m%d%H%M%S'), uid)
        order.user_id = uid
        #print order.oid
        order.odate = now
        order.ototal = Decimal(request.POST.get('total'))
        order.save()
        #创建详单对象
        cart_ids1 = [int(item) for item in cart_ids.split(',')]
        for id1 in cart_ids1:
            detail = OrderDetailInfo()
            detail.order = order
            #查询购物车信息
            cart = CartInfo.objects.get(id=id1)
            #判断商品库存
            goods = cart.goods
            if goods.gstocks >= cart.count:
                #减少商品库存
                goods.gstocks = cart.goods.gstocks - cart.count
                goods.save()
                # 完善详单信息
                detail.goods_id = goods.id
                detail.price = goods.gprice
                detail.count = cart.count
                detail.save()
                #删除购物车数据
                cart.delete()
            else:  #如果库存小于购买数量
                transaction.savepoint_rollback(tran_id)
                return redirect('/cart/')
        transaction.savepoint_commit(tran_id)
    except Exception as e:
        print '====================%s' % e
        transaction.savepoint_rollback(tran_id)

    return redirect('/user/order/')