Merge pull request #2478 from BEDOLAGA-DEV/dev

Dev
This commit is contained in:
Egor
2026-02-01 00:54:44 +03:00
committed by GitHub
2 changed files with 21 additions and 17 deletions

View File

@@ -408,29 +408,33 @@ async def add_user_balance(
# Автоматическое возобновление приостановленной суточной подписки
try:
from app.database.crud.subscription import resume_daily_subscription
from app.database.crud.tariff import get_tariff_by_id
from app.database.models import SubscriptionStatus
subscription = user.subscription
if subscription and subscription.status == SubscriptionStatus.DISABLED.value:
# Проверяем что это суточный тариф
is_daily = getattr(subscription, 'is_daily_tariff', False)
if is_daily and subscription.tariff:
daily_price = getattr(subscription.tariff, 'daily_price_kopeks', 0)
# Если баланс достаточный для суточной оплаты - возобновляем
if daily_price > 0 and user.balance_kopeks >= daily_price:
await resume_daily_subscription(db, subscription)
logger.info(
f'✅ Автоматически возобновлена суточная подписка {subscription.id} '
f'после пополнения баланса (user_id={user.id})'
)
# Синхронизируем с RemnaWave
try:
from app.services.subscription_service import SubscriptionService
if is_daily and subscription.tariff_id:
# Загружаем тариф явно, чтобы избежать lazy loading
tariff = await get_tariff_by_id(db, subscription.tariff_id)
if tariff:
daily_price = getattr(tariff, 'daily_price_kopeks', 0)
# Если баланс достаточный для суточной оплаты - возобновляем
if daily_price > 0 and user.balance_kopeks >= daily_price:
await resume_daily_subscription(db, subscription)
logger.info(
f'✅ Автоматически возобновлена суточная подписка {subscription.id} '
f'после пополнения баланса (user_id={user.id})'
)
# Синхронизируем с RemnaWave
try:
from app.services.subscription_service import SubscriptionService
subscription_service = SubscriptionService()
await subscription_service.update_remnawave_user(db, subscription)
except Exception as sync_err:
logger.warning(f'Не удалось синхронизировать с RemnaWave: {sync_err}')
subscription_service = SubscriptionService()
await subscription_service.update_remnawave_user(db, subscription)
except Exception as sync_err:
logger.warning(f'Не удалось синхронизировать с RemnaWave: {sync_err}')
except Exception as resume_err:
logger.warning(f'Ошибка при попытке возобновить суточную подписку: {resume_err}')

View File

@@ -91,7 +91,7 @@ class TributeService:
amount_kopeks = data.get('amount', 0)
telegram_user_id = data.get('telegram_user_id')
if event_name == 'new_donation':
if event_name in ('new_donation', 'recurrent_donation'):
status = 'paid'
elif event_name == 'cancelled_subscription':
status = 'cancelled'