Skip to content

Commit 7545dd0

Browse files
committed
add: 티켓팅 중복 생성에 관한 예외 추가
1 parent b78d941 commit 7545dd0

4 files changed

Lines changed: 23 additions & 0 deletions

File tree

src/main/java/TiCatch/backend/domain/ticketing/service/TicketingService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.util.List;
3636
import java.util.Map;
3737
import java.time.LocalDateTime;
38+
import java.util.Optional;
3839

3940
import static TiCatch.backend.domain.ticketing.entity.TicketingLevel.*;
4041
import static TiCatch.backend.global.constant.TicketingConstants.*;
@@ -79,6 +80,10 @@ public void loadSectionInfo() {
7980

8081
@Transactional
8182
public Mono<TicketingResponseDto> createTicket(CreateTicketingDto createTicketingDto, User user) {
83+
ticketingRepository.findByUserAndTicketingStatusIn(user, List.of(TicketingStatus.IN_PROGRESS, TicketingStatus.WAITING))
84+
.ifPresent(t -> { throw new DuplicatedTicketException(); });
85+
86+
8287
Ticketing newTicketing = ticketingRepository.save(
8388
Ticketing.fromDtoToEntity(createTicketingDto, user, TicketingStatus.WAITING)
8489
);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package TiCatch.backend.global.exception;
2+
3+
public class DuplicatedTicketException extends RuntimeException {
4+
5+
public DuplicatedTicketException() {
6+
super(ExceptionCode.DUPLICATED_TICKET_EXCEPTION.getErrorMessage());
7+
}
8+
9+
public DuplicatedTicketException(String message) {
10+
super(message);
11+
}
12+
}

src/main/java/TiCatch/backend/global/exception/ExceptionCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public enum ExceptionCode {
1818
NOT_EXIST_TICKET_EXCEPTION(441, "티켓팅이 존재하지 않습니다."),
1919
NOT_IN_PROGRESS_TICKET_EXCEPTION(442, "진행 중인 티켓팅이 아닙니다."),
2020
NOT_EXIST_IN_PROGRESS_TICKET_EXCEPTION(443, "진행 중인 티켓팅이 없습니다."),
21+
DUPLICATED_TICKET_EXCEPTION(444, "티켓팅을 중복해서 생성할 수 없습니다."),
2122

2223
// RESERVATION
2324
ALREADY_RESERVED_EXCEPTION(450, "이미 선점된 좌석입니다."),

src/main/java/TiCatch/backend/global/exception/ExceptionController.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,9 @@ public ResponseResult JsonProcessException(JsonProcessException err) {
9191
public ResponseResult NotExistInProgressTicketException(NotExistInProgressTicketException err) {
9292
return ResponseResult.exceptionResponse(ExceptionCode.NOT_EXIST_IN_PROGRESS_TICKET_EXCEPTION, err.getMessage());
9393
}
94+
95+
@ExceptionHandler(DuplicatedTicketException.class)
96+
public ResponseResult DuplicatedTicketException(DuplicatedTicketException err) {
97+
return ResponseResult.exceptionResponse(ExceptionCode.DUPLICATED_TICKET_EXCEPTION, err.getMessage());
98+
}
9499
}

0 commit comments

Comments
 (0)