fillup_recharge_ledger.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import os
  4. import sys
  5. import datetime
  6. import click
  7. #: current_dir - 2
  8. from apps.web.constant import USER_RECHARGE_TYPE
  9. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  10. sys.path.insert(0, PROJECT_ROOT)
  11. from script.base import init_env, get_logger
  12. logger = get_logger(__name__)
  13. init_env(interactive=True)
  14. from apps.web.dealer.define import DEALER_INCOME_SOURCE
  15. from apps.web.user.models import RechargeRecord
  16. from apps.web.device.models import Device, Group
  17. from apps.web.report.ledger import Ledger
  18. from apps.web.dealer.proxy import DealerIncomeProxy
  19. start_time = datetime.datetime(2018, 10, 27, 5, 0, 0)
  20. end_time = datetime.datetime(2018, 10, 27, 16, 28, 0)
  21. records = RechargeRecord.objects(isQuickPay=False,
  22. result='success',
  23. via='recharge',
  24. dateTimeAdded__lte=end_time,
  25. dateTimeAdded__gte=start_time)
  26. false_set = [ _.ref_id for _ in DealerIncomeProxy.objects(ref_id__in=[ _.id for _ in records ]) ]
  27. records = [ r for r in records if r.id not in false_set ]
  28. logger.info('we are going to process %d records' % (len(records),))
  29. def process(record):
  30. # type: (RechargeRecord)->None
  31. dev = Device.get_dev(record.devNo)
  32. group = Group.get_group(dev['groupId'])
  33. ledger = Ledger(USER_RECHARGE_TYPE.RECHARGE, record, notify = False)
  34. ledger.execute(journal=True, stats=True, check=True)
  35. for record in records: # type: RechargeRecord
  36. process(record)