From 07843d78984e0e3eff115363e1c85b3fa0711c61 Mon Sep 17 00:00:00 2001 From: bbbugg Date: Tue, 7 Apr 2026 15:56:28 +0800 Subject: [PATCH] fix(pricing): add filtering for pricing based on usable groups --- controller/pricing.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/controller/pricing.go b/controller/pricing.go index d0736119..82523272 100644 --- a/controller/pricing.go +++ b/controller/pricing.go @@ -1,6 +1,7 @@ package controller import ( + "github.com/QuantumNous/new-api/common" "github.com/QuantumNous/new-api/model" "github.com/QuantumNous/new-api/service" "github.com/QuantumNous/new-api/setting/ratio_setting" @@ -8,6 +9,30 @@ import ( "github.com/gin-gonic/gin" ) +func filterPricingByUsableGroups(pricing []model.Pricing, usableGroup map[string]string) []model.Pricing { + if len(pricing) == 0 { + return pricing + } + if len(usableGroup) == 0 { + return []model.Pricing{} + } + + filtered := make([]model.Pricing, 0, len(pricing)) + for _, item := range pricing { + if common.StringsContains(item.EnableGroup, "all") { + filtered = append(filtered, item) + continue + } + for _, group := range item.EnableGroup { + if _, ok := usableGroup[group]; ok { + filtered = append(filtered, item) + break + } + } + } + return filtered +} + func GetPricing(c *gin.Context) { pricing := model.GetPricing() userId, exists := c.Get("id") @@ -31,6 +56,7 @@ func GetPricing(c *gin.Context) { } usableGroup = service.GetUserUsableGroups(group) + pricing = filterPricingByUsableGroups(pricing, usableGroup) // check groupRatio contains usableGroup for group := range ratio_setting.GetGroupRatioCopy() { if _, ok := usableGroup[group]; !ok {