diff --git a/src/main/java/ku/user/domain/character/controller/CharacterController.java b/src/main/java/ku/user/domain/character/controller/CharacterController.java index dcc2f1c..52953ee 100644 --- a/src/main/java/ku/user/domain/character/controller/CharacterController.java +++ b/src/main/java/ku/user/domain/character/controller/CharacterController.java @@ -9,8 +9,12 @@ import ku.user.domain.inventory.service.InventoryService; import ku.user.global.response.ApiResponse; import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; +import java.util.stream.Collectors; + @RestController @RequiredArgsConstructor public class CharacterController { @@ -56,5 +60,15 @@ public ApiResponse deleteCharacter(@RequestParam String return new ApiResponse<>(true, deleteCharacterResponse, null); } + // 캐릭터 정보 가져오기(캐릭터 이름, 유저 이메일, 성별, 돈, 인벤토리?) + @GetMapping("/characterList") + public List findAllCharacters(){ + List characters = characterService.findAll(); + return characters.stream() + .map(character -> { + Inventory inventory = inventoryService.findByCharacterId(character.getId()); + return FindAllCharactersResponse.toDto(inventory, character); + }).collect(Collectors.toList()); + } } diff --git a/src/main/java/ku/user/domain/character/dto/response/FindAllCharactersResponse.java b/src/main/java/ku/user/domain/character/dto/response/FindAllCharactersResponse.java new file mode 100644 index 0000000..7e37d2e --- /dev/null +++ b/src/main/java/ku/user/domain/character/dto/response/FindAllCharactersResponse.java @@ -0,0 +1,26 @@ +package ku.user.domain.character.dto.response; + +import ku.user.domain.character.domain.Character; +import ku.user.domain.character.domain.CharacterType; +import ku.user.domain.inventory.domain.Inventory; +import lombok.Builder; + +import java.util.List; + +@Builder +public record FindAllCharactersResponse (String nickname, + CharacterType characterType, Long userId, + int currentMoney, + List useItemList){ + public static FindAllCharactersResponse toDto(Inventory inventory, Character character){ + return FindAllCharactersResponse.builder() + .nickname(character.getNickname()) + .userId(character.getUserId()) + .characterType(character.getCharacterType()) + .currentMoney(character.getCurrentMoney()) + .useItemList(List.of(inventory.getAuraIndex(), + inventory.getTitleColorIndex(), + inventory.getTitleBackgroundIndex())) + .build(); + } +} diff --git a/src/main/java/ku/user/domain/character/service/CharacterService.java b/src/main/java/ku/user/domain/character/service/CharacterService.java index b8c22c8..22e724b 100644 --- a/src/main/java/ku/user/domain/character/service/CharacterService.java +++ b/src/main/java/ku/user/domain/character/service/CharacterService.java @@ -14,6 +14,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; +import java.util.List; import java.util.Optional; @Service @@ -120,4 +122,15 @@ public Character payPriceByEmail(String email, int price) { character.pay(price); return character; } + + @Transactional(readOnly = true) + public List findAll(){ + try{ + return characterRepository.findAll(); + }catch (Exception e){ + // 현재는 빈 배열을 반환하게 + return Collections.emptyList(); + } + } + }