Skip to content

Commit 7df3204

Browse files
authored
v2.0.3 (#405)
2 parents 9467472 + dabec15 commit 7df3204

File tree

7 files changed

+41
-36
lines changed

7 files changed

+41
-36
lines changed

src/main/java/com/depromeet/domain/feed/api/FeedController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import io.swagger.v3.oas.annotations.tags.Tag;
1111
import java.util.List;
1212
import lombok.RequiredArgsConstructor;
13-
import org.springframework.data.domain.Pageable;
1413
import org.springframework.data.domain.Slice;
1514
import org.springframework.web.bind.annotation.GetMapping;
1615
import org.springframework.web.bind.annotation.PathVariable;
@@ -46,8 +45,10 @@ public FeedSliceResponse feedFindByPage(
4645
@Operation(summary = "피드 탭 V2 (페이지네이션)", description = "피드 탭을 조회합니다.")
4746
@GetMapping("/me/v2")
4847
public Slice<FeedOneResponse> feedFindByPageV2(
49-
@RequestParam(required = false) FeedVisibility visibility, Pageable pageable) {
50-
return feedService.findFeedV2(visibility, pageable);
48+
@RequestParam int size,
49+
@RequestParam(required = false) Long lastId,
50+
@RequestParam(required = false) FeedVisibility visibility) {
51+
return feedService.findFeedV2(visibility, size, lastId);
5152
}
5253

5354
@Operation(summary = "프로필 피드", description = "피드 탭을 조회합니다.")

src/main/java/com/depromeet/domain/feed/application/FeedService.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.ArrayList;
2020
import java.util.List;
2121
import lombok.RequiredArgsConstructor;
22-
import org.springframework.data.domain.Pageable;
2322
import org.springframework.data.domain.Slice;
2423
import org.springframework.stereotype.Service;
2524
import org.springframework.transaction.annotation.Transactional;
@@ -62,23 +61,23 @@ public FeedSliceResponse findFeed(int size, Long lastId, MissionVisibility visib
6261
}
6362

6463
@Transactional(readOnly = true)
65-
public Slice<FeedOneResponse> findFeedV2(FeedVisibility visibility, Pageable pageable) {
64+
public Slice<FeedOneResponse> findFeedV2(FeedVisibility visibility, int size, Long lastId) {
6665
if (visibility == FeedVisibility.ALL) {
67-
return findAllFeedV2(pageable);
66+
return findAllFeedV2(size, lastId);
6867
}
69-
return findFollowingFeedV2(pageable);
68+
return findFollowingFeedV2(size, lastId);
7069
}
7170

72-
private Slice<FeedOneResponse> findAllFeedV2(Pageable pageable) {
73-
return missionRecordRepository.findAllFetch(pageable).map(FeedOneResponse::from);
71+
private Slice<FeedOneResponse> findAllFeedV2(int size, Long lastId) {
72+
return missionRecordRepository.findAllFetch(size, lastId).map(FeedOneResponse::from);
7473
}
7574

76-
private Slice<FeedOneResponse> findFollowingFeedV2(Pageable pageable) {
75+
private Slice<FeedOneResponse> findFollowingFeedV2(int size, Long lastId) {
7776
final Member currentMember = memberUtil.getCurrentMember();
7877
List<Member> followingMembers = followService.getFollowingMembers(currentMember);
7978

8079
return missionRecordRepository
81-
.findAllFetchByFollowings(pageable, followingMembers)
80+
.findAllFetchByFollowings(size, lastId, followingMembers)
8281
.map(FeedOneResponse::from);
8382
}
8483

@@ -95,8 +94,8 @@ public FeedSliceResponse findAllFeed(int size, Long lastId) {
9594
public FeedSliceResponse findFollowerFeed(int size, Long lastId) {
9695
final Member currentMember = memberUtil.getCurrentMember();
9796
List<Member> sourceMembers = getSourceMembers(currentMember.getId());
97+
System.out.println(sourceMembers.size());
9898

99-
sourceMembers.add(currentMember);
10099
Slice<FeedOneResponse> feedAllByPage =
101100
missionRecordRepository.findFeedAllByPage(size, lastId, sourceMembers);
102101
return FeedSliceResponse.from(feedAllByPage);

src/main/java/com/depromeet/domain/mission/application/MissionService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.time.Duration;
2020
import java.time.LocalDate;
2121
import java.time.LocalDateTime;
22+
import java.time.Period;
2223
import java.util.ArrayList;
2324
import java.util.Comparator;
2425
import java.util.List;
@@ -283,7 +284,10 @@ private Mission createMissionEntity(MissionCreateRequest missionCreateRequest) {
283284
missionCreateRequest.category(),
284285
missionCreateRequest.visibility(),
285286
startedAt,
286-
startedAt.plus(missionCreateRequest.period().getPeriod()),
287+
startedAt.plus(
288+
missionCreateRequest.period() == null
289+
? Period.ofWeeks(2)
290+
: missionCreateRequest.period().getPeriod()),
287291
missionCreateRequest.remindAt(),
288292
member);
289293
}

src/main/java/com/depromeet/domain/mission/dto/request/MissionCreateRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ public record MissionCreateRequest(
2020
@NotNull @Schema(description = "미션 카테고리", defaultValue = "STUDY") MissionCategory category,
2121
@NotNull @Schema(description = "미션 공개여부", defaultValue = "ALL")
2222
MissionVisibility visibility,
23-
@NotNull @Schema(description = "미션 기한", defaultValue = "TWO_WEEKS") MissionPeriod period,
23+
@Schema(description = "미션 기한", defaultValue = "TWO_WEEKS") MissionPeriod period,
2424
@Schema(description = "미션 리마인드 알림 시간", defaultValue = "00:50:00", type = "string")
2525
LocalTime remindAt) {}

src/main/java/com/depromeet/domain/missionRecord/dao/MissionRecordRepositoryCustom.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.depromeet.domain.missionRecord.domain.MissionRecord;
77
import java.time.YearMonth;
88
import java.util.List;
9-
import org.springframework.data.domain.Pageable;
109
import org.springframework.data.domain.Slice;
1110

1211
public interface MissionRecordRepositoryCustom {
@@ -31,7 +30,8 @@ List<FeedOneResponse> findFeedByVisibility(
3130
Slice<FeedOneResponse> findFeedByVisibilityAndPage(
3231
int size, Long lastId, List<Member> members, List<MissionVisibility> visibility);
3332

34-
Slice<MissionRecord> findAllFetch(Pageable pageable);
33+
Slice<MissionRecord> findAllFetch(int size, Long lastId);
3534

36-
Slice<MissionRecord> findAllFetchByFollowings(Pageable pageable, List<Member> followingMembers);
35+
Slice<MissionRecord> findAllFetchByFollowings(
36+
int size, Long lastId, List<Member> followingMembers);
3737
}

src/main/java/com/depromeet/domain/missionRecord/dao/MissionRecordRepositoryImpl.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public void deleteByMissionRecordId(Long missionRecordId) {
168168
}
169169

170170
@Override
171-
public Slice<MissionRecord> findAllFetch(Pageable pageable) {
171+
public Slice<MissionRecord> findAllFetch(int size, Long lastId) {
172172

173173
List<MissionRecord> missionRecords =
174174
jpaQueryFactory
@@ -180,18 +180,18 @@ public Slice<MissionRecord> findAllFetch(Pageable pageable) {
180180
.leftJoin(missionRecord.reactions, reaction)
181181
.fetchJoin()
182182
.distinct()
183-
.offset(pageable.getOffset())
184-
.limit(pageable.getPageSize() + 1L)
183+
.where(ltMissionRecordId(lastId))
184+
.limit((long) size + 1)
185185
.fetch();
186186

187-
boolean hasNext = getHasNext(missionRecords, pageable);
187+
boolean hasNext = getHasNext(missionRecords, size);
188188

189-
return new SliceImpl<>(missionRecords, pageable, hasNext);
189+
return new SliceImpl<>(missionRecords, Pageable.ofSize(size), hasNext);
190190
}
191191

192192
@Override
193193
public Slice<MissionRecord> findAllFetchByFollowings(
194-
Pageable pageable, List<Member> followingMembers) {
194+
int size, Long lastId, List<Member> followingMembers) {
195195

196196
List<MissionRecord> missionRecords =
197197
jpaQueryFactory
@@ -200,15 +200,16 @@ public Slice<MissionRecord> findAllFetchByFollowings(
200200
.fetchJoin()
201201
.join(mission.member, member)
202202
.fetchJoin()
203-
.where(missionRecord.mission.member.in(followingMembers))
203+
.where(
204+
ltMissionRecordId(lastId),
205+
missionRecord.mission.member.in(followingMembers))
204206
.where(mission.visibility.in(List.of(ALL, FOLLOWER)))
205-
.offset(pageable.getOffset())
206-
.limit(pageable.getPageSize() + 1L)
207+
.limit((long) size + 1)
207208
.fetch();
208209

209-
boolean hasNext = getHasNext(missionRecords, pageable);
210+
boolean hasNext = getHasNext(missionRecords, size);
210211

211-
return new SliceImpl<>(missionRecords, pageable, hasNext);
212+
return new SliceImpl<>(missionRecords, Pageable.ofSize(size), hasNext);
212213
}
213214

214215
private BooleanExpression missionIdEq(Long missionId) {
@@ -253,10 +254,10 @@ private Slice<FeedOneResponse> checkLastPage(int size, List<FeedOneResponse> res
253254
return new SliceImpl<>(result, pageable, hasNext);
254255
}
255256

256-
private boolean getHasNext(List<?> list, Pageable pageable) {
257+
private boolean getHasNext(List<?> list, int size) {
257258
boolean hasNext = false;
258-
if (list.size() > pageable.getPageSize()) {
259-
list.remove(pageable.getPageSize());
259+
if (list.size() > size) {
260+
list.remove(size);
260261
hasNext = true;
261262
}
262263
return hasNext;

src/test/java/com/depromeet/domain/feed/application/FeedServiceTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ private void setFixture() {
230230

231231
// when
232232
Pageable pageable = PageRequest.of(0, 10);
233-
Slice<FeedOneResponse> response = feedService.findFeedV2(FeedVisibility.ALL, pageable);
233+
Slice<FeedOneResponse> response = feedService.findFeedV2(FeedVisibility.ALL, 10, 5L);
234234

235235
// then
236236
assertThat(response.getContent()).hasSize(4);
@@ -248,7 +248,7 @@ class 팔로잉_피드이면 {
248248
// when
249249
Pageable pageable = PageRequest.of(0, 10);
250250
Slice<FeedOneResponse> response =
251-
feedService.findFeedV2(FeedVisibility.FOLLOWING, pageable);
251+
feedService.findFeedV2(FeedVisibility.FOLLOWING, 10, 5L);
252252

253253
// then
254254
assertThat(response.getContent()).hasSize(2);
@@ -263,7 +263,7 @@ class 팔로잉_피드이면 {
263263
// when
264264
Pageable pageable = PageRequest.of(0, 10);
265265
Slice<FeedOneResponse> response =
266-
feedService.findFeedV2(FeedVisibility.FOLLOWING, pageable);
266+
feedService.findFeedV2(FeedVisibility.FOLLOWING, 10, 5L);
267267

268268
// then
269269
assertThat(response.getContent())
@@ -279,7 +279,7 @@ class 팔로잉_피드이면 {
279279
// when
280280
Pageable pageable = PageRequest.of(0, 10);
281281
Slice<FeedOneResponse> response =
282-
feedService.findFeedV2(FeedVisibility.FOLLOWING, pageable);
282+
feedService.findFeedV2(FeedVisibility.FOLLOWING, 10, 5L);
283283

284284
// then
285285
// 2번 미션의 미션기록은 공개이므로 조회
@@ -301,7 +301,7 @@ class 팔로잉_피드이면 {
301301
// when
302302
Pageable pageable = PageRequest.of(0, 10);
303303
Slice<FeedOneResponse> response =
304-
feedService.findFeedV2(FeedVisibility.FOLLOWING, pageable);
304+
feedService.findFeedV2(FeedVisibility.FOLLOWING, 10, 0L);
305305

306306
// then
307307
assertThat(response.getContent())

0 commit comments

Comments
 (0)