From 3d5fb2c43c60be27a7e7606f1394f45e8e47c590 Mon Sep 17 00:00:00 2001 From: ymq Date: Wed, 26 Aug 2026 17:33:03 +0800 Subject: [PATCH] =?UTF-8?q?fix(pricing):=20account=5Fcharging=20=E7=94=A8?= =?UTF-8?q?=E9=94=99=E5=AE=9A=E4=BB=B7=E5=87=BD=E6=95=B0=E2=80=94=E2=80=94?= =?UTF-8?q?pricing=5Fprogram=5Fcharging(=E4=B8=89=E5=8F=82)=20=E6=94=B9=20?= =?UTF-8?q?buffered=5Fcharging(=E4=B8=A4=E5=8F=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit buffered_charging 返回价格对象列表,需 sum(getattr(p,'amount',0)) 汇总。 原用 pricing_program_charging=charging(sor,ppid,data) 三参,传两参导致 'missing 1 required positional argument: data',账号计费金额恒为 0。 --- .../__pycache__/init.cpython-310.pyc | Bin 0 -> 10591 bytes account_resource/init.py | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 account_resource/__pycache__/init.cpython-310.pyc diff --git a/account_resource/__pycache__/init.cpython-310.pyc b/account_resource/__pycache__/init.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71cc29378be887a678b16ce2c21574a328d90769 GIT binary patch literal 10591 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 YP%oao;9{jgk%M0Zp9}^9p~z$Z3m1)SEC2ui literal 0 HcmV?d00001 diff --git a/account_resource/init.py b/account_resource/init.py index 17fd295..6d43bb9 100644 --- a/account_resource/init.py +++ b/account_resource/init.py @@ -218,16 +218,16 @@ async def account_charging(spec_id_or_code, charge_mode, userid, userorgid, amount = 0.0 if ppid: - charging = getattr(env, 'pricing_program_charging', None) + charging = getattr(env, 'buffered_charging', None) if charging is None: logger.warning('pricing 模块未加载,账号计费金额记 0(ppid=%s)', ppid) else: try: - r = await charging(ppid, usages) - if isinstance(r, dict): - amount = float(r.get('amount', 0) or 0) - elif isinstance(r, (int, float)): - amount = float(r) + prices = await charging(ppid, usages) + if prices is None: + logger.error('账号定价计算返回空 ppid=%s', ppid) + else: + amount = float(sum(getattr(p, 'amount', 0) or 0 for p in prices)) except Exception as e: logger.error('账号计费失败 ppid=%s: %s', ppid, e) else: