优惠券更新。
This commit is contained in:
parent
3e4535c2d1
commit
f1d2b7f365
@ -15,6 +15,7 @@ from app.models.user import UserDB
|
|||||||
from app.core.response import success_response, error_response, ResponseModel
|
from app.core.response import success_response, error_response, ResponseModel
|
||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
from datetime import datetime, time
|
from datetime import datetime, time
|
||||||
|
from app.core.coupon_manager import CouponManager
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@ -184,21 +185,14 @@ async def receive_coupons(
|
|||||||
for coupon_id, count in activity.coupon_config.items():
|
for coupon_id, count 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:
|
||||||
# 循环发放指定数量的优惠券
|
|
||||||
for _ in range(count):
|
|
||||||
# 当天晚上12点过期
|
|
||||||
expire_time = datetime.combine(today, datetime.max.time())
|
expire_time = datetime.combine(today, datetime.max.time())
|
||||||
|
manager = CouponManager(db)
|
||||||
user_coupon = UserCouponDB(
|
manager.add_coupon(
|
||||||
user_id=current_user.userid,
|
user_id=current_user.userid,
|
||||||
coupon_id=coupon.id,
|
coupon_id=coupon.id,
|
||||||
coupon_name=coupon.name,
|
|
||||||
coupon_amount=coupon.amount,
|
|
||||||
coupon_type=coupon.coupon_type,
|
|
||||||
expire_time= expire_time,
|
expire_time= expire_time,
|
||||||
status=CouponStatus.UNUSED
|
count=count
|
||||||
)
|
)
|
||||||
db.add(user_coupon)
|
|
||||||
|
|
||||||
# 检查是否领取过优惠券
|
# 检查是否领取过优惠券
|
||||||
receive_record = db.query(CouponReceiveRecordDB).filter(
|
receive_record = db.query(CouponReceiveRecordDB).filter(
|
||||||
|
|||||||
@ -41,6 +41,7 @@ from app.core.wecombot import WecomBot
|
|||||||
from app.models.config import ConfigDB
|
from app.models.config import ConfigDB
|
||||||
from app.core.mpmessage import sent_order_status_change_message
|
from app.core.mpmessage import sent_order_status_change_message
|
||||||
from fastapi import BackgroundTasks
|
from fastapi import BackgroundTasks
|
||||||
|
from app.core.coupon_manager import CouponManager
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@ -993,6 +994,11 @@ async def complete_order(
|
|||||||
ShippingOrderDB.deliveryman_user_id == current_user.userid
|
ShippingOrderDB.deliveryman_user_id == current_user.userid
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
|
# 订单用户
|
||||||
|
order_user = db.query(UserDB).filter(
|
||||||
|
UserDB.userid == order.userid
|
||||||
|
).first()
|
||||||
|
|
||||||
if not order:
|
if not order:
|
||||||
return error_response(code=404, message="订单不存在")
|
return error_response(code=404, message="订单不存在")
|
||||||
|
|
||||||
@ -1025,9 +1031,25 @@ async def complete_order(
|
|||||||
description=f"配送订单收益",
|
description=f"配送订单收益",
|
||||||
transaction_id=orderid
|
transaction_id=orderid
|
||||||
)
|
)
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
# 如果当前订单是首单,给邀请人发放优惠券
|
||||||
|
if order.is_first_order:
|
||||||
|
# 查询邀请人
|
||||||
|
invite_user = db.query(UserDB).filter(
|
||||||
|
UserDB.referral_code == order_user.user_code
|
||||||
|
).first()
|
||||||
|
|
||||||
|
if invite_user:
|
||||||
|
expire_time = datetime.now() + timedelta(days=settings.FIRST_ORDER_REFERRAL_COUPON_EXPIRE_DAYS)
|
||||||
|
manager = CouponManager(db)
|
||||||
|
manager.add_coupon(
|
||||||
|
user_id=invite_user.userid,
|
||||||
|
coupon_id=settings.FIRST_ORDER_REFERRAL_COUPON_ID,
|
||||||
|
expire_time=expire_time,
|
||||||
|
count=settings.FIRST_ORDER_REFERRAL_COUPON_COUNT
|
||||||
|
)
|
||||||
|
|
||||||
# 发送企业微信消息
|
# 发送企业微信消息
|
||||||
wecom_bot = WecomBot()
|
wecom_bot = WecomBot()
|
||||||
background_tasks.add_task(
|
background_tasks.add_task(
|
||||||
|
|||||||
@ -26,6 +26,7 @@ async def add_points(
|
|||||||
point_record = PointRecordDB(
|
point_record = PointRecordDB(
|
||||||
user_id=record.user_id,
|
user_id=record.user_id,
|
||||||
points=record.points,
|
points=record.points,
|
||||||
|
type=record.type,
|
||||||
description=record.description
|
description=record.description
|
||||||
)
|
)
|
||||||
db.add(point_record)
|
db.add(point_record)
|
||||||
|
|||||||
@ -92,9 +92,6 @@ async def login(
|
|||||||
db.add(user)
|
db.add(user)
|
||||||
db.flush() # 获取用户ID
|
db.flush() # 获取用户ID
|
||||||
|
|
||||||
# 发放优惠券
|
|
||||||
issue_register_coupons(db, user.userid)
|
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(user)
|
db.refresh(user)
|
||||||
|
|
||||||
@ -192,9 +189,6 @@ async def phone_login(
|
|||||||
db.add(user)
|
db.add(user)
|
||||||
db.flush()
|
db.flush()
|
||||||
|
|
||||||
# 发放优惠券
|
|
||||||
issue_register_coupons(db, user.userid)
|
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(user)
|
db.refresh(user)
|
||||||
|
|
||||||
@ -383,33 +377,6 @@ async def get_referral_users(
|
|||||||
"items": user_list
|
"items": user_list
|
||||||
})
|
})
|
||||||
|
|
||||||
def issue_register_coupons(db: Session, user_id: int):
|
|
||||||
"""发放注册优惠券
|
|
||||||
Args:
|
|
||||||
db: 数据库会话
|
|
||||||
user_id: 用户ID
|
|
||||||
"""
|
|
||||||
register_coupons = settings.REGISTER_COUPONS
|
|
||||||
|
|
||||||
# 设置过期时间
|
|
||||||
for config in register_coupons:
|
|
||||||
coupon = db.query(CouponDB).filter(
|
|
||||||
CouponDB.id == config["coupon_id"]
|
|
||||||
).first()
|
|
||||||
|
|
||||||
if coupon:
|
|
||||||
expire_time = datetime.now() + timedelta(days=config["expire_days"])
|
|
||||||
for _ in range(config["count"]):
|
|
||||||
user_coupon = UserCouponDB(
|
|
||||||
user_id=user_id,
|
|
||||||
coupon_id=coupon.id,
|
|
||||||
coupon_name=coupon.name,
|
|
||||||
coupon_amount=coupon.amount,
|
|
||||||
expire_time=expire_time,
|
|
||||||
status="unused"
|
|
||||||
)
|
|
||||||
db.add(user_coupon)
|
|
||||||
|
|
||||||
@router.get("/list", response_model=ResponseModel)
|
@router.get("/list", response_model=ResponseModel)
|
||||||
async def get_list(
|
async def get_list(
|
||||||
skip: int = 0,
|
skip: int = 0,
|
||||||
|
|||||||
@ -25,6 +25,7 @@ class PointRecordDB(Base):
|
|||||||
class PointRecordCreate(BaseModel):
|
class PointRecordCreate(BaseModel):
|
||||||
user_id: int = Field(..., description="用户ID")
|
user_id: int = Field(..., description="用户ID")
|
||||||
points: float = Field(..., description="积分变动值,可为正或负")
|
points: float = Field(..., description="积分变动值,可为正或负")
|
||||||
|
type: PointRecordType = Field(..., description="积分变动类型")
|
||||||
description: str = Field(..., min_length=1, max_length=200)
|
description: str = Field(..., min_length=1, max_length=200)
|
||||||
|
|
||||||
class PointRecordInfo(BaseModel):
|
class PointRecordInfo(BaseModel):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user