From b2b0bb2f445a8ce939a7c37b481ef62a183b105e Mon Sep 17 00:00:00 2001 From: Phan Huy Tran Date: Wed, 26 Mar 2025 13:23:27 +0100 Subject: [PATCH] feat: Validate bet amount --- backend/requests/test.http | 2 +- .../blackjack/BlackJackGameController.java | 29 ++++++++++++++----- .../blackjack/dto/CreateBlackJackGameDto.java | 4 ++- .../java/de/szut/casino/user/UserService.java | 1 - 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/backend/requests/test.http b/backend/requests/test.http index f7ebab0..57fd8f1 100644 --- a/backend/requests/test.http +++ b/backend/requests/test.http @@ -3,5 +3,5 @@ Authorization: Bearer {{token}} Content-Type: application/json { - "betAmount": 999 + "betAmount": -1 } diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java index 3f7fda0..095a20e 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java @@ -1,8 +1,10 @@ package de.szut.casino.blackjack; import de.szut.casino.blackjack.dto.CreateBlackJackGameDto; +import de.szut.casino.user.UserEntity; import de.szut.casino.user.UserService; import de.szut.casino.user.dto.CreateUserDto; +import de.szut.casino.user.dto.GetUserDto; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +15,10 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + @Slf4j @RestController public class BlackJackGameController { @@ -21,15 +27,24 @@ public class BlackJackGameController { private UserService userService; @PostMapping("/blackjack/start") - public ResponseEntity createBlackJackGame(@RequestBody @Valid CreateBlackJackGameDto gameData, @RequestHeader("Authorization") String token) { - if (gameData.getBetAmount() <= 0 || gameData.getBetAmount() > userService.getCurrentUser(token).getBalance().intValue()) { - return ResponseEntity.badRequest().body("Invalid bet amount"); + public ResponseEntity createBlackJackGame(@RequestBody @Valid CreateBlackJackGameDto createBlackJackGameDto, @RequestHeader("Authorization") String token) { + GetUserDto getUserDto = userService.getCurrentUser(token); + BigDecimal balance = getUserDto.getBalance(); + + if (createBlackJackGameDto.getBetAmount().compareTo(BigDecimal.ZERO) <= 0) { + Map errorResponse = new HashMap<>(); + errorResponse.put("error", "Invalid bet amount"); + return ResponseEntity.badRequest().body(errorResponse); } - BlackJackGameEntity game = new BlackJackGameEntity(); - game.setBet(gameData.getBetAmount()); - System.out.println("Balls: "); - System.out.println(game.getBet()); + if (createBlackJackGameDto.getBetAmount().compareTo(balance) > 0) { + Map errorResponse = new HashMap<>(); + errorResponse.put("error", "Insufficient funds"); + return ResponseEntity.badRequest().body(errorResponse); + } + + + return null; } } diff --git a/backend/src/main/java/de/szut/casino/blackjack/dto/CreateBlackJackGameDto.java b/backend/src/main/java/de/szut/casino/blackjack/dto/CreateBlackJackGameDto.java index 4907dd1..e5b0c97 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/dto/CreateBlackJackGameDto.java +++ b/backend/src/main/java/de/szut/casino/blackjack/dto/CreateBlackJackGameDto.java @@ -5,10 +5,12 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import java.math.BigDecimal; + @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class CreateBlackJackGameDto { - private int betAmount; + private BigDecimal betAmount; } diff --git a/backend/src/main/java/de/szut/casino/user/UserService.java b/backend/src/main/java/de/szut/casino/user/UserService.java index 724962e..70d961f 100644 --- a/backend/src/main/java/de/szut/casino/user/UserService.java +++ b/backend/src/main/java/de/szut/casino/user/UserService.java @@ -40,7 +40,6 @@ public class UserService { public GetUserDto getCurrentUser(String token) { KeycloakUserDto userData = getKeycloakUserInfo(token); - if (userData == null) { return null; }