feat: add route to get all lootboxes

This commit is contained in:
Phan Huy Tran 2025-04-02 10:18:51 +02:00
parent e4bcd9d791
commit 8a6bc95c92
5 changed files with 45 additions and 11 deletions

View file

@ -11,6 +11,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -30,55 +31,61 @@ public class CasinoApplication {
public CommandLineRunner initData(LootBoxRepository lootBoxRepository, RewardRepository rewardRepository) {
return _ -> {
if (lootBoxRepository.count() == 0) {
// Create basic LootBox
LootBoxEntity basicLootBox = new LootBoxEntity();
basicLootBox.setName("Basic LootBox");
basicLootBox.setPrice(new BigDecimal("1.99"));
basicLootBox.setRewards(new ArrayList<>()); // Initialize the list
// Create premium LootBox
LootBoxEntity premiumLootBox = new LootBoxEntity();
premiumLootBox.setName("Premium LootBox");
premiumLootBox.setPrice(new BigDecimal("4.99"));
premiumLootBox.setRewards(new ArrayList<>()); // Initialize the list
// Save LootBoxes first to get IDs
// Save the loot boxes first
lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox));
// Create rewards for basic LootBox
RewardEntity commonReward = new RewardEntity();
commonReward.setValue(new BigDecimal("0.50"));
commonReward.setProbability(new BigDecimal("70.00"));
commonReward.setLootBoxes(List.of(premiumLootBox));
RewardEntity rareReward = new RewardEntity();
rareReward.setValue(new BigDecimal("2.00"));
rareReward.setProbability(new BigDecimal("25.00"));
rareReward.setLootBoxes(List.of(basicLootBox));
RewardEntity epicReward = new RewardEntity();
epicReward.setValue(new BigDecimal("5.00"));
epicReward.setProbability(new BigDecimal("5.00"));
epicReward.setLootBoxes(List.of(basicLootBox));
// Create rewards for premium LootBox
RewardEntity premiumCommon = new RewardEntity();
premiumCommon.setValue(new BigDecimal("2.00"));
premiumCommon.setProbability(new BigDecimal("60.00"));
premiumCommon.setLootBoxes(List.of(premiumLootBox));
RewardEntity premiumRare = new RewardEntity();
premiumRare.setValue(new BigDecimal("5.00"));
premiumRare.setProbability(new BigDecimal("30.00"));
premiumRare.setLootBoxes(List.of(premiumLootBox));
RewardEntity legendaryReward = new RewardEntity();
legendaryReward.setValue(new BigDecimal("15.00"));
legendaryReward.setProbability(new BigDecimal("10.00"));
legendaryReward.setLootBoxes(List.of(premiumLootBox));
// Save all rewards
rewardRepository.saveAll(Arrays.asList(
commonReward, rareReward, epicReward,
premiumCommon, premiumRare, legendaryReward
));
// Add relationships from the owning side (LootBox)
basicLootBox.getRewards().add(rareReward);
basicLootBox.getRewards().add(epicReward);
premiumLootBox.getRewards().add(commonReward);
premiumLootBox.getRewards().add(premiumCommon);
premiumLootBox.getRewards().add(premiumRare);
premiumLootBox.getRewards().add(legendaryReward);
// Update the loot boxes to save the relationships
lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox));
System.out.println("Initial LootBoxes and rewards created successfully");
} else {
System.out.println("LootBoxes already exist, skipping initialization");

View file

@ -0,0 +1,20 @@
package de.szut.casino.lootboxes;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class LootBoxController {
private final LootBoxRepository lootBoxRepository;
public LootBoxController(LootBoxRepository lootBoxRepository) {
this.lootBoxRepository = lootBoxRepository;
}
@GetMapping("/lootboxes")
public List<LootBoxEntity> getAllLootBoxes() {
return lootBoxRepository.findAll();
}
}

View file

@ -2,6 +2,7 @@ package de.szut.casino.lootboxes;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import de.szut.casino.blackjack.CardEntity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;

View file

@ -1,6 +1,7 @@
package de.szut.casino.lootboxes;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
@ -24,5 +25,6 @@ public class RewardEntity {
private BigDecimal probability;
@ManyToMany(mappedBy = "rewards")
@JsonBackReference
private List<LootBoxEntity> lootBoxes = new ArrayList<>();
}