123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- # coding=utf-8
- import csv
- import datetime
- from base import init_env
- init_env(True)
- from apps.web.user.models import RechargeRecord, MyUser, ConsumeRecord
- LEFT_TIME = datetime.datetime.strptime("2020-09-28 07:00:00", "%Y-%m-%d %H:%M:%S")
- RIGHT_TIME = datetime.datetime.strptime("2020-09-28 18:00:00", "%Y-%m-%d %H:%M:%S")
- DEALER_ID = None
- REFUND = False
- RESULT = "success"
- VIA = ["recharge"]
- def get_record():
- records = RechargeRecord.objects.filter(
- dateTimeAdded__gte=LEFT_TIME,
- dateTimeAdded__lte=RIGHT_TIME,
- ownerId=DEALER_ID,
- result=RESULT,
- via__in=VIA
- )
- return records
- def record_to_dict(record):
- GATEWAY_MAP = {
- "alipay": u"支付宝",
- "wechat": u"微信"
- }
- return {
- "openId": record.openId,
- "logicalCode": record.logicalCode,
- "groupId": record.groupId,
- "money": record.money.mongo_amount,
- "coins": record.coins.mongo_amount,
- "dateTimeAdded": record.dateTimeAdded.strftime("%Y-%m-%d %H:%M:%S"),
- "gateWay": GATEWAY_MAP.get(record.gateway, u"其他途径")
- }
- def get_consume_record(startKey):
- """
- 获取消费订单
- :param startKey:
- :return:
- """
- consumeRecord = ConsumeRecord.objects.filter(startKey=startKey).first()
- return consumeRecord
- def is_user_consume_success(consumeRecord):
- if not consumeRecord:
- return True
- return consumeRecord.isNormal
- def write_record_to_csv():
- records = get_record()
- dataLis = list()
- for record in records:
- consumeRecord = get_consume_record(record.attachParas.get("startKey"))
- isNormal = is_user_consume_success(consumeRecord)
- if not isNormal:
- continue
- recordData = record_to_dict(record)
- user = MyUser.objects.filter(openId=recordData.get("openId"), groupId=recordData.get("groupId")).first()
- startTime = datetime.datetime.strptime(recordData.get("dateTimeAdded"), "%Y-%m-%d %H:%M:%S")
- endTime = consumeRecord.dateTimeAdded
- seconds = (endTime-startTime).seconds
- dataLis.append({
- "username": user.nickname,
- "openId": user.openId,
- "money": recordData.get("money"),
- "coins": recordData.get("coins"),
- "dateTimeAdded": recordData.get("dateTimeAdded"),
- "logicalCode": recordData.get("logicalCode"),
- "gateWay": recordData.get("gateWay"),
- "needRefund": int(not isNormal),
- "startTime": consumeRecord.dateTimeAdded.strftime("%Y-%m-%d %H:%M:%S"),
- "seconds": seconds
- })
- with open("zhuxing_{}.csv".format(DEALER_ID), "w") as f:
- headers = dataLis[0].keys()
- w = csv.DictWriter(f, fieldnames=headers)
- w.writeheader()
- w.writerows(dataLis)
- def run():
- write_record_to_csv()
- if __name__ == '__main__':
- res = raw_input(u"当前是否执行退款:{}\n".format(REFUND))
- assert res == "yes", u"执行结束"
- run()
|