Skip to content

Commit 3555987

Browse files
authored
fix: 캐시 삭제 로직 수정 (#143)
* fix: 에러 코드 변경 * fix: cors 허용 메서드 수정 * fix: 로그인 anonymous 해제 * fix: 시큐리티 컨픽 불필요한 부분 삭제 * fix: 시큐리티 컨픽 permitall 추가 * fix: 캐시 삭제 추가
1 parent 5e5d115 commit 3555987

File tree

1 file changed

+42
-15
lines changed

1 file changed

+42
-15
lines changed

src/main/java/com/oronaminc/join/room/service/RoomService.java

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
package com.oronaminc.join.room.service;
22

3+
import static com.oronaminc.join.global.exception.ErrorCode.*;
4+
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.stream.Collectors;
8+
9+
import org.springframework.cache.Cache;
10+
import org.springframework.cache.CacheManager;
11+
import org.springframework.context.ApplicationEventPublisher;
12+
import org.springframework.stereotype.Service;
13+
import org.springframework.transaction.annotation.Transactional;
14+
315
import com.oronaminc.join.answer.domain.Answer;
416
import com.oronaminc.join.answer.service.AnswerReader;
517
import com.oronaminc.join.document.domain.Document;
@@ -16,22 +28,23 @@
1628
import com.oronaminc.join.room.dao.RoomRepository;
1729
import com.oronaminc.join.room.domain.Room;
1830
import com.oronaminc.join.room.domain.RoomStatus;
19-
import com.oronaminc.join.room.dto.*;
31+
import com.oronaminc.join.room.dto.CreateRoomRequest;
32+
import com.oronaminc.join.room.dto.CreateRoomResponse;
33+
import com.oronaminc.join.room.dto.JoinRoomRequest;
34+
import com.oronaminc.join.room.dto.JoinRoomResponse;
35+
import com.oronaminc.join.room.dto.ReportResponse;
36+
import com.oronaminc.join.room.dto.RoomDetailResponse;
37+
import com.oronaminc.join.room.dto.RoomJoinResponse;
38+
import com.oronaminc.join.room.dto.RoomUpdateInfoResponse;
39+
import com.oronaminc.join.room.dto.RoomUpdateRequest;
40+
import com.oronaminc.join.room.dto.RoomUpdateStatusRequest;
41+
import com.oronaminc.join.room.dto.TopQnAResponse;
2042
import com.oronaminc.join.room.event.RoomDeleteEvent;
2143
import com.oronaminc.join.room.util.CodeGenerator;
2244
import com.oronaminc.join.room.util.RoomMapper;
2345
import com.oronaminc.join.websocket.session.CurrentParticipantManager;
24-
import lombok.RequiredArgsConstructor;
25-
import org.springframework.cache.annotation.CacheEvict;
26-
import org.springframework.context.ApplicationEventPublisher;
27-
import org.springframework.stereotype.Service;
28-
import org.springframework.transaction.annotation.Transactional;
2946

30-
import java.util.List;
31-
import java.util.Map;
32-
import java.util.stream.Collectors;
33-
34-
import static com.oronaminc.join.global.exception.ErrorCode.*;
47+
import lombok.RequiredArgsConstructor;
3548

3649
@Service
3750
@Transactional(readOnly = true)
@@ -49,6 +62,7 @@ public class RoomService {
4962
private final RoomReader roomReader;
5063
private final CurrentParticipantManager currentParticipantManager;
5164
private final ApplicationEventPublisher publisher;
65+
private final CacheManager cacheManager;
5266

5367
private static final int CODE_LENGTH = 6;
5468

@@ -92,7 +106,6 @@ public RoomDetailResponse getRoomDetail(Long memberId, Long roomId) {
92106
}
93107

94108
@Transactional
95-
@CacheEvict(cacheNames = "roomById", key = "#roomId")
96109
public void updateRoom(Long memberId, Long roomId, RoomUpdateRequest updateRoomRequest) {
97110
participantService.validatePresenter(roomId, memberId);
98111

@@ -105,10 +118,11 @@ public void updateRoom(Long memberId, Long roomId, RoomUpdateRequest updateRoomR
105118
room.update(updateRoomRequest);
106119
participantService.updateTeam(room, updateRoomRequest.teamEmail());
107120
documentService.updateDocument(updateRoomRequest.documentUrl(), roomId);
121+
122+
clearCache(room.getId(), room.getSecretCode());
108123
}
109124

110125
@Transactional
111-
@CacheEvict(cacheNames = "roomById", key = "#roomId")
112126
public void deleteRoom(Long memberId, Long roomId) {
113127
participantService.validatePresenter(roomId, memberId);
114128

@@ -119,18 +133,19 @@ public void deleteRoom(Long memberId, Long roomId) {
119133
throw new ErrorException(BAD_REQUEST_ROOM_STARTED);
120134
}
121135

136+
clearCache(room.getId(), room.getSecretCode());
122137
publisher.publishEvent(new RoomDeleteEvent(roomId));
123138
roomRepository.deleteById(roomId);
124139
s3Service.deleteFile(document.getFileUrl());
125140
}
126141

127142
@Transactional
128-
@CacheEvict(cacheNames = "roomById", key = "#roomId")
129143
public void updateRoomStatus(Long memberId, Long roomId,
130-
RoomUpdateStatusRequest roomUpdateStatusRequest) {
144+
RoomUpdateStatusRequest roomUpdateStatusRequest) {
131145
participantService.validatePresenter(roomId, memberId);
132146
Room room = roomReader.getById(roomId);
133147

148+
clearCache(room.getId(), room.getSecretCode());
134149
RoomStatus updateStatus = roomUpdateStatusRequest.roomStatus();
135150
List<RoomStatus> canUpdateStatus = List.of(RoomStatus.STARTED, RoomStatus.ENDED);
136151
if (!canUpdateStatus.contains(roomUpdateStatusRequest.roomStatus())) {
@@ -222,4 +237,16 @@ public RoomJoinResponse subscribeRoom(Long roomId, Long memberId) {
222237
currentParticipantManager.addParticipant(roomId, memberId, limit);
223238
return new RoomJoinResponse(currentParticipantManager.getRoomParticipants(roomId).size());
224239
}
240+
241+
private void clearCache(Long roomId, String secretCode) {
242+
Cache roomByIdCache = cacheManager.getCache("roomById");
243+
if (roomByIdCache != null) {
244+
roomByIdCache.evict(roomId);
245+
}
246+
247+
Cache roomBySecretCodeCache = cacheManager.getCache("roomBySecretCode");
248+
if (roomBySecretCodeCache != null) {
249+
roomBySecretCodeCache.evict(secretCode);
250+
}
251+
}
225252
}

0 commit comments

Comments
 (0)