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