debud: add logging discounts, move put noAccept for future improvements and sum PriceFrom

This commit is contained in:
skeris 2024-03-22 01:17:28 +03:00
parent 850c62cb4a
commit b576d7dfda

@ -3,6 +3,7 @@ package repository
import ( import (
"context" "context"
"time" "time"
"fmt"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
@ -79,6 +80,7 @@ func (receiver *DiscountRepository) getLayer(ctx context.Context, keyGroup, keyP
err = cursor.All(ctx, &discounts) err = cursor.All(ctx, &discounts)
fmt.Println("DISCOOOO", discounts)
return discounts, err return discounts, err
} }
@ -97,6 +99,8 @@ func (receiver *DiscountRepository) Determine(ctx context.Context, conditions *c
privilegeAmounts = map[string]uint64{} privilegeAmounts = map[string]uint64{}
privilegePrices = map[string]uint64{} privilegePrices = map[string]uint64{}
privilegeGroups = map[string]string{} privilegeGroups = map[string]string{}
priority = make(map[string]struct{})
noAccept = make(map[string]struct{})
) )
for layer := uint64(1); layer < 5; layer++ { for layer := uint64(1); layer < 5; layer++ {
@ -107,12 +111,10 @@ func (receiver *DiscountRepository) Determine(ctx context.Context, conditions *c
continue continue
} }
// вычисляем количество привилегий во всей корзине // вычисляем количество привилегий во всей корзине
if _, ok := privilegeAmounts[*condition.Product]; ok { privilegeAmounts[*condition.Product] += *condition.Term
privilegeAmounts[*condition.Product] += *condition.Term privilegePrices[*condition.Product] += *condition.PriceFrom
} else { if _, ok := privilegeAmounts[*condition.Product]; !ok {
privilegeAmounts[*condition.Product] = *condition.Term
privilegeGroups[*condition.Product] = *condition.Group privilegeGroups[*condition.Product] = *condition.Group
privilegePrices[*condition.Product] = *condition.PriceFrom
} }
} }
@ -136,8 +138,6 @@ func (receiver *DiscountRepository) Determine(ctx context.Context, conditions *c
// если юзер не nko, то выбираем все скидки за первый слой // если юзер не nko, то выбираем все скидки за первый слой
// сначала делаем все нужные проверки записываем запреты // сначала делаем все нужные проверки записываем запреты
priority := make(map[string]struct{})
noAccept := make(map[string]struct{})
for privilege, privilegePrice := range privilegePrices { for privilege, privilegePrice := range privilegePrices {
// проверки существования скидки за 2 слой noAccept не применям скидки к этой группе если есть такие // проверки существования скидки за 2 слой noAccept не применям скидки к этой группе если есть такие