diff --git a/pricing/pricing.py b/pricing/pricing.py index d441f54..98cc0fe 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -461,8 +461,15 @@ class PricingProgram: async def buffered_charging(ppid, data): r = await PricingProgram.get_ppid_pricing(ppid) - prices = PricingProgram.get_pricing_from_ymalstr(data, - r.pricing_data) + # get_ppid_pricing 缓存命中时返回 dict(Redis JSON 反序列化), + # 未命中时返回 DictObject(sqlor 行对象),两者都要兼容。 + if hasattr(r, 'pricing_data'): + pricing_data = r.pricing_data + elif isinstance(r, dict): + pricing_data = r.get('pricing_data') + else: + pricing_data = r['pricing_data'] + prices = PricingProgram.get_pricing_from_ymalstr(data, pricing_data) amt = 0.0 for p in prices: p.cost = p.amount # discount removed