class OrderDetail(BaseModel): __tablename__ = "order_detail" order_id = db.Column(db.String(64), db.ForeignKey('orders.order_id'), nullable=False) goods_id = db.Column(db.Integer, db.ForeignKey("s_goods.id"), nullable=False) passport_id = db.Column(db.Integer, db.ForeignKey('s_user_account.id'), nullable=False) goods_count = db.Column(db.Integer, default=1) goods_price = db.Column(db.DECIMAL(10, 2)) @classmethod def add_order_detail_info(cls, order_id, goods_id, passport_id, goods_count, goods_price): info = cls(order_id=order_id, goods_id=goods_id, passport_id=passport_id, goods_count=goods_count, goods_price=goods_price) db.session.add(info) db.session.commit() @classmethod def get_goods(cls, order_id): info = cls.query.filter_by(order_id=order_id).all() return info
class Browsing(BaseModel): __tablename__ = "browsing_history" passport_id = db.Column(db.Integer, db.ForeignKey("s_user_account.id"), nullable=False) goods_id = db.Column(db.Integer, db.ForeignKey("s_goods.id"), nullable=False) @classmethod def add_browsing(cls, passport_id, goods_id): browsing = Browsing(passport_id=passport_id, goods_id=goods_id) db.session.add(browsing) db.session.commit()
class Address(BaseModel): """地址模型类""" __tablename__ = "s_user_address" recipient_name = db.Column(db.String(24)) recipient_addr = db.Column(db.String(256)) recipient_phone = db.Column(db.String(11)) zip_code = db.Column(db.String(6)) # 邮编地址 is_default = db.Column(db.Boolean, default=False) # 是否为默认地址 passport_id = db.Column(db.Integer, db.ForeignKey("s_user_account.id"), nullable=False) @classmethod def add_one_address(cls, passport_id, recipient_name, recipient_addr, recipient_phone, zip_code): """添加应该收货地址""" addr = cls.get_one_address(passport_id=passport_id) obj = cls( passport_id=passport_id, recipient_name=recipient_name, recipient_addr=recipient_addr, recipient_phone=recipient_phone, zip_code=zip_code, is_default=not bool(addr) ) db.session.add(obj) db.session.commit() return obj @classmethod def get_one_address(cls, passport_id): addr = Address.query.filter_by(passport_id=passport_id).first() print(addr) return addr
class HeadImage(BaseModel): __tablename__ = "head_image" passport_id = db.Column(db.Integer, db.ForeignKey("s_user_account.id"), nullable=False) user_image = db.Column(db.String(60), default="/static/images/people.png") @classmethod def add_first_image(cls, passport_id): info = cls(passport_id=passport_id, user_image="/static/images/people.png") db.session.add(info) db.session.commit()
class Collect(BaseModel): __tablename__ = "collect" passport_id = db.Column(db.Integer, db.ForeignKey("s_user_account.id"), nullable=False) goods_id = db.Column(db.Integer, db.ForeignKey("s_goods.id"), nullable=False) goods_count = db.Column(db.Integer, default=1) @classmethod def get_collect(cls, goods_id): obj = Collect.query.filter_by(goods_id=goods_id).first() # print(obj) return obj @classmethod def add_collect(cls, passport_id, goods_id): collect = Collect(passport_id=passport_id, goods_id=goods_id) db.session.add(collect) db.session.commit() return True
class Orders(Base): __tablename__ = "orders" order_id = db.Column(db.String(64), primary_key=True) passport_id = db.Column(db.Integer, db.ForeignKey('s_user_account.id'), nullable=False) addr_id = db.Column(db.Integer, db.ForeignKey("s_user_address.id"), nullable=False) total_count = db.Column(db.Integer, default=1) total_price = db.Column(db.DECIMAL(10, 2)) freight_price = db.Column(db.DECIMAL(10, 2)) # 商品运费 pay_method = db.Column(db.String(10), default="余额支付") order_status = db.Column(db.String(10), default="待发货") express = db.Column(db.String(10), default="中通快递") # 快递方式 leave_message = db.Column(db.String(60)) # 留言 order_details = db.relationship("OrderDetail", backref="orders") @classmethod def add_oreder_info(cls, order_id, passport_id, addr_id, total_count, total_price, freight_price, pay_method, express, leave_message): info = cls(order_id=order_id, passport_id=passport_id, addr_id=addr_id, total_count=total_count, total_price=total_price, freight_price=freight_price, pay_method=pay_method, express=express, leave_message=leave_message) db.session.add(info) db.session.commit() @classmethod def search_orders_all(cls, passport_id): orders = cls.query.filter_by(passport_id=passport_id).all() return orders
class Cart(BaseModel): __tablename__ = "carts" passport_id = db.Column(db.Integer, db.ForeignKey("s_user_account.id"), nullable=False) goods_id = db.Column(db.Integer, db.ForeignKey("s_goods.id"), nullable=False) goods_count = db.Column(db.Integer, default=1) @classmethod def get_one_cart_info(cls, passport_id, goods_id): cart_info = cls.query.filter_by(passport_id=passport_id, goods_id=goods_id).first() print(cart_info) return cart_info @classmethod def add_one_cart_info(cls, passport_id, goods_id, goods_count): cart_info = cls.get_one_cart_info(passport_id=passport_id, goods_id=goods_id) # 判断库存 if cart_info: total_count = cart_info.goods_count + goods_count if total_count <= cart_info.goods.goods_stock: cart_info.goods_count = total_count db.session.add(cart_info) db.session.commit() return True else: return False else: # total_count = cart_info.goods_count + goods_count goods = Goods.query.get(goods_id) if goods_count <= goods.goods_stock: cart_info = Cart(passport_id=passport_id, goods_id=goods_id, goods_count=goods_count) db.session.add(cart_info) db.session.commit() return True else: return False # if cart_info: # total_count = cart_info.goods_count+goods_count # cart_info.goods_count = total_count # db.session.add(cart_info) # db.session.commit() # return True # else: # goods = Goods.query.get(goods_id) # cart_info = Cart( # passport_id=passport_id, # goods_id=goods_id, # goods_count=goods_count # ) # db.session.add(cart_info) # db.session.commit() # return True @classmethod def update_one_cart_info(cls, passport_id, goods_id, goods_count): cart_info = cls.get_one_cart_info(passport_id=passport_id, goods_id=goods_id) if goods_count <= cart_info.goods.goods_stock: cart_info.goods_count = goods_count db.session.add(cart_info) db.session.commit() return True else: return False @classmethod def delete_cart_info(cls, passport_id, goods_id): try: cart_info = cls.get_one_cart_info(passport_id=passport_id, goods_id=goods_id) db.session.delete(cart_info) db.session.commit() return True except: return False @classmethod def get_cart_list_by_id_list(cls, cart_id_list): """获取id在cart_id_list中的购物车记录""" cart_list = Cart.query.filter(Cart.id.in_(cart_id_list)).all() return cart_list