test.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import datetime
  4. import os
  5. import sys
  6. from base import init_env
  7. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.testing")
  8. init_env(interactive = False)
  9. from apps.web.eventer.jndz import is_server_refund
  10. from apps.web.user.transaction_deprecated import refund_cash
  11. from apps.web.core.payment import WithdrawGateway
  12. from apps.web.constant import USER_RECHARGE_TYPE
  13. from apps.web.report.ledger import Ledger
  14. from apps.web.core.helpers import ActionDeviceBuilder
  15. from apilib.monetary import Percent, RMB, VirtualCoin
  16. from apps.web.dealer.define import DEALER_INCOME_SOURCE
  17. from apps.web.dealer.models import Dealer, DealerRechargeRecord
  18. from apps.web.core import ROLE, PayAppType
  19. from apps.web.agent.models import Agent
  20. from apps.web.dealer.proxy import record_income_proxy
  21. from apilib.utils_json import json_loads
  22. from apps.web.device.models import Device, Group, DeviceType, DeviceCacheMgr, DeviceDict
  23. # from apps.web.utils import set_or_incr_cache
  24. # from apps import serviceCache
  25. from apps.web.user.models import ConsumeRecord, RechargeRecord, VCardConsumeRecord, Card, CardConsumeRecord
  26. # from apps.web.dealer.tasks import report_daily_report_to_dealer_via_wechat
  27. # report_daily_report_to_dealer_via_wechat()
  28. # set_or_incr_cache(serviceCache, "test", 1, 360)
  29. # orders = VCardConsumeRecord.objects(dealerId__nin=[None,'']).all()
  30. #
  31. # for order in orders:
  32. # print order.dev_type_name, order.device, order.dev_type_code, order.group, order.owner
  33. # from apps.web.dealer.tasks import dealer_auto_charge_sim_card
  34. # dealer_auto_charge_sim_card()
  35. # device = Device.objects(logicalCode='602499').first()
  36. # dealer = Dealer.objects(id = '5b9ae99ad89a177846459999').first()
  37. # group = Group.get_group('5ba35e7396a03703f0c3d2ca')
  38. # sim_recharge = DealerRechargeRecord.objects(id = '630889c034f2d00976295214').first()
  39. from apps.web.core.models import WechatPayApp, AliApp, JDAggrePayApp, JDOpenPayApp
  40. # income_record = RechargeRecord.issue_from_auto_sim_order(dealer, sim_recharge, device, group)
  41. # income_record = RechargeRecord.objects(id = '63088d5c9c531030e6cf5572').first() # type: RechargeRecord
  42. #
  43. # record_income_proxy(DEALER_INCOME_SOURCE.AUTO_SIM, income_record, {
  44. # "owner": [
  45. # {
  46. # "money": income_record.money.mongo_amount,
  47. # "role": "owner",
  48. # "share": Percent("100.0"),
  49. # "id": str(dealer.id)
  50. # }
  51. # ],
  52. # 'partner': []
  53. # })
  54. # agent = Agent.objects(id = settings.MY_PRIMARY_AGENT_ID).first() # type: Agent
  55. #
  56. # print '========== agent = {} ==============='.format(str(agent.id))
  57. #
  58. # print repr(agent.my_wechat_pay_app)
  59. # print repr(agent.my_ali_pay_app)
  60. # print repr(agent.my_jd_aggre_pay_app)
  61. #
  62. # for dealer in Dealer.objects(agentId = settings.MY_PRIMARY_AGENT_ID).limit(100):
  63. # assert dealer.current_wallet_withdraw_source_key == agent.current_wallet_withdraw_source_key, u'error'
  64. #
  65. # for agent in Agent.objects(customizedWechatCashflowAllowable = True, id__ne=settings.MY_PRIMARY_AGENT_ID):
  66. # print '========== agent = {} ==============='.format(str(agent.id))
  67. #
  68. # print repr(agent.my_wechat_pay_app)
  69. # print repr(agent.my_ali_pay_app)
  70. # print repr(agent.my_jd_aggre_pay_app)
  71. #
  72. # for dealer in Dealer.objects(agentId = str(agent.id)).limit(100):
  73. # assert dealer.current_wallet_withdraw_source_key == agent.current_wallet_withdraw_source_key, u'error2'
  74. #
  75. # for agent in Agent.objects(id = '596efac78732d64d61430cd7'):
  76. # try:
  77. # app = agent.my_wechat_pay_app
  78. # test_app = WechatPayApp.objects(id = str(app.id)).first() # type: WechatPayApp
  79. # test_app.occupantId = str(agent.id)
  80. # test_app.role = ROLE.agent
  81. # print test_app.occupant
  82. # assert test_app.occupant.id == agent.id, 'sss'
  83. # except Exception as e:
  84. # print str(agent.id), 'wechat'
  85. #
  86. # try:
  87. # app = agent.my_ali_pay_app
  88. # if app:
  89. # test_app = AliApp.objects(id = str(app.id)).first() # type: AliApp
  90. # test_app.occupantId = str(agent.id)
  91. # test_app.role = ROLE.agent
  92. # print test_app.occupant
  93. #
  94. # assert test_app.occupant.id == agent.id, 'sss'
  95. # except Exception as e:
  96. # print str(agent.id), 'ali'
  97. #
  98. # try:
  99. # app = agent.my_jd_aggre_pay_app
  100. # if app:
  101. # test_app = JDAggrePayApp.objects(id = str(app.id)).first() # type: JDAggrePayApp
  102. # test_app.occupantId = str(agent.id)
  103. # test_app.role = ROLE.agent
  104. # print test_app.occupant
  105. # assert test_app.occupant.id == agent.id, 'sss'
  106. # except Exception as e:
  107. # print str(agent.id), 'jd'
  108. # dev = Device.get_dev('861714052017435')
  109. # box = ActionDeviceBuilder.create_action_device(dev)
  110. # print box.get_policy_for_user()
  111. #
  112. # all = set()
  113. #
  114. # for record in DealerRechargeRecord.objects(
  115. # __raw__ = {'name': {'$regex': '自动续费'}}).all(): # type: DealerRechargeRecord
  116. # all.add(record.dealerId)
  117. #
  118. # print all
  119. # from apps.web.dealer.tasks import dealer_auto_charge_sim_card
  120. #
  121. # dealer_auto_charge_sim_card()
  122. #
  123. # owner = Dealer.objects(id = '5b9ae99ad89a177846459999').first()
  124. #
  125. # print owner
  126. #
  127. # driverCodes = set()
  128. # for item in Device.get_collection().aggregate([{'$match': {}}, {'$group': {'_id': '$driverCode'}}]):
  129. # driverCodes.add(item['_id'])
  130. #
  131. # driverCodes.add(None)
  132. # driverCodes.add('')
  133. #
  134. # print driverCodes
  135. import time
  136. # for device in Device.objects(driverCode = '300001').limit(100):
  137. # try:
  138. # start = time.time()
  139. #
  140. # recommend, all = DeviceType.find_candidate(device, owner)
  141. #
  142. # end = time.time()
  143. #
  144. # print '{} {} {} {} {} {} {} {} {}\r\n'.format(
  145. # end - start,
  146. # device.logicalCode,
  147. # device.driverCode,
  148. # device.driverVersion,
  149. # device.mf,
  150. # device.coreVer,
  151. # device.softVer,
  152. # [item['code'] for item in recommend],
  153. #
  154. # # for driverCode in driverCodes:
  155. # # print driverCode
  156. # # for device in Device.objects(driverCode = driverCode).limit(100):
  157. # # try:
  158. # # start = time.time()
  159. # #
  160. # # recommend, all = DeviceType.find_candidate(device, owner)
  161. # #
  162. # # end = time.time()
  163. # #
  164. # # print '{} {} {} {} {} {} {} {} {}\r\n'.format(
  165. # # end - start,
  166. # # device.logicalCode,
  167. # # device.driverCode,
  168. # # device.driverVersion,
  169. # # device.mf,
  170. # # device.coreVer,
  171. # # device.softVer,
  172. # # [item['code'] for item in recommend],
  173. # # [item['code'] for item in all])
  174. # # except Exception as e:
  175. # # print str(e) [item['code'] for item in all])
  176. # except Exception as e:
  177. # print str(e)
  178. #
  179. # from apps.web.core.payment.base import WithdrawGateway
  180. # from apps.web.common.models import WithdrawRecord
  181. #
  182. # record = WithdrawRecord.objects(order='20220926181535WDA177846459999ABR').first()
  183. # withdraw_gateway = WithdrawGateway.from_withdraw_gateway_key(record.withdrawGatewayKey, record.extras.get('gateway_version', 'v1'))
  184. #
  185. # query_result = withdraw_gateway.get_transfer_result_via_changes(record.order)
  186. #
  187. # print query_result
  188. # devices = Device.objects().all().order_by("-id").limit(500)
  189. # for device in devices:
  190. # cache_info = DeviceCacheMgr.get_device_cache(device.devNo)
  191. # if cache_info:
  192. # dev_dict = json_loads(cache_info)
  193. # if 'logicalCode' in dev_dict and not dev_dict['logicalCode']:
  194. # print device.devNo
  195. # Device.invalid_device_cache(device.devNo)
  196. # from apps.web.dealer.tasks import dealer_auto_charge_sim_card
  197. # dealer_auto_charge_sim_card()
  198. # devObj = Device.objects(logicalCode = 'G475515').first()
  199. # dealer = Dealer.objects(id = '5b2225ae8732d63662f97a72').first()
  200. #
  201. # recommends, alls = DeviceType.find_candidate(devObj, dealer)
  202. # for recommend in recommends:
  203. # print 'recommend: {} - {}'.format(recommend['name'], recommend['code'])
  204. #
  205. # for item in alls:
  206. # print 'all: {} - {}'.format(item['name'], item['code'])
  207. # record = RechargeRecord.objects.get(id = '59570ca58732d65f74c639bb') # type: RechargeRecord
  208. # # ledger = Ledger(USER_RECHARGE_TYPE.RECHARGE, record)
  209. # # ledger.execute(journal = False, stats = True, check = False)
  210. # refund_cash(record, RMB('1.00'), VirtualCoin(0))
  211. #
  212. # while True:
  213. # rechargeRcdId = '634d09837855409ce4a2fd2f'
  214. #
  215. # record = RechargeRecord.objects.get(id = rechargeRcdId) # type: RechargeRecord
  216. #
  217. # if not record.is_success():
  218. # print('{} state is {}.'.format(str(record), record.result))
  219. # break
  220. #
  221. # if record.is_ledgered:
  222. # print('{} has been ledgered.'.format(str(record)))
  223. # break
  224. #
  225. # ledgerTime = None if (
  226. # not WithdrawGateway.is_ledger(record.withdraw_source_key)) else datetime.datetime.now()
  227. #
  228. # ledger = Ledger(USER_RECHARGE_TYPE.RECHARGE, record, ledgerTime = ledgerTime)
  229. # ledger.execute(journal = False, stats = True, check = False)
  230. #
  231. # break
  232. # skip = 0
  233. # limit = 2000
  234. # count = 0
  235. #
  236. # QUIT = False
  237. #
  238. # rv = []
  239. #
  240. # while True:
  241. # orders = CardConsumeRecord.objects().order_by('-id').skip(skip).limit(limit)
  242. # count = 0
  243. #
  244. # for order in orders: # type: CardConsumeRecord
  245. # count = count + 1
  246. #
  247. # if order.dateTimeAdded <= datetime.datetime(2022, 9, 30, 0, 0, 0):
  248. # QUIT = True
  249. # break
  250. #
  251. # if order.devNo not in rv:
  252. # dev = Device.get_dev(order.devNo) # type: DeviceDict
  253. # if dev and dev.driverCode in ['100202', '100206']:
  254. # rv.append(order.devNo)
  255. # print 'has {}.'.format(len(rv))
  256. #
  257. # if QUIT:
  258. # break
  259. #
  260. # print("next {}".format(skip))
  261. #
  262. # skip = skip + limit
  263. #
  264. # if count == 0:
  265. # break
  266. #
  267. # print rv
  268. # rv_time = []
  269. # rv_elec = []
  270. # dealerids_time = set()
  271. # dealerids_elec = set()
  272. # agents = [_ for _ in Agent.objects()]
  273. # for agent in agents:
  274. # if not Card.objects(agentId = str(agent.id)).first():
  275. # continue
  276. #
  277. # dealers = [_ for _ in Dealer.objects(agentId = str(agent.id))]
  278. # for dealer in dealers:
  279. # if dealer.supports('support_new_card_proc'):
  280. # continue
  281. #
  282. # devices = [_ for _ in Device.objects(ownerId = str(dealer.id))]
  283. # for device in devices: # type: Device
  284. # billingType = device.otherConf.get('billingType', 'time')
  285. # if is_server_refund(billingType, Device.get_dev(device.devNo), dealer, agent):
  286. # print '{} server refund is true.'.format(device)
  287. #
  288. # if billingType == 'time':
  289. # rv_time.append(device.devNo)
  290. # dealerids_time.add(str(dealer.id))
  291. # else:
  292. # rv_elec.append(device.devNo)
  293. # dealerids_elec.add(str(dealer.id))
  294. # else:
  295. # print '{} server refund is false.'.format(device)
  296. #
  297. #
  298. # devices = [_ for _ in Device.objects(driverCode__in = ['100202', '100206'], ownerId__nin = [None, ''])]
  299. #
  300. # print "hello"
  301. #
  302. # dealers = {}
  303. # agents = {}
  304. #
  305. # rv_time = set()
  306. # dealerids_time = set()
  307. # rv_elec = set()
  308. # dealerids_elec = set()
  309. #
  310. # for device in devices: # type: Device
  311. # devDict = Device.get_dev(device.devNo) # type: DeviceDict
  312. # if not devDict.online:
  313. # continue
  314. #
  315. # if device.ownerId in dealers:
  316. # dealer = dealers.get(device.ownerId)
  317. # else:
  318. # dealer = Dealer.objects(id = device.ownerId).first()
  319. #
  320. # if not dealer:
  321. # continue
  322. #
  323. # if dealer.supports('support_new_card_proc'):
  324. # continue
  325. #
  326. # if dealer.agentId in agents:
  327. # agent = agents.get(dealer.agentId)
  328. # else:
  329. # agent = Agent.objects(id = dealer.agentId).first()
  330. #
  331. # if not agent:
  332. # continue
  333. #
  334. # if not Card.objects(agentId = str(agent.id)).first():
  335. # continue
  336. #
  337. # billingType = device.otherConf.get('billingType', 'time')
  338. # if is_server_refund(billingType, Device.get_dev(device.devNo), dealer, agent):
  339. # print '{} server refund is true.'.format(device)
  340. #
  341. # if billingType == 'time':
  342. # rv_time.add(device.devNo)
  343. # dealerids_time.add(str(dealer.id))
  344. # else:
  345. # rv_elec.add(device.devNo)
  346. # dealerids_elec.add(str(dealer.id))
  347. # else:
  348. # print '{} server refund is false.'.format(device)
  349. # print rv_time
  350. # print dealerids_time
  351. # print rv_elec
  352. # print dealerids_elec
  353. # dealer = Dealer.objects(id = '5b9ae99ad89a177846459999').first()
  354. #
  355. #
  356. # app = JDOpenPayApp.objects(id = '635bbae869f046a0846dba72').first()
  357. # dealer.merchantApp = app
  358. # dealer.payAppType = PayAppType.JD_OPEN
  359. # dealer.save()
  360. from apilib.utils_datetime import to_datetime
  361. from apps.web.device.timescale import PowerManager
  362. 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'),
  363. interval = 300)
  364. print 'aaa'