增加 邀请人和 注册送券 功能。
This commit is contained in:
parent
6d0793c2b1
commit
70f5dd0c52
@ -1,6 +1,7 @@
|
||||
from fastapi import APIRouter, HTTPException, Depends, Response, Body
|
||||
from sqlalchemy.orm import Session
|
||||
from app.models.user import UserLogin, UserInfo, VerifyCodeRequest, UserDB, UserUpdate, UserRole, UserPasswordLogin, ReferralUserInfo
|
||||
from app.models.user import UserLogin, UserInfo, VerifyCodeRequest, UserDB, UserUpdate, UserRole, UserPasswordLogin, ReferralUserInfo, generate_user_code
|
||||
from app.models.coupon import CouponDB, UserCouponDB
|
||||
from app.api.deps import get_current_user, get_admin_user
|
||||
from app.models.database import get_db
|
||||
import random
|
||||
@ -85,12 +86,22 @@ async def login(
|
||||
# 查找或创建用户
|
||||
user = db.query(UserDB).filter(UserDB.phone == phone).first()
|
||||
if not user:
|
||||
# 生成用户编码
|
||||
user_code = generate_user_code()
|
||||
|
||||
user = UserDB(
|
||||
username=f"user_{phone[-4:]}",
|
||||
phone=phone,
|
||||
user_code=user_code,
|
||||
referral_code=user_login.referral_code,
|
||||
roles=[UserRole.USER]
|
||||
)
|
||||
db.add(user)
|
||||
db.flush() # 获取用户ID
|
||||
|
||||
# 发放优惠券
|
||||
issue_register_coupons(db, user.userid)
|
||||
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
|
||||
@ -132,11 +143,21 @@ async def mock_login(
|
||||
# 查找或创建用户
|
||||
user = db.query(UserDB).filter(UserDB.phone == request.phone).first()
|
||||
if not user:
|
||||
# 生成用户编码
|
||||
user_code = generate_user_code()
|
||||
|
||||
user = UserDB(
|
||||
username=f"user_{request.phone[-4:]}",
|
||||
phone=request.phone
|
||||
phone=request.phone,
|
||||
user_code=user_code,
|
||||
roles=[UserRole.USER]
|
||||
)
|
||||
db.add(user)
|
||||
db.flush()
|
||||
|
||||
# 发放优惠券
|
||||
issue_register_coupons(db, user.userid)
|
||||
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
|
||||
@ -278,4 +299,26 @@ async def get_referral_users(
|
||||
phone=mask_phone(user.phone),
|
||||
create_time=user.create_time
|
||||
) for user in referral_users
|
||||
])
|
||||
])
|
||||
|
||||
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:
|
||||
for _ in range(config["count"]):
|
||||
user_coupon = UserCouponDB(
|
||||
user_id=user_id,
|
||||
coupon_id=coupon.id,
|
||||
status="unused"
|
||||
)
|
||||
db.add(user_coupon)
|
||||
@ -12,7 +12,7 @@ class Settings(BaseSettings):
|
||||
ORDER_EXTRA_PACKAGE_THRESHOLD: int = 5 # 额外收费阈值
|
||||
|
||||
# JWT 配置
|
||||
SECRET_KEY: str = "your-secret-key-here"
|
||||
SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p"
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES: Optional[int] = None # None 表示永不过期
|
||||
|
||||
REDIS_HOST: str = "101.36.120.145"
|
||||
@ -44,7 +44,13 @@ class Settings(BaseSettings):
|
||||
COS_BUCKET: str = "dman-1311994147"
|
||||
COS_BASE_URL: str = "dman-1311994147.cos.ap-chengdu.myqcloud.com"
|
||||
|
||||
# 注册赠券配置
|
||||
REGISTER_COUPONS: list = [
|
||||
{"coupon_id": 1, "count": 3},
|
||||
]
|
||||
|
||||
class Config:
|
||||
case_sensitive = True
|
||||
env_file = ".env"
|
||||
|
||||
settings = Settings()
|
||||
Loading…
Reference in New Issue
Block a user