# coding=utf-8 import os from base import init_env os.environ["DJANGO_SETTINGS_MODULE"] = "configs.dev_zjl" init_env(False) from django.utils.module_loading import import_string from apps.web.report.utils import CentralDataProcessor from apps.web.dealer.proxy import record_income_proxy, DealerIncomeProxy from apps.web.core import ROLE from apps.web.dealer.models import Dealer from apps.web.helpers import get_user_manager_agent, DealerCustomizedBrandVisitor, AgentCustomizedBrandVisitor from apps.web.device.models import Device, DeviceDict, Group, GroupDict from apps.web.report.ledger import Ledger from apps.web.user.models import RechargeRecord from apps.web.constant import USER_RECHARGE_TYPE from apilib.monetary import RMB, VirtualCoin from apps.web.common.transaction import OrderNoMaker, OrderMainType, UserPaySubType import datetime def _create_recharge(): # 以下是正式环境的信息 # logicalCode = "406852" # groupId = "611375c8dde4bfce0cc70a33" # ownerId = "6113748e00304804c464787f" # 以下是测试环境的信息 # logicalCode = "010101" # groupId = "62b4005169f046a084a83fae" # ownerId = "62188a891bab8edffc4d88ad" # 这个是测试账号的账单增加信息 # logicalCode = "010107" # groupId = "62b4005169f046a084a83fae" # ownerId = "62188a891bab8edffc4d88ad" # 以下是李虎增加金额的地址信息 # logicalCode = "406852" # groupId = "5bbaa56e8732d608488522ee" # ownerId = "5b4de0fc8732d60cb4c3ba0c" # ----------------------------- """ {u'6417d4456f29257125ebf705': , u'61ba2ce000304845c2779797': , u'62b122af003048d043c68f54': , u'62b1c7886f29251b9886e8b0': } """ # 以下是甘明波错误的分账地址 金额被扣除 建立负数单子(1) # logicalCode = "G354338" # groupId = "62ce8c793637e3149dd8f1d8" # ownerId = "61ba2ce000304845c2779797" # 以下是甘明波错误的分账地址 金额被扣除 建立负数单子(2) # logicalCode = "G354338" # groupId = "62ce93263637e3149d0c2d74" # ownerId = "62b122af003048d043c68f54" # 以下是甘明波错误的分账地址 金额被扣除 建立负数单子(3) # logicalCode = "G354338" # groupId = "62ce943c3637e3149d15e275" # ownerId = "62b1c7886f29251b9886e8b0" # 以下是甘明波错误的分账地址 分账补偿 # logicalCode = "G395694" # groupId = "6112618edde4bfce0cbb8d78" # ownerId = "61114960003048c1e36cdca3" """ u'5b26152e8732d672afcab4b9': , u'62ad5e1f003048033e36a2f0': , u'62ad5ff26f29256fb8104ec6': , u'62b06a886f29251b9cf7a470': , u'62b06a886f29251b9cf7a471': , u'62b08576003048d043c68da3': } """ # 以下是秦初连错误的地址分账 金额被扣除 建立负数单子(1) # logicalCode = "G384694" # groupId = "5b2615b78732d672afcab4e2" # ownerId = "5b26152e8732d672afcab4b9" # money = -371.75 # 以下是秦初连错误的地址分账 金额被扣除 建立负数单子(2) # logicalCode = "G384694" # groupId = "62cea0223637e3149d913a09" # ownerId = "62ad5e1f003048033e36a2f0" # money = -287.45 # 以下是秦初连错误的地址分账 金额被扣除 建立负数单子(3) # logicalCode = "G384694" # groupId = "62cea1693637e3149d9f66d5" # ownerId = "62ad5ff26f29256fb8104ec6" # money = -586.50 # 以下是秦初连错误的地址分账 金额被扣除 建立负数单子(4) # logicalCode = "G384694" # groupId = "62cea2d83637e3149daf69c7" # ownerId = "62b06a886f29251b9cf7a470" # money = -57.05 # 以下是秦初连错误的地址分账 金额被扣除 建立负数单子(5) # logicalCode = "G384694" # groupId = "62cea4123637e3149dbc8ec1" # ownerId = "62b06a886f29251b9cf7a471" # money = -24.45 # 以下是秦初连错误的地址分账 金额被扣除 建立负数单子(6) # logicalCode = "G384694" # groupId = "62cea4be3637e3149dc41076" # ownerId = "62b08576003048d043c68da3" # money = -9.80 # 以下是秦初连错误的分账地址 分账补偿 logicalCode = "G300942" groupId = "5cd4c136003048355af0f161" ownerId = "5cb287be0030482cecd6f98e" money = 9.80 + 24.45 + 57.05 + 586.50 + 287.45 + 371.75 dev = Device.get_dev_by_l(logicalCode) # type: DeviceDict group = Group.get_group(groupId) # type: GroupDict dealer = Dealer.objects.get(id=ownerId) product_agent = get_user_manager_agent(dealer) source = product_agent visitor = AgentCustomizedBrandVisitor funName = "get_{}_env_pay_gateway".format("wechat") get_env_pay_gateway_func = import_string("apps.web.helpers.{}".format(funName)) payment_gateway = get_env_pay_gateway_func(source, role=ROLE.myuser, vistor=visitor) # 创建一张名为系统调整的订单 同时金额为负数 (扣钱的人是负数订单 得钱的人是正数订单) orderNo = OrderNoMaker.make_order_no_32( identifier=dev.logicalCode, main_type=OrderMainType.PAY, sub_type="S" ) wxOrderNo = "" transactionId = "" ownerId = ownerId openId = "" groupId = groupId nickname = "" money = RMB(money) coins = VirtualCoin(0) subject = u"调整地址<5cd4c136003048355af0f161>设备收益差额" result = "success" isQuickPay = False via = "recharge" devNo = dev.devNo logicalCode = logicalCode devType = dev.devTypeName groupName = group.groupName address = group.address operator = "SYSTEM" dateTimeAdded = datetime.datetime(2022, 6, 15) payload = { "orderNo": orderNo, "wxOrderNo": wxOrderNo, "transactionId": transactionId, "ownerId": ownerId, "openId": openId, "groupId": groupId, "nickname": nickname, "money": money, "coins": coins, "subject": subject, "result": result, "isQuickPay": isQuickPay, "via": via, "devNo": devNo, "logicalCode": logicalCode, "devType": devType, "groupName": groupName, "address": address, "operator": operator, "dateTimeAdded": dateTimeAdded } payload.update({ 'gateway': payment_gateway.gateway_type, 'payAppType': payment_gateway.pay_app_type, 'payGatewayKey': payment_gateway.gateway_key, 'withdrawSourceKey': payment_gateway.withdraw_source_key() }) order = RechargeRecord(**payload).save() print(order.id) def _create_ledger(): # 以下是正式环境的ID # rid = "62ce351234551738b05a9f7c" # 以下是测试环境的ID # rid = "62ce2d17dfd09be536636434" # 以下是李虎的补偿id # rid = "62ce695df57e6375dd09be11" # 以下是甘明波的错误修复(扣除ID1) # rid = "62ce8d5e4980e815d12f859c" # 以下是甘明波的错误修复(扣除ID2) # rid = "62ce937e4980e815d12f859e" # 以下是甘明波的错误修复(扣除ID3) # rid = "62ce946b4980e815d12f85a0" # 以下是甘明波的错误修复(补偿) # rid = "62ce95b44980e815d12f85a2" # 以下是秦初连的错误修复 (扣除ID1) # rid = "62ce9f405c9952d06d1801bd" # 以下是秦初连的错误修复 (扣除ID2) # rid = "62cea05b5c9952d06d1801bf" # 以下是秦初连的错误修复 (扣除ID3) # rid = "62cea1855c9952d06d1801c1" # 以下是秦初连的错误修复 (扣除ID4) # rid = "62cea3665c9952d06d1801c3" # 以下是秦初连的错误修复 (扣除ID5) # rid = "62cea42a5c9952d06d1801c5" # 以下是秦初连的错误修复 (扣除ID6) # rid = "62cea4e75c9952d06d1801c7" # 以下是秦初连的错误修复(补偿) rid = "62cea7595c9952d06d1801c9" order = RechargeRecord.objects.get(id=rid) if order.isAllocatedCardMoney: return l = Ledger(USER_RECHARGE_TYPE.RECHARGE, order) income_partition = l._get_group_income_partition() total = RMB(0) for _k, _v in income_partition.items(): if _k == "owner": continue for _item in _v: total += RMB(_item["money"]) left = order.money - total income_partition["owner"][0]["money"] = left.mongo_amount from pprint import pprint pprint(income_partition) proxy = record_income_proxy(l.source, order, income_partition, dateTime=datetime.datetime(2022, 6, 15)) proxy.desc = order.subject proxy.save() for _role, _items in income_partition.items(): if _role == "agent": continue for _item in _items: dealer = Dealer.objects.get(id=_item["id"]) source_key = order.withdrawSourceKey dealer.record_income("recharge", source_key, RMB(_item['money'])) order.isAllocatedCardMoney = True order.save() def get_proxy(): """ 基本思路是 地址的地址的ownerID会发生变化 但是地址的ID本身不会发生变化 那就通过这个地址的所有的groupId找出这段时间所有的Income 并且拿到patentMap 如果partnerMap 的owner 不是当前的地址的 则是有问题的单子 """ import datetime from bson import ObjectId groupId = ObjectId("5cd4c136003048355af0f161") group = Group.objects.get(id=groupId) et = datetime.datetime(2022, 7, 1) proxies = DealerIncomeProxy.objects.filter( dateTimeAdded__lt=et, groupId=groupId ) proxyIds = [_.id for _ in proxies] pids = list() for _pid in proxyIds: _proxy = DealerIncomeProxy.objects.get(id=_pid) _items = filter(lambda x: x["role"] == "owner", _proxy.partition) if _items[0]["id"] != group.ownerId: pids.append(str(_pid)) with open("get_proxy", "w") as f: f.write("\n".join(pids)) def get_money(): from apilib.monetary import RMB with open("get_proxy") as f: pids = f.readlines() total = RMB(0) res = dict() for _pid in pids: _proxy = DealerIncomeProxy.objects.get(id=_pid.strip()) for _item in _proxy.partition: if _item["id"] not in res: res[_item["id"]] = RMB(_item["money"]) else: res[_item["id"]] += RMB(_item["money"]) from pprint import pprint pprint(res) def ganmingbo3(): from apilib.monetary import RMB with open("ganmingbo") as f: pids = f.readlines() res = "" for _pid in pids: _proxy = DealerIncomeProxy.objects.get(id=_pid.strip()) s = u"分账总金额{},".format(_proxy.totalAmount) for _item in _proxy.partition: if _item["role"] == "agent": continue _d = Dealer.objects.get(id=_item["id"]) if _item["role"] == "partner" and _item["id"] == "611884f30030487ba4ba0e8f": s += "{}-{} 分账金额 {} 正常分账,".format(_d.username, _d.nickname, _item["money"]) else: s += "{}-{} 分账金额 {} 异常分账,".format(_d.username, _d.nickname, _item["money"]) s += "\n" res += s with open("ganmingbo3", "w") as f: f.write(res) if __name__ == '__main__': pass