refactor: use userservice and balance service inside blackjack service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 51s
CI / Docker backend validation (pull_request) Successful in 54s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m30s

This commit is contained in:
Phan Huy Tran 2025-05-28 11:41:32 +02:00
commit 3cbffba14f
2 changed files with 30 additions and 18 deletions

View file

@ -59,13 +59,7 @@ public class BlackJackGameController {
@PostMapping("/blackjack/start")
public ResponseEntity<Object> createBlackJackGame(@RequestBody @Valid BetDto betDto) {
UserEntity user = this.userService.getCurrentUser();
if (!this.balanceService.hasFunds(user, betDto)) {
throw new InsufficientFundsException();
}
return ResponseEntity.ok(blackJackService.createBlackJackGame(user, betDto.getBetAmount()));
return ResponseEntity.ok(blackJackService.createBlackJackGame(betDto));
}
private BlackJackGameEntity getBlackJackGame(Long gameId) {

View file

@ -1,7 +1,11 @@
package de.szut.casino.blackjack;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import de.szut.casino.user.UserService;
import jakarta.transaction.Transactional;
import org.springframework.stereotype.Service;
@ -13,11 +17,22 @@ import java.util.Random;
public class BlackJackService {
private final BlackJackGameRepository blackJackGameRepository;
private final UserRepository userRepository;
private final Random random = new Random();
private final Random random;
private final BalanceService balanceService;
private final UserService userService;
public BlackJackService(BlackJackGameRepository blackJackGameRepository, UserRepository userRepository) {
public BlackJackService(
BlackJackGameRepository blackJackGameRepository,
UserRepository userRepository,
Random random,
BalanceService balanceService,
UserService userService
) {
this.blackJackGameRepository = blackJackGameRepository;
this.userRepository = userRepository;
this.random = random;
this.balanceService = balanceService;
this.userService = userService;
}
public BlackJackGameEntity getBlackJackGame(Long id) {
@ -25,16 +40,23 @@ public class BlackJackService {
}
@Transactional
public BlackJackGameEntity createBlackJackGame(UserEntity user, BigDecimal betAmount) {
public BlackJackGameEntity createBlackJackGame(BetDto betDto) {
UserEntity user = userService.getCurrentUser();
if (!this.balanceService.hasFunds(user, betDto)) {
throw new InsufficientFundsException();
}
this.balanceService.subtractFunds(user, betDto.getBetAmount());
BlackJackGameEntity game = new BlackJackGameEntity();
game.setUser(user);
game.setBet(betAmount);
game.setBet(betDto.getBetAmount());
initializeDeck(game);
dealInitialCards(game);
game.setState(getState(game));
deductBetFromBalance(user, betAmount);
return processGameBasedOnState(game);
}
@ -72,7 +94,8 @@ public class BlackJackService {
UserEntity user = getUserWithFreshData(game.getUser());
BigDecimal additionalBet = game.getBet();
deductBetFromBalance(user, additionalBet);
this.balanceService.subtractFunds(user, additionalBet);
game.setBet(game.getBet().add(additionalBet));
dealCardToPlayer(game);
@ -150,11 +173,6 @@ public class BlackJackService {
}
}
private void deductBetFromBalance(UserEntity user, BigDecimal betAmount) {
user.setBalance(user.getBalance().subtract(betAmount));
userRepository.save(user);
}
protected void updateUserBalance(BlackJackGameEntity game, boolean isWin) {
UserEntity user = getUserWithFreshData(game.getUser());
BigDecimal totalBet = game.getBet();