Skip to content

Commit 5361ed7

Browse files
authored
Merge pull request #237 from prgrms-web-devcourse-final-project/cdj/schedule/votehotfix
🐛 fix: 중간 장소 투표 DTO 수정(Schedule -> ScheduleId)
2 parents 35a70df + 18883f5 commit 5361ed7

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

src/main/java/com/grepp/spring/app/model/schedule/dto/VoteMiddleLocationDto.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.grepp.spring.app.model.schedule.entity.Schedule;
55
import com.grepp.spring.app.model.schedule.entity.ScheduleMember;
66
import com.grepp.spring.app.model.schedule.entity.Vote;
7+
import com.grepp.spring.app.model.schedule.repository.ScheduleMemberRepository;
78
import lombok.Builder;
89
import lombok.Getter;
910
import lombok.Setter;
@@ -12,21 +13,27 @@
1213
@Setter
1314
@Builder
1415
public class VoteMiddleLocationDto {
15-
private ScheduleMember scheduleMember;
16+
// private ScheduleMember scheduleMember;
17+
private Long scheduleMemberId;
1618
private Location location;
1719
private Schedule schedule;
1820

19-
public static VoteMiddleLocationDto toDto(ScheduleMember scheduleMember, Location location, Schedule schedule) {
21+
public static VoteMiddleLocationDto toDto(Long scheduleMemberId, Location location, Schedule schedule) {
2022
return VoteMiddleLocationDto.builder()
21-
.scheduleMember(scheduleMember)
23+
.scheduleMemberId(scheduleMemberId)
2224
.location(location)
2325
.schedule(schedule)
2426
.build();
2527
}
2628

27-
public static Vote fromDto(VoteMiddleLocationDto dto) {
29+
public static Vote fromDto(VoteMiddleLocationDto dto,
30+
ScheduleMemberRepository scheduleMemberRepository) {
31+
32+
ScheduleMember scheduleMember = scheduleMemberRepository.findById(dto.getScheduleMemberId())
33+
.orElseThrow(() -> new IllegalArgumentException("ScheduleMember not found with ID: " + dto.getScheduleMemberId()));
2834
return Vote.builder()
29-
.scheduleMember(dto.getScheduleMember())
35+
// .scheduleMember(dto.getScheduleMember())
36+
.scheduleMember(scheduleMember)
3037
.location(dto.getLocation())
3138
.schedule(dto.getSchedule())
3239
.build();

src/main/java/com/grepp/spring/app/model/schedule/service/ScheduleCommandService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,8 @@ private List<JsonNode> findNearestStations(double latitude, double longitude)
449449
@Transactional
450450
public void voteMiddleLocation(Schedule schedule, ScheduleMember scheduleMember, Location lid) {
451451

452+
// 엔티티 객체 대신 ID를 사용하도록 변경
453+
Long scheduleMemberId = scheduleMember.getId();
452454
// Location location = getLocation(lid);
453455
// Location 엔티티에 비관적 락을 걸고 조회하기
454456
// 파라미터를 id로 받으면 더 좋을 것 같음
@@ -466,8 +468,8 @@ public void voteMiddleLocation(Schedule schedule, ScheduleMember scheduleMember,
466468
int scheduleMemberNumber = scheduleMemberQueryRepository.findByScheduleId(schedule.getId()).size();
467469

468470
// vote 저장 시점을 뒤로 미뤄서, Location 락과의 교착을 방지
469-
VoteMiddleLocationDto dto = VoteMiddleLocationDto.toDto(scheduleMember, lid, schedule);
470-
Vote vote = VoteMiddleLocationDto.fromDto(dto);
471+
VoteMiddleLocationDto dto = VoteMiddleLocationDto.toDto(scheduleMemberId, lid, schedule);
472+
Vote vote = VoteMiddleLocationDto.fromDto(dto, scheduleMemberRepository);
471473
voteCommandRepository.save(vote);
472474

473475

src/main/java/com/grepp/spring/app/model/schedule/service/ScheduleQueryService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class ScheduleQueryService {
5151
private final VoteQueryRepository voteQueryRepository;
5252
private final MetroTransferQueryRepository metroTransferQueryRepository;
5353

54-
@Transactional
54+
@Transactional(readOnly = true)
5555
public ShowScheduleResponse showSchedule(Schedule schedule, String userId) {
5656

5757
Long eventId = schedule.getEvent().getId();

0 commit comments

Comments
 (0)