fix: unassign all campaigns when revoking partner status
Previously revoke_partner only changed partner_status and commission, leaving campaigns orphaned with invalid partner_user_id. Now sets partner_user_id=NULL on all campaigns belonging to the revoked partner.
This commit is contained in:
@@ -5,10 +5,10 @@ import string
|
||||
from datetime import UTC, datetime
|
||||
|
||||
import structlog
|
||||
from sqlalchemy import desc, func, select
|
||||
from sqlalchemy import desc, func, select, update
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.database.models import PartnerApplication, PartnerStatus, User
|
||||
from app.database.models import AdvertisingCampaign, PartnerApplication, PartnerStatus, User
|
||||
|
||||
|
||||
logger = structlog.get_logger(__name__)
|
||||
@@ -164,6 +164,13 @@ class PartnerApplicationService:
|
||||
user.partner_status = PartnerStatus.NONE.value
|
||||
user.referral_commission_percent = None
|
||||
|
||||
# Отвязываем все кампании от бывшего партнёра
|
||||
await db.execute(
|
||||
update(AdvertisingCampaign)
|
||||
.where(AdvertisingCampaign.partner_user_id == user_id)
|
||||
.values(partner_user_id=None)
|
||||
)
|
||||
|
||||
await db.commit()
|
||||
|
||||
logger.info(
|
||||
|
||||
Reference in New Issue
Block a user