feat(admin): add admin notification system for deposits, purchases, and renewals

This commit is contained in:
2026-06-04 12:35:32 +07:00
parent 5ec9491e22
commit 4c5a16a3ca
11 changed files with 249 additions and 59 deletions

View File

@@ -14,6 +14,7 @@ from repositories.subscriptions import SubscriptionRepository
from repositories.users import UserRepository
from schemas.subscriptions import InternalSquads, SubscriptionPlan, SubscriptionStatus
from services import rw as rw_service
from services.admin_notifications import notify_subscription_renewal
logger = logging.getLogger(__name__)
@@ -91,7 +92,7 @@ class RenewalService:
await self._notify_user(user_id, AUTORENEWAL_INSUFFICIENT_FUNDS)
return False
result = await self.user_repository.decrease_user_balance(
renewed_user = await self.user_repository.decrease_user_balance(
session,
user_id,
price,
@@ -99,7 +100,7 @@ class RenewalService:
description=f"autorenewal: devices={subscription.devices}, duration={subscription.duration_days}d, whitelists={subscription.whitelists}",
)
if not result:
if not renewed_user:
logger.error("Failed to decrease balance for user %d", user_id)
return False
@@ -136,6 +137,17 @@ class RenewalService:
end_date=new_end_date.strftime("%d.%m.%Y"),
),
)
await notify_subscription_renewal(
self.bot,
user_id=user_id,
amount=price,
balance_before=renewed_user.balance + price,
balance_after=renewed_user.balance,
devices=subscription.devices,
duration_days=subscription.duration_days,
whitelists=subscription.whitelists,
end_date=new_end_date.strftime("%d.%m.%Y"),
)
logger.info("Successfully renewed subscription for user %d", user_id)
return True