# -*- 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'