diff --git a/backend/internal/service/billing_service.go b/backend/internal/service/billing_service.go index 4c265aed3c..89755c8922 100644 --- a/backend/internal/service/billing_service.go +++ b/backend/internal/service/billing_service.go @@ -771,6 +771,9 @@ func (s *BillingService) GetModelPricingWithChannel(model string, channelPricing if channelPricing == nil { return pricing, nil } + // 防止修改 fallbackPrices 中的共享指针 + cloned := *pricing + pricing = &cloned if channelPricing.InputPrice != nil { pricing.InputPricePerToken = *channelPricing.InputPrice pricing.InputPricePerTokenPriority = *channelPricing.InputPrice diff --git a/backend/internal/service/model_pricing_resolver.go b/backend/internal/service/model_pricing_resolver.go index 029cb80259..0cc7a0ac47 100644 --- a/backend/internal/service/model_pricing_resolver.go +++ b/backend/internal/service/model_pricing_resolver.go @@ -150,6 +150,10 @@ func (r *ModelPricingResolver) applyTokenOverrides(chPricing *ChannelModelPricin // 区间不匹配时回退到 BasePricing,也需要覆盖图片价格 if resolved.BasePricing == nil { resolved.BasePricing = &ModelPricing{} + } else { + // 防止修改 fallbackPrices 中的共享指针 + cloned := *resolved.BasePricing + resolved.BasePricing = &cloned } if chPricing.ImageOutputPrice != nil { resolved.BasePricing.ImageOutputPricePerToken = *chPricing.ImageOutputPrice @@ -163,6 +167,10 @@ func (r *ModelPricingResolver) applyTokenOverrides(chPricing *ChannelModelPricin // 否则用 flat 字段覆盖 BasePricing if resolved.BasePricing == nil { resolved.BasePricing = &ModelPricing{} + } else { + // 防止修改 fallbackPrices 中的共享指针 + cloned := *resolved.BasePricing + resolved.BasePricing = &cloned } if chPricing.InputPrice != nil {