# coding=utf-8 import os import datetime from apps.web.constant import USER_RECHARGE_TYPE from base import init_env from bson import ObjectId init_env(True) from apps.web.user.transaction_deprecated import refund_cash from apilib.monetary import RMB, VirtualCoin from apps.web.report.ledger import Ledger from apps.web.user.models import ConsumeRecord, RechargeRecord from apps.web.dealer.proxy import DealerIncomeProxy from apps.web.device.models import Device, Group def get_recharge_record(): devTypeCode = "100604" st = datetime.datetime(2021, 1, 15) et = datetime.datetime(2021, 1, 20, 11, 40) deviceNos = [dev.devNo for dev in Device.objects.filter(driverCode=devTypeCode)] records = RechargeRecord.objects.filter( devNo__in=deviceNos, result="success", isQuickPay=True, via__in=["recharge"], dateTimeAdded__gte=st, dateTimeAdded__lte=et, ) return records def repaire(record): # 已经分账的 直接略过 if DealerIncomeProxy.objects.filter(ref_id=ObjectId(record.id)): return # 分账 Ledger(USER_RECHARGE_TYPE.RECHARGE, record).execute(journal=False, stats=True, check=False) print "now to ledger!" # 去查询消费记录 消费记录里面有退款的信息 consumeRecord = ConsumeRecord.objects.filter(startKey=record.attachParas.get("startKey")).first() if not consumeRecord: print "{} has not consume record".format(record.id) return refundMoney = consumeRecord.servicedInfo.get("refundedCash") if not refundMoney: print "{} has not refund money".format(record.id) else: refund_cash(record, RMB(refundMoney), VirtualCoin(0)) print "{} , total is {} need to refund money {}".format(record.id, record.money, refundMoney) def main(): for record in get_recharge_record(): repaire(record) if __name__ == '__main__': main()