update
This commit is contained in:
parent
b82d5c5374
commit
cdca663853
@ -36,8 +36,11 @@ async def create_coupon_activity(
|
||||
if not coupon:
|
||||
return error_response(code=404, message=f"优惠券ID {coupon_id} 不存在")
|
||||
# 检查数量是否大于0
|
||||
if activity.coupon_config[coupon_id] <= 0:
|
||||
if activity.coupon_config[coupon_id]['count'] <= 0:
|
||||
return error_response(code=400, message=f"优惠券ID {coupon_id} 的数量必须大于0")
|
||||
|
||||
if activity.coupon_config[coupon_id]['days'] <= 0:
|
||||
return error_response(code=400, message=f"优惠券ID {coupon_id} 的有效天数必须大于0")
|
||||
|
||||
db_activity = CouponActivityDB(**activity.model_dump())
|
||||
db.add(db_activity)
|
||||
@ -76,8 +79,8 @@ async def get_coupon_activity(
|
||||
coupon_list = []
|
||||
for coupon in coupons:
|
||||
coupon_info = CouponInfo.model_validate(coupon).model_dump()
|
||||
coupon_info.update({'count': activity_data['coupon_config'][coupon.id]})
|
||||
coupon_info.update({'available_days': 15})
|
||||
coupon_info.update({'count': activity_data['coupon_config'][coupon.id]['count']})
|
||||
coupon_info.update({'available_days': activity_data['coupon_config'][coupon.id]['days']})
|
||||
coupon_list.append(coupon_info)
|
||||
|
||||
activity_data.update({'coupons': coupon_list})
|
||||
@ -194,18 +197,18 @@ async def receive_coupons(
|
||||
|
||||
try:
|
||||
# 发放优惠券
|
||||
for coupon_id, count in activity.coupon_config.items():
|
||||
for coupon_id, config in activity.coupon_config.items():
|
||||
coupon = db.query(CouponDB).filter(CouponDB.id == coupon_id).first()
|
||||
if coupon:
|
||||
today = datetime.now().date()
|
||||
#过期时间:15 天
|
||||
expire_time = datetime.combine(today, datetime.max.time()) + timedelta(days=15)
|
||||
expire_time = datetime.combine(today, datetime.max.time()) + timedelta(days=config['days'])
|
||||
manager = CouponManager(db)
|
||||
manager.add_coupon(
|
||||
user_id=current_user.userid,
|
||||
coupon_id=coupon.id,
|
||||
expire_time= expire_time,
|
||||
count=count
|
||||
count=config['count']
|
||||
)
|
||||
|
||||
# 检查是否领取过优惠券
|
||||
@ -294,13 +297,16 @@ async def update_coupon_activity(
|
||||
|
||||
# 检查优惠券是否存在
|
||||
if activity.coupon_config:
|
||||
for coupon_id, count in activity.coupon_config.items():
|
||||
for coupon_id, config in activity.coupon_config.items():
|
||||
coupon = db.query(CouponDB).filter(CouponDB.id == coupon_id).first()
|
||||
if not coupon:
|
||||
return error_response(code=404, message=f"优惠券ID {coupon_id} 不存在")
|
||||
# 检查数量是否大于0
|
||||
if count <= 0:
|
||||
if config['count'] <= 0:
|
||||
return error_response(code=400, message=f"优惠券ID {coupon_id} 的数量必须大于0")
|
||||
|
||||
if config['days'] <= 0:
|
||||
return error_response(code=400, message=f"优惠券ID {coupon_id} 的有效天数必须大于0")
|
||||
|
||||
update_data = activity.model_dump(exclude_unset=True)
|
||||
for key, value in update_data.items():
|
||||
|
||||
@ -33,7 +33,7 @@ class CouponActivityCreate(BaseModel):
|
||||
daily_end_time: time # 每日结束时间 "HH:MM:SS"
|
||||
total_limit: int = Field(default=0)
|
||||
user_limit: int = Field(..., gt=0)
|
||||
coupon_config: Dict[int, int] # {coupon_id: count}
|
||||
coupon_config: Dict[int, Dict[str, int]] # {coupon_id: {'count': int, 'days': int}}
|
||||
is_active: bool = Field(default=True)
|
||||
qr_code: Optional[str] = Field(None, max_length=200) # 活动小程序码URL
|
||||
|
||||
@ -46,7 +46,7 @@ class CouponActivityUpdate(BaseModel):
|
||||
daily_end_time: Optional[time] = None
|
||||
total_limit: Optional[int] = Field(default=0)
|
||||
user_limit: Optional[int] = Field(None, gt=0)
|
||||
coupon_config: Optional[Dict[int, int]] = None
|
||||
coupon_config: Optional[Dict[int, Dict[str, int]]] = None
|
||||
is_active: Optional[bool] = None
|
||||
qr_code: Optional[str] = Field(None, max_length=200) # 活动小程序码URL
|
||||
|
||||
@ -60,7 +60,7 @@ class CouponActivityInfo(BaseModel):
|
||||
daily_end_time: time
|
||||
total_limit: int
|
||||
user_limit: int
|
||||
coupon_config: Dict[int, int]
|
||||
coupon_config: Dict[int, Dict[str, int]]
|
||||
is_active: bool
|
||||
qr_code: Optional[str] # 活动小程序码URL
|
||||
create_time: datetime
|
||||
|
||||
BIN
jobs.sqlite
BIN
jobs.sqlite
Binary file not shown.
Loading…
Reference in New Issue
Block a user