Merge pull request #100 from Fr1ngg/dev

Починка покупки подписки
This commit is contained in:
Egor
2025-09-18 16:29:07 +03:00
committed by GitHub
2 changed files with 9 additions and 15 deletions

View File

@@ -442,6 +442,8 @@ async def add_subscription_servers(
server_squad_ids: List[int],
paid_prices: List[int] = None
) -> Subscription:
await db.refresh(subscription)
if paid_prices is None:
months_remaining = get_remaining_months(subscription.end_date)
paid_prices = []
@@ -458,7 +460,7 @@ async def add_subscription_servers(
for i, server_id in enumerate(server_squad_ids):
subscription_server = SubscriptionServer(
subscription_id=subscription.id,
subscription_id=subscription.id,
server_squad_id=server_id,
paid_price_kopeks=paid_prices[i] if i < len(paid_prices) else 0
)
@@ -467,7 +469,7 @@ async def add_subscription_servers(
await db.commit()
await db.refresh(subscription)
logger.info(f"🌍 К подписке {subscription.id} добавлено {len(server_squad_ids)} серверов с ценами: {paid_prices}")
logger.info(f"🌐 К подписке {subscription.id} добавлено {len(server_squad_ids)} серверов с ценами: {paid_prices}")
return subscription
async def get_server_monthly_price(

View File

@@ -28,23 +28,15 @@ async def generate_unique_referral_code(db: AsyncSession, telegram_id: int) -> s
return f"ref{timestamp}"
async def mark_user_as_had_paid_subscription(db: AsyncSession, user_id: int) -> bool:
async def mark_user_as_had_paid_subscription(db: AsyncSession, user: User) -> bool:
try:
from app.database.crud.user import get_user_by_id
from sqlalchemy import update
user = await get_user_by_id(db, user_id)
if not user:
logger.error(f"Пользователь {user_id} не найден")
return False
if user.has_had_paid_subscription:
logger.debug(f"Пользователь {user_id} уже отмечен как имевший платную подписку")
logger.debug(f"Пользователь {user.id} уже отмечен как имевший платную подписку")
return True
await db.execute(
update(User)
.where(User.id == user_id)
.where(User.id == user.id)
.values(
has_had_paid_subscription=True,
updated_at=datetime.utcnow()
@@ -52,11 +44,11 @@ async def mark_user_as_had_paid_subscription(db: AsyncSession, user_id: int) ->
)
await db.commit()
logger.info(f"✅ Пользователь {user_id} отмечен как имевший платную подписку")
logger.info(f"✅ Пользователь {user.id} отмечен как имевший платную подписку")
return True
except Exception as e:
logger.error(f"Ошибка отметки пользователя {user_id} как имевшего платную подписку: {e}")
logger.error(f"Ошибка отметки пользователя {user.id} как имевшего платную подписку: {e}")
try:
await db.rollback()
except Exception as rollback_error: