123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import datetime
- import os
- import sys
- from base import init_env
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.testing")
- init_env(interactive = False)
- from apps.web.eventer.jndz import is_server_refund
- from apps.web.user.transaction_deprecated import refund_cash
- from apps.web.core.payment import WithdrawGateway
- from apps.web.constant import USER_RECHARGE_TYPE
- from apps.web.report.ledger import Ledger
- from apps.web.core.helpers import ActionDeviceBuilder
- from apilib.monetary import Percent, RMB, VirtualCoin
- from apps.web.dealer.define import DEALER_INCOME_SOURCE
- from apps.web.dealer.models import Dealer, DealerRechargeRecord
- from apps.web.core import ROLE, PayAppType
- from apps.web.agent.models import Agent
- from apps.web.dealer.proxy import record_income_proxy
- from apilib.utils_json import json_loads
- from apps.web.device.models import Device, Group, DeviceType, DeviceCacheMgr, DeviceDict
- # from apps.web.utils import set_or_incr_cache
- # from apps import serviceCache
- from apps.web.user.models import ConsumeRecord, RechargeRecord, VCardConsumeRecord, Card, CardConsumeRecord
- # from apps.web.dealer.tasks import report_daily_report_to_dealer_via_wechat
- # report_daily_report_to_dealer_via_wechat()
- # set_or_incr_cache(serviceCache, "test", 1, 360)
- # orders = VCardConsumeRecord.objects(dealerId__nin=[None,'']).all()
- #
- # for order in orders:
- # print order.dev_type_name, order.device, order.dev_type_code, order.group, order.owner
- # from apps.web.dealer.tasks import dealer_auto_charge_sim_card
- # dealer_auto_charge_sim_card()
- # device = Device.objects(logicalCode='602499').first()
- # dealer = Dealer.objects(id = '5b9ae99ad89a177846459999').first()
- # group = Group.get_group('5ba35e7396a03703f0c3d2ca')
- # sim_recharge = DealerRechargeRecord.objects(id = '630889c034f2d00976295214').first()
- from apps.web.core.models import WechatPayApp, AliApp, JDAggrePayApp, JDOpenPayApp
- # income_record = RechargeRecord.issue_from_auto_sim_order(dealer, sim_recharge, device, group)
- # income_record = RechargeRecord.objects(id = '63088d5c9c531030e6cf5572').first() # type: RechargeRecord
- #
- # record_income_proxy(DEALER_INCOME_SOURCE.AUTO_SIM, income_record, {
- # "owner": [
- # {
- # "money": income_record.money.mongo_amount,
- # "role": "owner",
- # "share": Percent("100.0"),
- # "id": str(dealer.id)
- # }
- # ],
- # 'partner': []
- # })
- # agent = Agent.objects(id = settings.MY_PRIMARY_AGENT_ID).first() # type: Agent
- #
- # print '========== agent = {} ==============='.format(str(agent.id))
- #
- # print repr(agent.my_wechat_pay_app)
- # print repr(agent.my_ali_pay_app)
- # print repr(agent.my_jd_aggre_pay_app)
- #
- # for dealer in Dealer.objects(agentId = settings.MY_PRIMARY_AGENT_ID).limit(100):
- # assert dealer.current_wallet_withdraw_source_key == agent.current_wallet_withdraw_source_key, u'error'
- #
- # for agent in Agent.objects(customizedWechatCashflowAllowable = True, id__ne=settings.MY_PRIMARY_AGENT_ID):
- # print '========== agent = {} ==============='.format(str(agent.id))
- #
- # print repr(agent.my_wechat_pay_app)
- # print repr(agent.my_ali_pay_app)
- # print repr(agent.my_jd_aggre_pay_app)
- #
- # for dealer in Dealer.objects(agentId = str(agent.id)).limit(100):
- # assert dealer.current_wallet_withdraw_source_key == agent.current_wallet_withdraw_source_key, u'error2'
- #
- # for agent in Agent.objects(id = '596efac78732d64d61430cd7'):
- # try:
- # app = agent.my_wechat_pay_app
- # test_app = WechatPayApp.objects(id = str(app.id)).first() # type: WechatPayApp
- # test_app.occupantId = str(agent.id)
- # test_app.role = ROLE.agent
- # print test_app.occupant
- # assert test_app.occupant.id == agent.id, 'sss'
- # except Exception as e:
- # print str(agent.id), 'wechat'
- #
- # try:
- # app = agent.my_ali_pay_app
- # if app:
- # test_app = AliApp.objects(id = str(app.id)).first() # type: AliApp
- # test_app.occupantId = str(agent.id)
- # test_app.role = ROLE.agent
- # print test_app.occupant
- #
- # assert test_app.occupant.id == agent.id, 'sss'
- # except Exception as e:
- # print str(agent.id), 'ali'
- #
- # try:
- # app = agent.my_jd_aggre_pay_app
- # if app:
- # test_app = JDAggrePayApp.objects(id = str(app.id)).first() # type: JDAggrePayApp
- # test_app.occupantId = str(agent.id)
- # test_app.role = ROLE.agent
- # print test_app.occupant
- # assert test_app.occupant.id == agent.id, 'sss'
- # except Exception as e:
- # print str(agent.id), 'jd'
- # dev = Device.get_dev('861714052017435')
- # box = ActionDeviceBuilder.create_action_device(dev)
- # print box.get_policy_for_user()
- #
- # all = set()
- #
- # for record in DealerRechargeRecord.objects(
- # __raw__ = {'name': {'$regex': '自动续费'}}).all(): # type: DealerRechargeRecord
- # all.add(record.dealerId)
- #
- # print all
- # from apps.web.dealer.tasks import dealer_auto_charge_sim_card
- #
- # dealer_auto_charge_sim_card()
- #
- # owner = Dealer.objects(id = '5b9ae99ad89a177846459999').first()
- #
- # print owner
- #
- # driverCodes = set()
- # for item in Device.get_collection().aggregate([{'$match': {}}, {'$group': {'_id': '$driverCode'}}]):
- # driverCodes.add(item['_id'])
- #
- # driverCodes.add(None)
- # driverCodes.add('')
- #
- # print driverCodes
- import time
- # for device in Device.objects(driverCode = '300001').limit(100):
- # try:
- # start = time.time()
- #
- # recommend, all = DeviceType.find_candidate(device, owner)
- #
- # end = time.time()
- #
- # print '{} {} {} {} {} {} {} {} {}\r\n'.format(
- # end - start,
- # device.logicalCode,
- # device.driverCode,
- # device.driverVersion,
- # device.mf,
- # device.coreVer,
- # device.softVer,
- # [item['code'] for item in recommend],
- #
- # # for driverCode in driverCodes:
- # # print driverCode
- # # for device in Device.objects(driverCode = driverCode).limit(100):
- # # try:
- # # start = time.time()
- # #
- # # recommend, all = DeviceType.find_candidate(device, owner)
- # #
- # # end = time.time()
- # #
- # # print '{} {} {} {} {} {} {} {} {}\r\n'.format(
- # # end - start,
- # # device.logicalCode,
- # # device.driverCode,
- # # device.driverVersion,
- # # device.mf,
- # # device.coreVer,
- # # device.softVer,
- # # [item['code'] for item in recommend],
- # # [item['code'] for item in all])
- # # except Exception as e:
- # # print str(e) [item['code'] for item in all])
- # except Exception as e:
- # print str(e)
- #
- # from apps.web.core.payment.base import WithdrawGateway
- # from apps.web.common.models import WithdrawRecord
- #
- # record = WithdrawRecord.objects(order='20220926181535WDA177846459999ABR').first()
- # withdraw_gateway = WithdrawGateway.from_withdraw_gateway_key(record.withdrawGatewayKey, record.extras.get('gateway_version', 'v1'))
- #
- # query_result = withdraw_gateway.get_transfer_result_via_changes(record.order)
- #
- # print query_result
- # devices = Device.objects().all().order_by("-id").limit(500)
- # for device in devices:
- # cache_info = DeviceCacheMgr.get_device_cache(device.devNo)
- # if cache_info:
- # dev_dict = json_loads(cache_info)
- # if 'logicalCode' in dev_dict and not dev_dict['logicalCode']:
- # print device.devNo
- # Device.invalid_device_cache(device.devNo)
- # from apps.web.dealer.tasks import dealer_auto_charge_sim_card
- # dealer_auto_charge_sim_card()
- # devObj = Device.objects(logicalCode = 'G475515').first()
- # dealer = Dealer.objects(id = '5b2225ae8732d63662f97a72').first()
- #
- # recommends, alls = DeviceType.find_candidate(devObj, dealer)
- # for recommend in recommends:
- # print 'recommend: {} - {}'.format(recommend['name'], recommend['code'])
- #
- # for item in alls:
- # print 'all: {} - {}'.format(item['name'], item['code'])
- # record = RechargeRecord.objects.get(id = '59570ca58732d65f74c639bb') # type: RechargeRecord
- # # ledger = Ledger(USER_RECHARGE_TYPE.RECHARGE, record)
- # # ledger.execute(journal = False, stats = True, check = False)
- # refund_cash(record, RMB('1.00'), VirtualCoin(0))
- #
- # while True:
- # rechargeRcdId = '634d09837855409ce4a2fd2f'
- #
- # record = RechargeRecord.objects.get(id = rechargeRcdId) # type: RechargeRecord
- #
- # if not record.is_success():
- # print('{} state is {}.'.format(str(record), record.result))
- # break
- #
- # if record.is_ledgered:
- # print('{} has been ledgered.'.format(str(record)))
- # break
- #
- # ledgerTime = None if (
- # not WithdrawGateway.is_ledger(record.withdraw_source_key)) else datetime.datetime.now()
- #
- # ledger = Ledger(USER_RECHARGE_TYPE.RECHARGE, record, ledgerTime = ledgerTime)
- # ledger.execute(journal = False, stats = True, check = False)
- #
- # break
- # skip = 0
- # limit = 2000
- # count = 0
- #
- # QUIT = False
- #
- # rv = []
- #
- # while True:
- # orders = CardConsumeRecord.objects().order_by('-id').skip(skip).limit(limit)
- # count = 0
- #
- # for order in orders: # type: CardConsumeRecord
- # count = count + 1
- #
- # if order.dateTimeAdded <= datetime.datetime(2022, 9, 30, 0, 0, 0):
- # QUIT = True
- # break
- #
- # if order.devNo not in rv:
- # dev = Device.get_dev(order.devNo) # type: DeviceDict
- # if dev and dev.driverCode in ['100202', '100206']:
- # rv.append(order.devNo)
- # print 'has {}.'.format(len(rv))
- #
- # if QUIT:
- # break
- #
- # print("next {}".format(skip))
- #
- # skip = skip + limit
- #
- # if count == 0:
- # break
- #
- # print rv
- # rv_time = []
- # rv_elec = []
- # dealerids_time = set()
- # dealerids_elec = set()
- # agents = [_ for _ in Agent.objects()]
- # for agent in agents:
- # if not Card.objects(agentId = str(agent.id)).first():
- # continue
- #
- # dealers = [_ for _ in Dealer.objects(agentId = str(agent.id))]
- # for dealer in dealers:
- # if dealer.supports('support_new_card_proc'):
- # continue
- #
- # devices = [_ for _ in Device.objects(ownerId = str(dealer.id))]
- # for device in devices: # type: Device
- # billingType = device.otherConf.get('billingType', 'time')
- # if is_server_refund(billingType, Device.get_dev(device.devNo), dealer, agent):
- # print '{} server refund is true.'.format(device)
- #
- # if billingType == 'time':
- # rv_time.append(device.devNo)
- # dealerids_time.add(str(dealer.id))
- # else:
- # rv_elec.append(device.devNo)
- # dealerids_elec.add(str(dealer.id))
- # else:
- # print '{} server refund is false.'.format(device)
- #
- #
- # devices = [_ for _ in Device.objects(driverCode__in = ['100202', '100206'], ownerId__nin = [None, ''])]
- #
- # print "hello"
- #
- # dealers = {}
- # agents = {}
- #
- # rv_time = set()
- # dealerids_time = set()
- # rv_elec = set()
- # dealerids_elec = set()
- #
- # for device in devices: # type: Device
- # devDict = Device.get_dev(device.devNo) # type: DeviceDict
- # if not devDict.online:
- # continue
- #
- # if device.ownerId in dealers:
- # dealer = dealers.get(device.ownerId)
- # else:
- # dealer = Dealer.objects(id = device.ownerId).first()
- #
- # if not dealer:
- # continue
- #
- # if dealer.supports('support_new_card_proc'):
- # continue
- #
- # if dealer.agentId in agents:
- # agent = agents.get(dealer.agentId)
- # else:
- # agent = Agent.objects(id = dealer.agentId).first()
- #
- # if not agent:
- # continue
- #
- # if not Card.objects(agentId = str(agent.id)).first():
- # continue
- #
- # billingType = device.otherConf.get('billingType', 'time')
- # if is_server_refund(billingType, Device.get_dev(device.devNo), dealer, agent):
- # print '{} server refund is true.'.format(device)
- #
- # if billingType == 'time':
- # rv_time.add(device.devNo)
- # dealerids_time.add(str(dealer.id))
- # else:
- # rv_elec.add(device.devNo)
- # dealerids_elec.add(str(dealer.id))
- # else:
- # print '{} server refund is false.'.format(device)
- # print rv_time
- # print dealerids_time
- # print rv_elec
- # print dealerids_elec
- # dealer = Dealer.objects(id = '5b9ae99ad89a177846459999').first()
- #
- #
- # app = JDOpenPayApp.objects(id = '635bbae869f046a0846dba72').first()
- # dealer.merchantApp = app
- # dealer.payAppType = PayAppType.JD_OPEN
- # dealer.save()
- from apilib.utils_datetime import to_datetime
- from apps.web.device.timescale import PowerManager
- items = PowerManager.instence().get(devNo='863488058609218', port=3, sTime=to_datetime('2022-11-08 11:30:00'), eTime=to_datetime('2022-11-08 12:30:00'),
- interval = 300)
- print 'aaa'
|