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})
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})