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;
}