# 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()