fix(pricing): storage_charging 用错定价函数——pricing_program_charging(三参) 改 buffered_charging(两参)

buffered_charging 返回价格对象列表,需 sum(getattr(p,'amount',0)) 汇总。
原用 pricing_program_charging=charging(sor,ppid,data) 三参,传两参导致
'missing 1 required positional argument: data',存储计费金额恒为 0。
This commit is contained in:
ymq 2026-08-26 17:33:04 +08:00
parent 7f586a9b12
commit 3e6f448a39
2 changed files with 6 additions and 6 deletions

Binary file not shown.

View File

@ -262,16 +262,16 @@ async def storage_charging(spec_id_or_code, meter_mode, userid, userorgid,
amount = 0.0 amount = 0.0
if ppid: if ppid:
charging = getattr(env, 'pricing_program_charging', None) charging = getattr(env, 'buffered_charging', None)
if charging is None: if charging is None:
logger.warning('pricing 模块未加载,存储计费金额记 0ppid=%s', ppid) logger.warning('pricing 模块未加载,存储计费金额记 0ppid=%s', ppid)
else: else:
try: try:
r = await charging(ppid, usages) prices = await charging(ppid, usages)
if isinstance(r, dict): if prices is None:
amount = float(r.get('amount', 0) or 0) logger.error('存储定价计算返回空 ppid=%s', ppid)
elif isinstance(r, (int, float)): else:
amount = float(r) amount = float(sum(getattr(p, 'amount', 0) or 0 for p in prices))
except Exception as e: except Exception as e:
logger.error('存储计费失败 ppid=%s: %s', ppid, e) logger.error('存储计费失败 ppid=%s: %s', ppid, e)
else: else: