Skip to content

Commit f796b2f

Browse files
authored
Merge pull request #170 from TeamLearningFlow/develop
Develop
2 parents f73a66f + 7865e27 commit f796b2f

3 files changed

Lines changed: 60 additions & 6 deletions

File tree

src/main/java/learningFlow/learningFlow_BE/converter/ResourceConverter.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ public static ResourceResponseDTO.changeEpisodeIsCompleteDTO toChangeEpisodeIsCo
7474
.build();
7575
}
7676

77-
public static ResourceResponseDTO.SearchResultResourceDTO convertToResourceDTO(CollectionEpisode episode) {
77+
public static ResourceResponseDTO.SearchResultResourceDTO convertToResourceDTO(
78+
CollectionEpisode episode
79+
) {
7880
return ResourceResponseDTO.SearchResultResourceDTO.builder()
7981
.episodeId(episode.getId())
8082
.episodeName(episode.getEpisodeName())
@@ -101,6 +103,22 @@ public static ResourceResponseDTO.RecentlyWatchedEpisodeDTO convertToRecentlyWat
101103
.build();
102104
}
103105

106+
public static List<ResourceResponseDTO.SearchResultResourceDTO> convertToResourceDTOWithToday(
107+
List<CollectionEpisode> episodes,
108+
int nextEpisodeNumber
109+
) {
110+
return episodes.stream()
111+
.map(episode -> ResourceResponseDTO.SearchResultResourceDTO.builder()
112+
.episodeId(episode.getId())
113+
.episodeName(episode.getEpisodeName())
114+
.url(episode.getResource().getUrl())
115+
.resourceSource(extractResourceSource(episode.getResource().getUrl()))
116+
.episodeNumber(episode.getEpisodeNumber())
117+
.today(episode.getEpisodeNumber().equals(nextEpisodeNumber))
118+
.build())
119+
.toList();
120+
}
121+
104122
private static String extractResourceSource(String url) {
105123

106124
String lowerCaseUrl = url.toLowerCase();

src/main/java/learningFlow/learningFlow_BE/service/collection/CollectionService.java

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,13 +277,48 @@ public HomeResponseDTO.UserHomeInfoDTO getUserHomeCollections(User user) {
277277
}
278278

279279
private CollectionResponseDTO.CollectionPreviewDTO getRecentLearning(User user) {
280+
280281
return userCollectionRepository
281282
.findFirstByUserAndStatusOrderByUpdatedAtDesc(user, UserCollectionStatus.IN_PROGRESS)
282-
.map(userCollection -> CollectionConverter.toCollectionPreviewDTO(
283-
userCollection.getCollection(),
284-
getLearningInfo(userCollection.getCollection(), user, false),
285-
user
286-
))
283+
.map(userCollection -> {
284+
Collection collection = userCollection.getCollection();
285+
286+
List<CollectionEpisode> episodes = collection.getEpisodes();
287+
int totalEpisodes = episodes.size();
288+
int currentEpisode = userCollection.getUserCollectionStatus();
289+
int nextEpisode = currentEpisode + 1;
290+
291+
List<CollectionEpisode> selectedEpisodes = new ArrayList<>();
292+
if (totalEpisodes <= 4) {
293+
// 4회차 이하의 컬렉션은 전체 표시
294+
selectedEpisodes.addAll(episodes);
295+
} else {
296+
// 5회차 이상의 컬렉션
297+
// today 에피소드(다음 에피소드)가 가능한 2번째에 오도록 계산
298+
int idealStart = nextEpisode - 2; // today가 2번째에 오기 위한 이상적인 시작 인덱스
299+
300+
// 실제 시작 인덱스 계산 (0 이상, totalEpisodes-4 이하)
301+
int startIdx = Math.max(0, Math.min(idealStart, totalEpisodes - 4));
302+
303+
// 4개의 에피소드 선택
304+
for (int i = 0; i < 4; i++) {
305+
selectedEpisodes.add(episodes.get(startIdx + i));
306+
}
307+
}
308+
309+
CollectionResponseDTO.CollectionLearningInfo learningInfo = CollectionResponseDTO.CollectionLearningInfo.builder()
310+
.learningStatus("IN_PROGRESS")
311+
.progressRate(calculateProgressRate(userCollection))
312+
.startDate(userCollection.getCreatedAt().toLocalDate())
313+
.currentEpisode(currentEpisode)
314+
.resourceDTOList(ResourceConverter.convertToResourceDTOWithToday(
315+
selectedEpisodes,
316+
nextEpisode
317+
))
318+
.build();
319+
320+
return CollectionConverter.toCollectionPreviewDTO(collection, learningInfo, user);
321+
})
287322
.orElse(null);
288323
}
289324

src/main/java/learningFlow/learningFlow_BE/web/dto/resource/ResourceResponseDTO.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public static class SearchResultResourceDTO {
6464
String url;
6565
String resourceSource;
6666
Integer episodeNumber;
67+
Boolean today;
6768
}
6869

6970
@Getter

0 commit comments

Comments
 (0)