From 797cba492084d7ea79758d92401d199f746d9beb Mon Sep 17 00:00:00 2001 From: Samuel Tariku Date: Sat, 18 Oct 2025 11:54:37 +0300 Subject: [PATCH] hotfix: wallet deducting logic --- internal/services/bet/service.go | 50 +++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/internal/services/bet/service.go b/internal/services/bet/service.go index d6ff26a..fb1f951 100644 --- a/internal/services/bet/service.go +++ b/internal/services/bet/service.go @@ -35,7 +35,7 @@ var ( ErrGenerateRandomOutcome = errors.New("failed to generate any random outcome for events") ErrOutcomesNotCompleted = errors.New("some bet outcomes are still pending") ErrEventHasBeenRemoved = errors.New("event has been removed") - ErrEventHasBeenDisabled = errors.New("event has been disabled") + ErrEventHasBeenDisabled = errors.New("event has been disabled") ErrEventHasNotEnded = errors.New("event has not ended yet") ErrOddHasBeenDisabled = errors.New("odd has been disabled") @@ -129,7 +129,7 @@ func (s *Service) GenerateBetOutcome(ctx context.Context, eventID int64, marketI ) return domain.CreateBetOutcome{}, ErrEventHasBeenDisabled } - + currentTime := time.Now() if event.StartTime.Before(currentTime) { s.mongoLogger.Error("event has already started", @@ -555,34 +555,50 @@ func (s *Service) DeductBetFromBranchWallet(ctx context.Context, amount float32, return ErrCompanyDeductedPercentInvalid } - // This is the amount that we take from a company/tenant when they - // create a bet. I.e. if its 5% (0.05), then thats the percentage we take every - deductedAmount := amount * company.DeductedPercentage - - if deductedAmount == 0 { - s.mongoLogger.Fatal("Amount", - zap.Int64("wallet_id", walletID), - zap.Float32("amount", deductedAmount), - zap.Error(err), - ) - return err - } _, err = s.walletSvc.DeductFromWallet(ctx, - walletID, domain.ToCurrency(deductedAmount), domain.ValidInt64{ + walletID, domain.ToCurrency(amount), domain.ValidInt64{ Value: userID, Valid: true, }, domain.TRANSFER_DIRECT, - fmt.Sprintf("Deducted %v amount from wallet by system while placing bet", deductedAmount)) + fmt.Sprintf("Deducted %v amount from wallet by system while placing bet", amount)) if err != nil { s.mongoLogger.Error("failed to deduct from wallet", zap.Int64("wallet_id", walletID), - zap.Float32("amount", deductedAmount), + zap.Float32("amount", amount), zap.Error(err), ) return err } + // This is the amount that we take from a company/tenant when they + // create a bet. I.e. if its 5% (0.05), then thats the percentage we take every + // deductedAmount := amount * company.DeductedPercentage + + // if deductedAmount == 0 { + // s.mongoLogger.Fatal("Amount", + // zap.Int64("wallet_id", walletID), + // zap.Float32("amount", deductedAmount), + // zap.Error(err), + // ) + // return err + // } + // _, err = s.walletSvc.DeductFromWallet(ctx, + // walletID, domain.ToCurrency(deductedAmount), domain.ValidInt64{ + // Value: userID, + // Valid: true, + // }, domain.TRANSFER_DIRECT, + // fmt.Sprintf("Deducted %v amount from wallet by system while placing bet", deductedAmount)) + + // if err != nil { + // s.mongoLogger.Error("failed to deduct from wallet", + // zap.Int64("wallet_id", walletID), + // zap.Float32("amount", deductedAmount), + // zap.Error(err), + // ) + // return err + // } + return nil }