import asyncio import sys from sqlor.dbpools import DBPools, get_sor_context from appPublic.jsonConfig import getConfig from appPublic.dictObject import DictObject from appPublic.timeUtils import curDateString, timestampstr from accounting.consume import consume_accounting from ahserver.serverenv import ServerEnv from appbase.init import load_appbase from rbac.init import load_rbac def get_module_dbname(m): return 'sage' async def get_orgid_by_username(sor, username): recs = await sor.R('users', {'username': username}) if len(recs): return recs[0].orgid return None async def accounting(username): env = ServerEnv() customerid = None for i in range(1000): resellerid = '0' async with get_sor_context(env, 'accounting') as sor: ais = [] if customerid is None: customerid = await get_orgid_by_username(sor, username) d = DictObject() d.customerid = customerid d.resellerid = '0' d.providerid = 'none' d.action = 'PAY_REVERSE' if i % 2 ==0 else 'PAY' d.biz_date = curDateString() d.timestamp = timestampstr() d.productid = 'test_product' d.transamt = 1.432 d.variable = { "交易金额": 1.432, "交易手续费": 0 } ais.append(d) orderid = 'test_orderid' await consume_accounting(sor, orderid, ais) async def main(): if len(sys.argv) < 2: print(f'{sys.argv[0]} username') sys.exit(1) username = sys.argv[1] await accounting(username) if __name__ == '__main__': databases = DictObject(**{ "sage":{ "driver":"mysql", "kwargs":{ "user":"test", "db":"sage", "password":"SS+C1MDMJrslBwGzYIv3nQ==", "charset": "utf8mb4", "host":"db" } } }) getConfig('.') DBPools(databases) load_appbase() load_rbac() env = ServerEnv() env.get_module_dbname = get_module_dbname loop = asyncio.get_event_loop() loop.run_until_complete(main())