feat(jituan): 集团多俱乐部改造 — club 隔离、财务/提现/分红/展示配置

This commit is contained in:
XingQue
2026-06-24 05:02:18 +08:00
parent ce9b09f096
commit dcc4936428
82 changed files with 5748 additions and 924 deletions

View File

@@ -0,0 +1,42 @@
"""回填罚单 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_penalty import resolve_penalty_club_id
from orders.models import Order, Penalty
from users.business_models import User
class Command(BaseCommand):
help = '按关联订单/被罚用户回填 fadan.club_id默认仅处理仍为 xq 的记录)'
def add_arguments(self, parser):
parser.add_argument('--all', action='store_true', help='重算全部罚单(慎用)')
parser.add_argument('--dry-run', action='store_true')
def handle(self, *args, **options):
dry = options['dry_run']
qs = Penalty.query.all()
if not options['all']:
qs = qs.filter(ClubID=CLUB_ID_DEFAULT)
updated = 0
with transaction.atomic():
for p in qs.iterator():
order = None
if p.RelatedOrderID:
order = Order.query.filter(OrderID=p.RelatedOrderID).first()
cid = resolve_penalty_club_id(
order=order,
penalized_user_id=p.PenalizedUserID,
)
if cid and cid != p.ClubID:
if dry:
self.stdout.write(f'would update penalty {p.id}: {p.ClubID} -> {cid}')
else:
p.ClubID = cid
p.save(update_fields=['ClubID'])
updated += 1
self.stdout.write(self.style.SUCCESS(f'罚单 club_id 更新 {updated}'))