refund_jndz_car.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # coding=utf-8
  2. import os
  3. import datetime
  4. from apps.web.constant import USER_RECHARGE_TYPE
  5. from base import init_env
  6. from bson import ObjectId
  7. init_env(True)
  8. from apps.web.user.transaction_deprecated import refund_cash
  9. from apilib.monetary import RMB, VirtualCoin
  10. from apps.web.report.ledger import Ledger
  11. from apps.web.user.models import ConsumeRecord, RechargeRecord
  12. from apps.web.dealer.proxy import DealerIncomeProxy
  13. from apps.web.device.models import Device, Group
  14. def get_recharge_record():
  15. devTypeCode = "100604"
  16. st = datetime.datetime(2021, 1, 15)
  17. et = datetime.datetime(2021, 1, 20, 11, 40)
  18. deviceNos = [dev.devNo for dev in Device.objects.filter(driverCode=devTypeCode)]
  19. records = RechargeRecord.objects.filter(
  20. devNo__in=deviceNos,
  21. result="success",
  22. isQuickPay=True,
  23. via__in=["recharge"],
  24. dateTimeAdded__gte=st,
  25. dateTimeAdded__lte=et,
  26. )
  27. return records
  28. def repaire(record):
  29. # 已经分账的 直接略过
  30. if DealerIncomeProxy.objects.filter(ref_id=ObjectId(record.id)):
  31. return
  32. # 分账
  33. Ledger(USER_RECHARGE_TYPE.RECHARGE, record).execute(journal=False, stats=True, check=False)
  34. print "now to ledger!"
  35. # 去查询消费记录 消费记录里面有退款的信息
  36. consumeRecord = ConsumeRecord.objects.filter(startKey=record.attachParas.get("startKey")).first()
  37. if not consumeRecord:
  38. print "{} has not consume record".format(record.id)
  39. return
  40. refundMoney = consumeRecord.servicedInfo.get("refundedCash")
  41. if not refundMoney:
  42. print "{} has not refund money".format(record.id)
  43. else:
  44. refund_cash(record, RMB(refundMoney), VirtualCoin(0))
  45. print "{} , total is {} need to refund money {}".format(record.id, record.money, refundMoney)
  46. def main():
  47. for record in get_recharge_record():
  48. repaire(record)
  49. if __name__ == '__main__':
  50. main()