-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[feat#11] 공연 좌석 정보 조회, 공연 좌석 예약 (동시성 해결 X) #15
Conversation
이메일 등록 후 중복, 타입 일치하지 않은 경우 모두 확인 완료
피드백을 바탕으로 크게 다음과 같이 수정하였습니다. 1. `@Vaildated` 의존성 라이브러리를 추가하여 유효성 검증하도록 수정하면서 관련 메소드 삭제, UserDto에 `@Email` 어노테이션 추가 2. `GlobalExceptionHandler`에서 ~Exception 이라는 사용자 정의 예외를 받아서 처리되도록 수정 3. 예외 혹은 성공 return 시 postman에서 Status 부분이 모두 200 OK로 지정되는 문제가 있어서 각각 ResponseEntity로 return하도록 수정하였음...
빠른 피드백 감사합니다 !!!!! 1. `UserService` 불필요한 if-else문 삭제 2. `UserController` 불필요한 null 확인 처리 삭제 3. /test 테스트 코드를 기능 별로 메소드를 생성하여 테스트하도록 수정(UserServiceTest의 타입오류로 인한 테스트는 추후에 수정 필요해 보임..)
[feat:#9] 이메일 등록, 검증
1. 날짜로 공연 정보를 조회하는 코드 2. 날짜&이름으로 공연 정보를 조회하는 코드
피드백을 바탕으로 다음과 같이 수정하였습니다. 1. Controller에서 검사하던 내용을 -> Service 계층으로 옮김 2. PerformanceResponse를 추가하면서 관련 코드 수정 3. PerformanceService 계층 유닛테스트 추가(수정 필요) --- [질문] `PerformanceServiceTest2.java` 에서 //@todo 주석으로 적어두었지만... 테스트 결과가 성공해야하는데 실패하는 이상한 문제가 있습니다 ........ 뭐가 문제인지 정확히 모르겠지만 given().willReturn()과 관련이 있는걸까요?! 성공해야하는데 NotFoundDataException이 발생한다고 합니다. (Service 에서 getListPerformance에서 if문에 해당되어..)
[feat:#10] 공연 정보 조회 코드 구현
1. 공연 좌석 정보를 조회하는 코드 구현 2. 공연 좌석을 예약하는 코드 구현 2-1. 같은 좌석에 여러 명이 예약되는 문제가 있음. (해결하지 못함)
ticket/src/test/java/comento/backend/ticket/service/MockSeatServiceTest.java
Outdated
Show resolved
Hide resolved
ticket/src/test/java/comento/backend/ticket/service/MockSeatServiceTest.java
Show resolved
Hide resolved
ticket/src/main/java/comento/backend/ticket/service/BookingService.java
Outdated
Show resolved
Hide resolved
ticket/src/main/java/comento/backend/ticket/service/BookingService.java
Outdated
Show resolved
Hide resolved
ticket/src/main/java/comento/backend/ticket/service/BookingService.java
Outdated
Show resolved
Hide resolved
@hyejungg 혜정님 3번질문을 이제 확인했습니다. Q1. Mock 객체를 이용하여 유닛테스트를 진행하려고 하는데, 성공해야 하는 테스트 코드에도 NotFoundDataException을 발생시킵니다.Q2. MockSeatServiceTest의 경우, list.size()값이 0이지만, 실제로 테스트를 돌려보면 제대로 동작합니다 ........Q3. BookingService에서 saveBookging 메소드로 예약 여부를 저장합니다. 이런 흐름이 맞는지 .... 잘 모르겠습니다.3번 질문을 이제 확인했네요, saveBooking메서드 내부에서 이루어지는 절차가 맞는지에 대한 질문 일까요? 정확하게 질문을 파악하지 못해서 메서드 내부에서 이루어지는 절차에 대해서 답변 드릴게요. 1.좌석을 예약처리한다. 일단 절차로는 문제가 없습니다. 다만 아래에서 설명드린것처럼 트랜잭션으로 묶어야합니다. 추가적으로 Redis를 활용해서 동시성 문제를 해결한다면 Redis를 통해 distributed lock을 획득해오고 lock을 이미 다른 프로세스에서 점유하고 있는지 확인해서 다른 프로세스가 lock을 가지고 있다면 좌석예약을 진행하지 못하게 막는로직이 추가될필요가 있을것 같구요. |
1. 모든 서비스 계층에서 받는 매개변수는 final 변수로 수정하였음 - 서비스 계층에서 가져오는 해당 값은 DB에 접근하기 위함으로 사용되는 것이니까 변경할 이유는 없다고 생각되고, 기존 코드 중에서도 변경되는 부분이 없음. - final로 선언하여 변경 불가 하도록 상수화 2. 나의 공연 좌석 예약 정보를 조회하는 코드 추가 3. 예약 성공/실패 여부 저장 코드 추가 - 예약 성공 시에는 저장되지만, 실패 시 저장되지 않는 문제가 있음. (해결해야 함)
ticket/src/main/java/comento/backend/ticket/service/SeatService.java
Outdated
Show resolved
Hide resolved
ticket/src/main/java/comento/backend/ticket/service/SeatService.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
큰 문제는 없지만 주의해야할 부분에 대한 추가 코멘트 남겼습니다. 반영하셔도 좋고 참고만하고 일단 merge하셔도 좋습니다. 고생하셨습니다
진행상황보고
해결해야 할 문제
BookingHistory
를 완성시켜야 합니다.질문
MockSeatServiceTest
의 경우, list.size()값이 0이지만, 실제로 테스트를 돌려보면 제대로 동작합니다 ........BookingService
에서 saveBookging 메소드로 예약 여부를 저장합니다. 이런 흐름이 맞는지 .... 잘 모르겠습니다.devlop 브랜치를 pull 받은 후에 push 했더니 이전 커밋들도 함께 올라가게 되었습니다 ... 죄송합니다.