def edit(cls, member_id, product_id, count, selected): models = cls.query.filter_by(member_id=member_id, soft=True).all() ids = [item.product_id for item in models] if len(models) >= 10 and product_id not in ids: raise ParameterException(msg='购物车最多放10种商品') Product.check_stock(product_id, count, throw=True) model = cls.query.filter_by(product_id=product_id, member_id=member_id, soft=True).first() if model: model.update(count=count, selected=selected, commit=True) return True cls.create(member_id=member_id, product_id=product_id, count=count, selected=selected, commit=True) return True
def place_order(): uid = g.user.uid form = OrderForm().validate_for_api() products = form.products.data # 订单商品参数字段校验 products = OrderForm.check_products(products) # 库存量检测 order_info = Product.check_stock(products) if order_info['pass']: # 生成订单,写入数据库 order_info = Order.generator_order(uid, order_info) res = OrderProduct.mark_order(order_info, products) return jsonify(res) else: return jsonify(order_info)
def check_stock(): form = ProductIdAndCount().validate_for_api() has_stock = Product.check_stock(form.product_id.data, form.count.data) return {'product_id': form.product_id.data, 'has_stock': has_stock}