Files
Django/jituan/management/commands/backfill_tixian_club_id.py

43 lines
1.8 KiB
Python

"""按用户 ClubID 回填提现流水 club_id。"""
from django.core.management.base import BaseCommand
from django.db import transaction
from jituan.constants import CLUB_ID_DEFAULT
from jituan.services.club_user import get_user_club_id
from users.business_models import User
from users.models import TixianAutoRecord, Tixianjilu, TixianShenheJilu
class Command(BaseCommand):
help = '回填 tixianjilu / tixian_shenhe_jilu / tixian_auto_record 的 club_id'
def handle(self, *args, **options):
uid_club = {}
for u in User.query.all().only('UserUID', 'ClubID'):
uid_club[u.UserUID] = get_user_club_id(u)
updated = {'jilu': 0, 'shenhe': 0, 'auto': 0}
with transaction.atomic():
for row in Tixianjilu.query.all().only('id', 'yonghuid', 'club_id'):
cid = uid_club.get(row.yonghuid) or CLUB_ID_DEFAULT
if row.club_id != cid:
Tixianjilu.query.filter(id=row.id).update(club_id=cid)
updated['jilu'] += 1
for row in TixianShenheJilu.query.all().only('id', 'yonghuid', 'club_id'):
cid = uid_club.get(row.yonghuid) or CLUB_ID_DEFAULT
if row.club_id != cid:
TixianShenheJilu.query.filter(id=row.id).update(club_id=cid)
updated['shenhe'] += 1
for row in TixianAutoRecord.query.all().only('id', 'yonghuid', 'club_id'):
cid = uid_club.get(row.yonghuid) or CLUB_ID_DEFAULT
if row.club_id != cid:
TixianAutoRecord.query.filter(id=row.id).update(club_id=cid)
updated['auto'] += 1
self.stdout.write(self.style.SUCCESS(
f'回填完成: jilu={updated["jilu"]}, shenhe={updated["shenhe"]}, auto={updated["auto"]}'
))