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