Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
5575955440 | |||
|
389018af85 |
6 changed files with 106 additions and 66 deletions
|
@ -26,65 +26,4 @@ public class CasinoApplication {
|
|||
public static RestTemplate restTemplate() {
|
||||
return new RestTemplate();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public CommandLineRunner initData(LootBoxRepository lootBoxRepository, RewardRepository rewardRepository) {
|
||||
return _ -> {
|
||||
if (lootBoxRepository.count() == 0) {
|
||||
LootBoxEntity basicLootBox = new LootBoxEntity();
|
||||
basicLootBox.setName("Basic LootBox");
|
||||
basicLootBox.setPrice(new BigDecimal("2"));
|
||||
basicLootBox.setRewards(new ArrayList<>()); // Initialize the list
|
||||
|
||||
LootBoxEntity premiumLootBox = new LootBoxEntity();
|
||||
premiumLootBox.setName("Premium LootBox");
|
||||
premiumLootBox.setPrice(new BigDecimal("5"));
|
||||
premiumLootBox.setRewards(new ArrayList<>()); // Initialize the list
|
||||
|
||||
lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox));
|
||||
|
||||
RewardEntity commonReward = new RewardEntity();
|
||||
commonReward.setValue(new BigDecimal("0.50"));
|
||||
commonReward.setProbability(new BigDecimal("0.7"));
|
||||
|
||||
RewardEntity rareReward = new RewardEntity();
|
||||
rareReward.setValue(new BigDecimal("2.00"));
|
||||
rareReward.setProbability(new BigDecimal("0.25"));
|
||||
|
||||
RewardEntity epicReward = new RewardEntity();
|
||||
epicReward.setValue(new BigDecimal("5.00"));
|
||||
epicReward.setProbability(new BigDecimal("0.5"));
|
||||
|
||||
RewardEntity premiumCommon = new RewardEntity();
|
||||
premiumCommon.setValue(new BigDecimal("2.00"));
|
||||
premiumCommon.setProbability(new BigDecimal("0.6"));
|
||||
|
||||
RewardEntity premiumRare = new RewardEntity();
|
||||
premiumRare.setValue(new BigDecimal("5.00"));
|
||||
premiumRare.setProbability(new BigDecimal("0.3"));
|
||||
|
||||
RewardEntity legendaryReward = new RewardEntity();
|
||||
legendaryReward.setValue(new BigDecimal("15.00"));
|
||||
legendaryReward.setProbability(new BigDecimal("0.10"));
|
||||
|
||||
rewardRepository.saveAll(Arrays.asList(
|
||||
commonReward, rareReward, epicReward,
|
||||
premiumCommon, premiumRare, legendaryReward
|
||||
));
|
||||
|
||||
basicLootBox.getRewards().add(commonReward);
|
||||
basicLootBox.getRewards().add(premiumRare);
|
||||
|
||||
premiumLootBox.getRewards().add(premiumCommon);
|
||||
premiumLootBox.getRewards().add(premiumRare);
|
||||
premiumLootBox.getRewards().add(legendaryReward);
|
||||
|
||||
lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox));
|
||||
|
||||
System.out.println("Initial LootBoxes and rewards created successfully");
|
||||
} else {
|
||||
System.out.println("LootBoxes already exist, skipping initialization");
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package de.szut.casino.lootboxes;
|
||||
|
||||
import jakarta.validation.constraints.DecimalMin;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CreateLootBoxDto {
|
||||
@NotEmpty(message = "Loot box name cannot be empty")
|
||||
@Size(min = 3, max = 50, message = "Loot box name must be between 3 and 50 characters")
|
||||
private String name;
|
||||
|
||||
@NotNull(message = "Price cannot be null")
|
||||
@DecimalMin(value = "0.01", message = "Price must be greater than 0")
|
||||
private BigDecimal price;
|
||||
|
||||
private List<CreateRewardDto> rewards = new ArrayList<>();
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package de.szut.casino.lootboxes;
|
||||
|
||||
import jakarta.validation.constraints.DecimalMax;
|
||||
import jakarta.validation.constraints.DecimalMin;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CreateRewardDto {
|
||||
@NotNull(message = "Reward value cannot be null")
|
||||
@DecimalMin(value = "0.00", message = "Reward value must be positive")
|
||||
private BigDecimal value;
|
||||
|
||||
@NotNull(message = "Probability cannot be null")
|
||||
@DecimalMin(value = "0.0", message = "Probability must be at least 0.0")
|
||||
@DecimalMax(value = "1.0", message = "Probability must be at most 1.0")
|
||||
private BigDecimal probability;
|
||||
}
|
|
@ -3,13 +3,11 @@ package de.szut.casino.lootboxes;
|
|||
import de.szut.casino.user.UserEntity;
|
||||
import de.szut.casino.user.UserRepository;
|
||||
import de.szut.casino.user.UserService;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
|
||||
@RestController
|
||||
public class LootBoxController {
|
||||
|
@ -55,4 +53,37 @@ public class LootBoxController {
|
|||
|
||||
return ResponseEntity.ok(reward);
|
||||
}
|
||||
|
||||
@PostMapping("/lootboxes")
|
||||
public ResponseEntity<Object> createLootbox(@RequestBody @Valid CreateLootBoxDto createLootBoxDto) {
|
||||
List<RewardEntity> rewardEntities = new ArrayList<>();
|
||||
|
||||
for (CreateRewardDto createRewardDto : createLootBoxDto.getRewards()) {
|
||||
rewardEntities.add(new RewardEntity(createRewardDto.getValue(), createRewardDto.getProbability()));
|
||||
}
|
||||
|
||||
LootBoxEntity lootBoxEntity = new LootBoxEntity(
|
||||
createLootBoxDto.getName(),
|
||||
createLootBoxDto.getPrice(),
|
||||
rewardEntities
|
||||
);
|
||||
|
||||
this.lootBoxRepository.save(lootBoxEntity);
|
||||
|
||||
return ResponseEntity.ok(lootBoxEntity);
|
||||
}
|
||||
|
||||
@DeleteMapping("/lootboxes/{id}")
|
||||
public ResponseEntity<Object> deleteLootbox(@PathVariable Long id) {
|
||||
Optional<LootBoxEntity> optionalLootBox = lootBoxRepository.findById(id);
|
||||
if (optionalLootBox.isEmpty()) {
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
LootBoxEntity lootBox = optionalLootBox.get();
|
||||
lootBoxRepository.delete(lootBox);
|
||||
|
||||
return ResponseEntity.ok(Collections.singletonMap("message", "successfully deleted lootbox"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,9 +18,15 @@ import java.util.List;
|
|||
@Entity
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class LootBoxEntity {
|
||||
|
||||
public LootBoxEntity(String name, BigDecimal price, List<RewardEntity> rewards) {
|
||||
this.name = name;
|
||||
this.price = price;
|
||||
this.rewards = rewards;
|
||||
}
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonBackReference;
|
|||
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
||||
import jakarta.persistence.*;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
@ -13,7 +14,14 @@ import java.util.List;
|
|||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@NoArgsConstructor
|
||||
public class RewardEntity {
|
||||
|
||||
public RewardEntity(BigDecimal value, BigDecimal probability) {
|
||||
this.value = value;
|
||||
this.probability = probability;
|
||||
}
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue