Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ private CacheNameConstants() {}
public static final String MISSIONS = "missions";
public static final String DAILY_GOAL = "dailyGoal";
public static final String STUDY_LOGS = "studyLogs";
public static final String TRIP_REPORT = "tripReport";
public static final String TRIP_REPORTS = "tripReports";
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,23 @@ public static String member(Long memberId) {
}

public static String trips(Long memberId, int page, int size) {
return "member:" + memberId + ":page:" + page + ":size:" + size;
return "member:" + memberId + ":trips" + ":page:" + page + ":size:" + size;
}

public static String trip(Long memberId, Long tripId) {
return "member:" + memberId + ":trip:" + tripId;
}

public static String stamps(Long memberId, Long tripId) {
return "member:" + memberId + ":trip:" + tripId;
return "member:" + memberId + ":trip:" + tripId + ":stamps";
}

public static String stamp(Long memberId, Long tripId, Long stampId) {
return "member:" + memberId + ":trip:" + tripId + ":stamp:" + stampId;
}

public static String missions(Long memberId, Long tripId, Long stampId) {
return "member:" + memberId + ":trip:" + tripId + ":stamp:" + stampId;
return "member:" + memberId + ":trip:" + tripId + ":stamp:" + stampId + ":missions";
}

public static String dailyGoal(Long memberId, Long tripId, Long dailyGoalId) {
Expand All @@ -38,11 +38,27 @@ public static String studyLogs(Long memberId, Long tripId, int page, int size, S
+ memberId
+ ":trip:"
+ tripId
+ ":studyLogs"
+ ":page:"
+ page
+ ":size:"
+ size
+ ":order:"
+ order.toLowerCase();
}

public static String tripReports(Long memberId) {
return "member:" + memberId + ":tripReports";
}

public static String tripReport(Long memberId, Long tripReportId, int page, int size) {
return "member:"
+ memberId
+ ":tripReport:"
+ tripReportId
+ ":page:"
+ page
+ ":size:"
+ size;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,11 @@ private Map<String, RedisCacheConfiguration> redisCacheConfigsByName(
configs.put(MEMBER, common.entryTtl(Duration.ofMinutes(10))); // 멤버 상세 조회
configs.put(DAILY_GOAL, common.entryTtl(Duration.ofMinutes(10))); // 데일리 목표 상세 조회
configs.put(STUDY_LOGS, common.entryTtl(Duration.ofMinutes(10))); // 학습 로그 목록 조회
configs.put(TRIP_REPORTS, common.entryTtl(Duration.ofMinutes(10))); // 여행 리포트 목록 조회

configs.put(TRIP, common.entryTtl(Duration.ofMinutes(5))); // 여행 상세 조회
configs.put(STAMP, common.entryTtl(Duration.ofMinutes(5))); // 스탬프 상세 조회
configs.put(TRIP_REPORT, common.entryTtl(Duration.ofMinutes(5))); // 여행 리포트 상세 조회

configs.put(TRIPS, common.entryTtl(Duration.ofMinutes(3))); // 여행 목록 조회(페이지)
configs.put(STAMPS, common.entryTtl(Duration.ofMinutes(3))); // 스탬프 목록 조회
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.ject.studytrip.trip.application.facade;

import static com.ject.studytrip.global.common.constants.CacheNameConstants.TRIP_REPORT;
import static com.ject.studytrip.global.common.constants.CacheNameConstants.TRIP_REPORTS;

import com.ject.studytrip.image.application.dto.PresignedImageInfo;
import com.ject.studytrip.image.application.service.ImageService;
import com.ject.studytrip.member.application.service.MemberQueryService;
Expand All @@ -25,6 +28,9 @@
import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -71,6 +77,10 @@ public TripRetrospectDetail getTripRetrospect(Long memberId, Long tripId, int pa
return TripRetrospectDetail.from(summary, tripInfo, studyLogDetailSlice);
}

@Cacheable(
cacheNames = TRIP_REPORTS,
key =
"T(com.ject.studytrip.global.common.factory.CacheKeyFactory).tripReports(#memberId)")
@Transactional(readOnly = true)
public TripReportsInfo getTripReportsByMember(Long memberId) {
Member member = memberQueryService.getValidMember(memberId);
Expand All @@ -80,6 +90,10 @@ public TripReportsInfo getTripReportsByMember(Long memberId) {
return TripReportsInfo.of(tripReports.stream().map(TripReportInfo::from).toList());
}

@Cacheable(
cacheNames = TRIP_REPORT,
key =
"T(com.ject.studytrip.global.common.factory.CacheKeyFactory).tripReport(#memberId, #tripReportId, #page, #size)")
@Transactional(readOnly = true)
public TripReportDetail getTripReport(Long memberId, Long tripReportId, int page, int size) {
Member member = memberQueryService.getValidMember(memberId);
Expand All @@ -95,6 +109,10 @@ public TripReportDetail getTripReport(Long memberId, Long tripReportId, int page
return TripReportDetail.from(tripReportInfo, studyLogDetailSlice);
}

@CacheEvict(
cacheNames = TRIP_REPORTS,
key =
"T(com.ject.studytrip.global.common.factory.CacheKeyFactory).tripReports(#memberId)")
@Transactional
public TripReportInfo createTripReport(Long memberId, CreateTripReportRequest request) {
Member member = memberQueryService.getValidMember(memberId);
Expand All @@ -105,6 +123,14 @@ public TripReportInfo createTripReport(Long memberId, CreateTripReportRequest re
return TripReportInfo.from(tripReport);
}

@Caching(
evict = {
@CacheEvict(
cacheNames = TRIP_REPORTS,
key =
"T(com.ject.studytrip.global.common.factory.CacheKeyFactory).tripReports(#memberId)"),
@CacheEvict(cacheNames = TRIP_REPORT, allEntries = true)
})
@Transactional
public void deleteTripReport(Long memberId, Long tripReportId) {
Member member = memberQueryService.getValidMember(memberId);
Expand All @@ -129,6 +155,11 @@ public PresignedTripReportImageInfo issuePresignedUrl(
tripReport.getId(), info.tmpKey(), info.presignedUrl());
}

@Caching(
evict = {
@CacheEvict(cacheNames = TRIP_REPORTS, allEntries = true),
@CacheEvict(cacheNames = TRIP_REPORT, allEntries = true)
})
@Transactional
public void confirmImage(Long tripReportId, ConfirmTripReportImageRequest request) {
TripReport tripReport = tripReportQueryService.getTripReport(tripReportId);
Expand Down