Spring boot kim's cafe/예약시스템

Springboot 당일 예약시스템 만들기!(4) with LocalDateTime

디비드킴 2021. 7. 12. 18:41

+추가 20210821

당일이 아닌 더 업그레이드 된 

예약시스템은 여기있습니다

https://cordingmonster.tistory.com/138

 

Springboot 예약시스템 만들기!(1) 연/월/일/요일 뿌리기!

이전에 kimscafe에서는 '당일' 예약만 가능한 시스템이었다 이번엔 언제든 가능한 예약시스템을 사용해보자! 시나리오 자리 선택->년/월/날짜 표시-> 날짜 선택-> 시간표시-> 예약 프런트 서버 html

cordingmonster.tistory.com

 

마치기 전에
큰 버그 두 개가 있다
1.oauth 로그인 후 페이지 유실
2. 예약시간 불러오기 시스템에서 이전날 예약시간에 영향을 받음

2번을 고쳐보자!
자 현재 시스템은
서버에서 '시간'으로만
비교를 해서 예약 가능 시간을
보내준다

예를 들어
7/11일 6시 예약이 있어도
7/12일 이 되면 6시 자리는 예약이 가능해야 한다
하지만 현재는 시간으로만 비교해서 날짜에 상관없이
시간만 있으면 예약이 불가능했다

그래서 수정했다
service

reservationservice.java

LocalDateTime localDateTime=LocalDateTime.now().withHour(i).withMinute(0).withSecond(0).withNano(0);
if(utilservice.compareDate(alreadyTimes.get(ii).getReservationdatetime(), localDateTime))
두 부분이 크게 바뀐 건데

당일에 날짜에 영업시간을 만들어준다
LocalDateTime localDateTime=LocalDateTime.now().withHour(i).withMinute(0).withSecond(0).withNano(0);
당일 날짜에
LocalDateTime.now()
영업시간을 지정해주고
withHour(i)
분/초/나노는 0으로 세팅해준다
withMinute/withSecond/withNano
이미 존재하는 예약을 당일 예약 시간들과 비교해준다
if(utilservice.compareDate(alreadyTimes.get(ii).getReservationdatetime(), localDateTime))

utilservice.compareDate

utillservice.java

LocalDateTime
진짜 편리한 기능을 많이 가지고 있다

오버 로딩 기능을 사용해서
같은 함수를 하나 더 만들었다

여기서 끝이 아니다
insert전 confrim 하는 함수가 있었다
역시 바꿔줘야 한다

reservationservice.java

바로 이 함수였는데
시간으로만 비교하던 함수를
if(r.getRequesthour()==requestTime.get(i)){
날짜로 역시 바꿔준다
LocalDateTime localDateTime=LocalDateTime.now().withHour(i).withMinute(0).withSecond(0).withNano(0);
if(utilservice.compareDate(r.getReservationdatetime(), localDateTime)){
그냥 같은 작업 두 번이다!
(자리를 선택하고 고민하다 시간을 선택했는데
그사이에 누군가 시간을 예약했을 수 있다
그래서 한 번 더 해주는 거다)

1번은 나중에 잡아보자!

결과
이전 날짜 예약을 db에 넣어보자

21/22/23이 있어도
다른 날이기 때문에
영향을 받지 않는다

예약 시도
20/21/23

당일 날짜 예약이기 때문에
예약 가능 시간에서 제외됐다!

끝!

 

 

+추가 20210821

당일이 아닌 더 업그레이드 된 

예약시스템은 여기있습니다

https://cordingmonster.tistory.com/138

 

Springboot 예약시스템 만들기!(1) 연/월/일/요일 뿌리기!

이전에 kimscafe에서는 '당일' 예약만 가능한 시스템이었다 이번엔 언제든 가능한 예약시스템을 사용해보자! 시나리오 자리 선택->년/월/날짜 표시-> 날짜 선택-> 시간표시-> 예약 프런트 서버 html

cordingmonster.tistory.com