123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- # coding=utf-8
- import csv
- from base import init_env
- init_env(interactive = True)
- from apps.web.device.models import Device
- from apps.web.user.models import ConsumeRecord, MyUser
- from apps.web.dealer.models import Dealer
- from apilib.monetary import VirtualCoin
- def get_device():
- code = "1002101"
- agentId = "5b1dfe024864d01678b57990"
- dealerIds = [str(dealer.id) for dealer in Dealer.objects.filter(agentId=agentId)]
- devNos = list()
- for dev in Device.objects.filter(ownerId__in=dealerIds):
- if dev.devType.get("code") == code:
- devNos.append(dev.devNo)
- return devNos
- def get_record():
- devNos = get_device()
- records = ConsumeRecord.objects.filter(devNo__in=devNos)
- info = list()
- for record in records:
- if not record.servicedInfo:
- continue
- refundCoins = record.servicedInfo.get("refundedMoney")
- if not refundCoins:
- continue
- if float(refundCoins) > float(record.coin):
- user = MyUser.objects.filter(openId=record.openId, groupId=record.groupId).first()
- nickname = user.nickname
- via = u"微信" if user.gateway == "wechat" else u"支付宝"
- info.append({
- "id": str(record.id),
- "refund": refundCoins,
- "pay": record.coin,
- "openId": record.openId,
- "groupId": record.groupId,
- "time": str(record.finishedTime)[:19],
- "nickname": nickname,
- "via": via,
- "devNo": record.devNo
- })
- return info
- def main():
- info = get_record()
- with open("refund.csv", "w") as f:
- fieldnames = ['id', 'refund', "pay", "openId", "groupId", "time", "nickname", "via", "devNo"]
- w = csv.DictWriter(f, fieldnames=fieldnames)
- w.writerows(info)
- def charge_user_coin():
- info = get_record()
- for item in info:
- openId = item.get("openId")
- refund = item.get("refund")
- groupId = item.get("groupId")
- user = MyUser.objects.filter(openId=openId, groupId=groupId).first()
- print u"目前用户余额 {}, 需要扣除 {}".format(user.balance, refund)
- s = raw_input("是否继续y/n")
- if s == "y":
- if VirtualCoin(user.balance) > VirtualCoin(refund):
- user.pay(VirtualCoin(refund))
- else:
- user.pay(VirtualCoin(user.balance))
- def get_dev_logicalCode():
- devNos = get_device()
- logicalCodes = list()
- for devNo in devNos:
- dev = Device.get_dev(devNo)
- logicalCodes.append(dev.logicalCode)
- with open("refund_dev.txt", "w") as f:
- logicalStr = "\n".join(list(set(logicalCodes)))
- f.write(logicalStr)
- if __name__ == '__main__':
- get_dev_logicalCode()
|