update
This commit is contained in:
parent
67f29ebbd8
commit
4b07324516
@ -166,17 +166,13 @@ async def check_activity_can_receive(
|
||||
if activity.total_limit > 0 and total_receive_count >= activity.total_limit:
|
||||
return False, f"优惠券活动已领完", activity
|
||||
|
||||
# 检查今日领取次数
|
||||
today = datetime.now().date()
|
||||
|
||||
today_receive_count = db.query(func.count(CouponReceiveRecordDB.id)).filter(
|
||||
# 检查用户领取次数
|
||||
user_receive_count = db.query(func.count(CouponReceiveRecordDB.id)).filter(
|
||||
CouponReceiveRecordDB.user_id == current_user.userid,
|
||||
CouponReceiveRecordDB.activity_id == activity_id,
|
||||
CouponReceiveRecordDB.receive_date == today
|
||||
CouponReceiveRecordDB.activity_id == activity_id
|
||||
).scalar()
|
||||
|
||||
if today_receive_count >= activity.daily_limit:
|
||||
return False, "今日领取次数已达上限", activity
|
||||
if user_receive_count >= activity.user_limit:
|
||||
return False, "你已经领过了", activity
|
||||
|
||||
return True, "可领取", activity
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ class CouponActivityDB(Base):
|
||||
daily_start_time = Column(Time, nullable=False) # 每日开始时间
|
||||
daily_end_time = Column(Time, nullable=False) # 每日结束时间
|
||||
total_limit = Column(Integer, nullable=False, default=0) # 总可领取次数, 0表示不限制
|
||||
daily_limit = Column(Integer, nullable=False, default=1) # 每日可领取次数
|
||||
user_limit = Column(Integer, nullable=False, default=1) # 用户可领取次数
|
||||
is_active = Column(Boolean, nullable=False, default=True) # 是否激活
|
||||
coupon_config = Column(JSON, nullable=False) # 可领取的优惠券配置 {coupon_id: count}
|
||||
create_time = Column(DateTime(timezone=True), server_default=func.now())
|
||||
@ -31,7 +31,7 @@ class CouponActivityCreate(BaseModel):
|
||||
daily_start_time: time # 每日开始时间 "HH:MM:SS"
|
||||
daily_end_time: time # 每日结束时间 "HH:MM:SS"
|
||||
total_limit: int = Field(default=0)
|
||||
daily_limit: int = Field(..., gt=0)
|
||||
user_limit: int = Field(..., gt=0)
|
||||
coupon_config: Dict[int, int] # {coupon_id: count}
|
||||
is_active: bool = Field(default=True)
|
||||
|
||||
@ -43,7 +43,7 @@ class CouponActivityUpdate(BaseModel):
|
||||
daily_start_time: Optional[time] = None
|
||||
daily_end_time: Optional[time] = None
|
||||
total_limit: Optional[int] = Field(default=0)
|
||||
daily_limit: Optional[int] = Field(None, gt=0)
|
||||
user_limit: Optional[int] = Field(None, gt=0)
|
||||
coupon_config: Optional[Dict[int, int]] = None
|
||||
is_active: Optional[bool] = None
|
||||
|
||||
@ -56,7 +56,7 @@ class CouponActivityInfo(BaseModel):
|
||||
daily_start_time: time
|
||||
daily_end_time: time
|
||||
total_limit: int
|
||||
daily_limit: int
|
||||
user_limit: int
|
||||
coupon_config: Dict[int, int]
|
||||
is_active: bool
|
||||
create_time: datetime
|
||||
|
||||
BIN
jobs.sqlite
BIN
jobs.sqlite
Binary file not shown.
Loading…
Reference in New Issue
Block a user