Skip to content

Commit c5c225b

Browse files
committed
refactor: Character 상세 조회 응답 필드 추가
1 parent e516e5e commit c5c225b

3 files changed

Lines changed: 24 additions & 3 deletions

File tree

src/main/java/everTale/everTale_be/domain/character/dto/CharacterDetailResponseDto.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package everTale.everTale_be.domain.character.dto;
22

33
import everTale.everTale_be.domain.character.entity.StoryCharacter;
4+
import everTale.everTale_be.domain.profile.entity.Profile;
5+
import everTale.everTale_be.domain.story.entity.Story;
46
import io.swagger.v3.oas.annotations.media.Schema;
57
import lombok.Builder;
68
import lombok.Getter;
@@ -13,6 +15,9 @@
1315
@Schema(description = "캐릭터 상세 조회 응답 DTO")
1416
public class CharacterDetailResponseDto {
1517

18+
@Schema(description = "캐릭터 이미지 URL", example = "https://example.com/image.png")
19+
private String imageUrl;
20+
1621
@Schema(description = "캐릭터 이름", example = "글로든")
1722
private String name;
1823

@@ -25,18 +30,27 @@ public class CharacterDetailResponseDto {
2530
@Schema(description = "캐릭터 성격 목록", example = "[\"활발함\", \"외향적\"]")
2631
private List<String> personalities;
2732

33+
@Schema(description = "캐릭터가 등장하는 스토리 ID", example = "5")
34+
private Long storyId;
35+
2836
@Schema(description = "캐릭터가 등장하는 스토리 제목", example = "엘리오")
2937
private String storyTitle;
3038

31-
public static CharacterDetailResponseDto from(StoryCharacter character){
39+
@Schema(description = "작가 이름", example = "김이화")
40+
private String authorName;
41+
42+
public static CharacterDetailResponseDto from(StoryCharacter character, Story story, Profile author){
3243
return CharacterDetailResponseDto.builder()
44+
.imageUrl(character.getImageUrl())
3345
.name(character.getName())
3446
.age(character.getAge())
3547
.gender(String.valueOf(character.getGender()))
3648
.personalities(character.getCharacterPersonalities().stream()
3749
.map(characterPersonality -> characterPersonality.getPersonality().getPersonality())
3850
.collect(Collectors.toList()))
39-
.storyTitle(character.getStory().getTitle())
51+
.storyId(story.getId())
52+
.storyTitle(story.getTitle())
53+
.authorName(author.getName())
4054
.build();
4155
}
4256
}

src/main/java/everTale/everTale_be/domain/character/service/CharacterService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import everTale.everTale_be.domain.profile.entity.Profile;
99
import everTale.everTale_be.domain.profile.service.ProfileService;
1010
import everTale.everTale_be.domain.profile.util.ProfileHelper;
11+
import everTale.everTale_be.domain.story.entity.Story;
12+
import everTale.everTale_be.domain.story.service.StoryService;
1113
import everTale.everTale_be.global.apiPayload.code.status.ErrorStatus;
1214
import everTale.everTale_be.global.apiPayload.exception.handler.NotFoundHandler;
1315
import lombok.RequiredArgsConstructor;
@@ -23,6 +25,7 @@ public class CharacterService {
2325

2426
private final ProfileHelper profileHelper;
2527
private final ProfileService profileService;
28+
private final StoryService storyService;
2629
private final StoryCharacterRepository characterRepository;
2730

2831
// 주인공 모음집 조회
@@ -43,6 +46,8 @@ public CharacterCollectionResponseDto getCharacters(Long profileId, Pageable pag
4346
public CharacterDetailResponseDto getCharacterDetail(Long characterId){
4447
StoryCharacter character = characterRepository.findById(characterId)
4548
.orElseThrow(()-> new NotFoundHandler(ErrorStatus.CHARACTER_NOT_FOUND));
46-
return CharacterDetailResponseDto.from(character);
49+
Story story = character.getStory();
50+
Profile author = story.getProfile();
51+
return CharacterDetailResponseDto.from(character, story, author);
4752
}
4853
}

src/main/java/everTale/everTale_be/domain/story/service/StoryService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,8 @@ public StoryCollectionResponseDto getStories(Long profileId, Pageable pageable)
328328
return StoryCollectionResponseDto.from(stories);
329329
}
330330

331+
332+
331333
public String getSceneText(Long storyId, Long sceneId) {
332334
boolean isStoryExists = storyRepository.existsById(storyId);
333335
if (!isStoryExists){

0 commit comments

Comments
 (0)