diff --git a/app/database/crud/subscription.py b/app/database/crud/subscription.py index dc84131d..60bdb5cc 100644 --- a/app/database/crud/subscription.py +++ b/app/database/crud/subscription.py @@ -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( diff --git a/app/utils/user_utils.py b/app/utils/user_utils.py index 1eba7d9c..8292f5e1 100644 --- a/app/utils/user_utils.py +++ b/app/utils/user_utils.py @@ -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: