zhuxing_refund_cash.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # coding=utf-8
  2. import csv
  3. import datetime
  4. from base import init_env
  5. init_env(True)
  6. from apps.web.user.models import RechargeRecord, MyUser, ConsumeRecord
  7. LEFT_TIME = datetime.datetime.strptime("2020-09-28 07:00:00", "%Y-%m-%d %H:%M:%S")
  8. RIGHT_TIME = datetime.datetime.strptime("2020-09-28 18:00:00", "%Y-%m-%d %H:%M:%S")
  9. DEALER_ID = None
  10. REFUND = False
  11. RESULT = "success"
  12. VIA = ["recharge"]
  13. def get_record():
  14. records = RechargeRecord.objects.filter(
  15. dateTimeAdded__gte=LEFT_TIME,
  16. dateTimeAdded__lte=RIGHT_TIME,
  17. ownerId=DEALER_ID,
  18. result=RESULT,
  19. via__in=VIA
  20. )
  21. return records
  22. def record_to_dict(record):
  23. GATEWAY_MAP = {
  24. "alipay": u"支付宝",
  25. "wechat": u"微信"
  26. }
  27. return {
  28. "openId": record.openId,
  29. "logicalCode": record.logicalCode,
  30. "groupId": record.groupId,
  31. "money": record.money.mongo_amount,
  32. "coins": record.coins.mongo_amount,
  33. "dateTimeAdded": record.dateTimeAdded.strftime("%Y-%m-%d %H:%M:%S"),
  34. "gateWay": GATEWAY_MAP.get(record.gateway, u"其他途径")
  35. }
  36. def get_consume_record(startKey):
  37. """
  38. 获取消费订单
  39. :param startKey:
  40. :return:
  41. """
  42. consumeRecord = ConsumeRecord.objects.filter(startKey=startKey).first()
  43. return consumeRecord
  44. def is_user_consume_success(consumeRecord):
  45. if not consumeRecord:
  46. return True
  47. return consumeRecord.isNormal
  48. def write_record_to_csv():
  49. records = get_record()
  50. dataLis = list()
  51. for record in records:
  52. consumeRecord = get_consume_record(record.attachParas.get("startKey"))
  53. isNormal = is_user_consume_success(consumeRecord)
  54. if not isNormal:
  55. continue
  56. recordData = record_to_dict(record)
  57. user = MyUser.objects.filter(openId=recordData.get("openId"), groupId=recordData.get("groupId")).first()
  58. startTime = datetime.datetime.strptime(recordData.get("dateTimeAdded"), "%Y-%m-%d %H:%M:%S")
  59. endTime = consumeRecord.dateTimeAdded
  60. seconds = (endTime-startTime).seconds
  61. dataLis.append({
  62. "username": user.nickname,
  63. "openId": user.openId,
  64. "money": recordData.get("money"),
  65. "coins": recordData.get("coins"),
  66. "dateTimeAdded": recordData.get("dateTimeAdded"),
  67. "logicalCode": recordData.get("logicalCode"),
  68. "gateWay": recordData.get("gateWay"),
  69. "needRefund": int(not isNormal),
  70. "startTime": consumeRecord.dateTimeAdded.strftime("%Y-%m-%d %H:%M:%S"),
  71. "seconds": seconds
  72. })
  73. with open("zhuxing_{}.csv".format(DEALER_ID), "w") as f:
  74. headers = dataLis[0].keys()
  75. w = csv.DictWriter(f, fieldnames=headers)
  76. w.writeheader()
  77. w.writerows(dataLis)
  78. def run():
  79. write_record_to_csv()
  80. if __name__ == '__main__':
  81. res = raw_input(u"当前是否执行退款:{}\n".format(REFUND))
  82. assert res == "yes", u"执行结束"
  83. run()