123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- # 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': <RMB 0.00> ,
- u'61ba2ce000304845c2779797': <RMB 23.77> ,
- u'62b122af003048d043c68f54': <RMB 301.43> ,
- u'62b1c7886f29251b9886e8b0': <RMB 266.63> }
- """
- # 以下是甘明波错误的分账地址 金额被扣除 建立负数单子(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': <RMB 371.75> ,
- u'62ad5e1f003048033e36a2f0': <RMB 287.45> ,
- u'62ad5ff26f29256fb8104ec6': <RMB 586.50> ,
- u'62b06a886f29251b9cf7a470': <RMB 57.05> ,
- u'62b06a886f29251b9cf7a471': <RMB 24.45> ,
- u'62b08576003048d043c68da3': <RMB 9.80> }
- """
- # 以下是秦初连错误的地址分账 金额被扣除 建立负数单子(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
|