From 168fcdf2786e6784e82e937ec1a12669e539590d Mon Sep 17 00:00:00 2001 From: Yared Yemane Date: Thu, 27 Nov 2025 14:20:21 +0300 Subject: [PATCH] amount precision fix by removing float32() conversion of domain.Currency values --- .../services/virtualGame/atlas/service.go | 10 +++++----- internal/services/virtualGame/service.go | 20 +++++++++---------- internal/services/virtualGame/veli/service.go | 10 +++++----- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/internal/services/virtualGame/atlas/service.go b/internal/services/virtualGame/atlas/service.go index 4055677..9d70cee 100644 --- a/internal/services/virtualGame/atlas/service.go +++ b/internal/services/virtualGame/atlas/service.go @@ -72,7 +72,7 @@ func (s *Service) GetUserData(ctx context.Context, req domain.AtlasGetUserDataRe // 4. Build response res := &domain.AtlasGetUserDataResponse{ PlayerID: req.PlayerID, - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), } return res, nil @@ -97,7 +97,7 @@ func (s *Service) ProcessBet(ctx context.Context, req domain.AtlasBetRequest) (* } // --- 4. Convert balance using Float32() --- - realBalance := float64(wallet.RegularBalance.Float32()) + realBalance := float64(wallet.RegularBalance) // --- 5. Ensure sufficient balance --- if realBalance < req.Amount { @@ -139,7 +139,7 @@ func (s *Service) ProcessBetWin(ctx context.Context, req domain.AtlasBetWinReque } // --- 4. Convert balance using Float32() --- - realBalance := float64(wallet.RegularBalance.Float32()) + realBalance := float64(wallet.RegularBalance) // --- 5. Ensure sufficient balance for bet --- if realBalance < req.BetAmount { @@ -192,7 +192,7 @@ func (s *Service) ProcessRoundResult(ctx context.Context, req domain.RoundResult } // --- 4. Convert balance and apply win amount --- - currentBalance := float64(wallet.RegularBalance.Float32()) + currentBalance := float64(wallet.RegularBalance) newBalance := currentBalance + req.Amount err = s.walletSvc.UpdateBalance(ctx, wallet.RegularID, domain.ToCurrency(float32(newBalance))) @@ -232,7 +232,7 @@ func (s *Service) ProcessRollBack(ctx context.Context, req domain.RollbackReques } // --- 5. Compute new balance using Float32() conversion --- - currentBalance := float64(wallet.RegularBalance.Float32()) + currentBalance := float64(wallet.RegularBalance) newBalance := currentBalance + float64(transfer.Amount) // --- 6. Credit player wallet --- diff --git a/internal/services/virtualGame/service.go b/internal/services/virtualGame/service.go index 373f9e0..cd28f48 100644 --- a/internal/services/virtualGame/service.go +++ b/internal/services/virtualGame/service.go @@ -233,7 +233,7 @@ func (s *service) GetPlayerInfo(ctx context.Context, req *domain.PopOKPlayerInfo return &domain.PopOKPlayerInfoResponse{ Country: "ET", Currency: claims.Currency, - Balance: float64(wallet.RegularBalance.Float32()), // Convert cents to currency + Balance: float64(wallet.RegularBalance), // Convert cents to currency PlayerID: fmt.Sprintf("%d", claims.UserID), }, nil } @@ -345,7 +345,7 @@ func (s *service) ProcessWin(ctx context.Context, req *domain.PopOKWinRequest) ( return &domain.PopOKWinResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%d", existingTx.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } @@ -390,12 +390,12 @@ func (s *service) ProcessWin(ctx context.Context, req *domain.PopOKWinRequest) ( return nil, fmt.Errorf("transaction recording failed") } - fmt.Printf("\n\n Win balance is:%v\n\n", float64(wallet.RegularBalance.Float32())) + fmt.Printf("\n\n Win balance is:%v\n\n", float64(wallet.RegularBalance)) return &domain.PopOKWinResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%v", tx.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } @@ -419,7 +419,7 @@ func (s *service) ProcessTournamentWin(ctx context.Context, req *domain.PopOKWin return &domain.PopOKWinResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%v", existingTx.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } @@ -472,7 +472,7 @@ func (s *service) ProcessTournamentWin(ctx context.Context, req *domain.PopOKWin return &domain.PopOKWinResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%v", tx.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } @@ -496,7 +496,7 @@ func (s *service) ProcessPromoWin(ctx context.Context, req *domain.PopOKWinReque return &domain.PopOKWinResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%v", existingTx.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } @@ -549,7 +549,7 @@ func (s *service) ProcessPromoWin(ctx context.Context, req *domain.PopOKWinReque return &domain.PopOKWinResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%v", tx.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } @@ -586,7 +586,7 @@ func (s *service) ProcessCancel(ctx context.Context, req *domain.PopOKCancelRequ return &domain.PopOKCancelResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%v", originalBet.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } @@ -643,7 +643,7 @@ func (s *service) ProcessCancel(ctx context.Context, req *domain.PopOKCancelRequ return &domain.PopOKCancelResponse{ TransactionID: req.TransactionID, ExternalTrxID: fmt.Sprintf("%v", cancelTx.ID), - Balance: float64(wallet.RegularBalance.Float32()), + Balance: float64(wallet.RegularBalance), }, nil } diff --git a/internal/services/virtualGame/veli/service.go b/internal/services/virtualGame/veli/service.go index c54c740..c190d14 100644 --- a/internal/services/virtualGame/veli/service.go +++ b/internal/services/virtualGame/veli/service.go @@ -282,7 +282,7 @@ func (s *Service) GetBalance(ctx context.Context, req domain.BalanceRequest) (*d Amount float64 `json:"amount"` }{ Currency: req.Currency, - Amount: (float64(wallet.RegularBalance.Float32())), + Amount: (float64(wallet.RegularBalance)), }, } @@ -328,7 +328,7 @@ func (s *Service) ProcessBet(ctx context.Context, req domain.BetRequest) (*domai // bonusBalance := float64(wallet.StaticBalance.Float32()) // --- 4. Check sufficient balance --- - if float64(wallet.RegularBalance.Float32()) < req.Amount.Amount { + if float64(wallet.RegularBalance) < req.Amount.Amount { return nil, fmt.Errorf("INSUFFICIENT_BALANCE") } @@ -348,7 +348,7 @@ func (s *Service) ProcessBet(ctx context.Context, req domain.BetRequest) (*domai res := &domain.BetResponse{ Real: domain.BalanceDetail{ Currency: req.Amount.Currency, - Amount: float64(wallet.RegularBalance.Float32()) - req.Amount.Amount, + Amount: float64(wallet.RegularBalance) - req.Amount.Amount, }, WalletTransactionID: req.TransactionID, UsedRealAmount: req.Amount.Amount, @@ -398,7 +398,7 @@ func (s *Service) ProcessWin(ctx context.Context, req domain.WinRequest) (*domai } // --- 3. Convert balances safely using Float32() --- - realBalance := float64(wallet.RegularBalance.Float32()) + realBalance := float64(wallet.RegularBalance) // bonusBalance := float64(wallet.StaticBalance.Float32()) // --- 4. Apply winnings --- @@ -459,7 +459,7 @@ func (s *Service) ProcessCancel(ctx context.Context, req domain.CancelRequest) ( } // --- 3. Convert balances using Float32() --- - realBalance := float64(wallet.RegularBalance.Float32()) + realBalance := float64(wallet.RegularBalance) // bonusBalance := float64(wallet.StaticBalance.Float32()) // --- 4. Determine refund amount ---