feat: implement advanced reward management and wheel customization

- Add customizable background color
- Add wheel animations and sound effects
- Add reward description field and winner modal
- Change font to Dana
- Add configurable reward probabilities
- Support reward types (Empty, Discount Code, LiveCoin)
- Replace reward title with reward type selector
- Allow wheel page title customization from admin panel
This commit is contained in:
2026-06-10 14:55:07 +03:30
parent b0ff339525
commit ec86cdc528
26 changed files with 1166 additions and 533 deletions

View File

@@ -5,18 +5,27 @@ from app.db.models import Item
def get_items(db: Session):
return db.query(Item).all()
def create_item(db: Session, title: str, value: int): # ✅ prize → value
item = Item(title=title, value=value) # ✅ prize → value
def create_item(db: Session, title: str, prize: str, description: str = "", prize_type: str = "پوچ", probability: float = 1.0):
item = Item(
title=title,
prize=prize,
description=description,
prize_type=prize_type,
probability=probability
)
db.add(item)
db.commit()
db.refresh(item)
return item
def update_item(db: Session, item_id: int, title: str, value: int): # ✅ prize → value
def update_item(db: Session, item_id: int, title: str, prize: str, description: str = "", prize_type: str = "پوچ", probability: float = 1.0):
item = db.query(Item).filter(Item.id == item_id).first()
if item:
item.title = title
item.value = value # ✅ prize → value
item.prize = prize
item.description = description
item.prize_type = prize_type
item.probability = probability
db.commit()
db.refresh(item)
return item
@@ -32,4 +41,5 @@ def spin_wheel(db: Session):
items = db.query(Item).all()
if not items:
return None
return random.choice(items)
weights = [item.probability for item in items]
return random.choices(items, weights=weights, k=1)[0]