deliveryman-api/app/core/coupon_manager.py
2025-02-26 14:23:30 +08:00

48 lines
1.4 KiB
Python

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