from sqlalchemy.orm import Session from app.models.coupon import CouponDB,UserCouponDB from app.models.user import UserDB from datetime import datetime class CouponManager: def __init__(self, db: Session): self.db = db # 发放优惠券 def add_coupon( self, user_id: int, coupon_id: int, count: int, expire_time: datetime ): try: # 检查优惠券是否存在 coupon = self.db.query(CouponDB).filter(CouponDB.id == coupon_id).first() if not coupon: raise ValueError("优惠券不存在") # 检查用户是否存在 user = self.db.query(UserDB).filter(UserDB.userid == user_id).first() if not user: raise ValueError("用户不存在") for _ in range(count): # 发放优惠券 user_coupon = UserCouponDB( user_id=user_id, coupon_id=coupon_id, coupon_name=coupon.name, coupon_amount=coupon.amount, coupon_type=coupon.coupon_type, expire_time=expire_time, ) self.db.add(user_coupon) self.db.commit() except Exception as e: self.db.rollback() raise e