이제 예약내역을 확인 할수 있게 뿌려주자
기능은 예약취소/기간별 예약조회 이렇게 두개를 만들었다
(예약취소는 구현중이다)
프런트 서버
html
js
최초입장시 로그인 이메일 표시해주는 함수
function getEmail()
최초 입장시 예약내역을 불러와주는 함수
getReservation()
(밑에 사진에 자세하게 나와있다)
예약 취소관련함수
function cancleReservation()
페이지다음버튼
function next()
스크립트로 테이블 목록들을 그린다
document.getElementById('header').innerHTML=("<tr id='header'><th>예약번호</th><th>예약일자</th><th>사용일자</th><th>예약자리</th><th>취소</th><th>결제상황</th><th>계좌번호/결제수단</th><th>결제기한/결제완료일</th><th>금액</th></tr>");
예약이 없다면 아무것도 표시하지 않는다
if(reservations==null||reservations.length==0)
페이징 수만큼 예약을 뿌린다
cant플래그가 있다면 disable로 뿌린다
if(reservations[i][8]=='100')
마지막페이지가 페이징 숫자로 안떨어질시
처리해 주는 로직이다
if(remainder!=0){
for(var i=2;i>=remainder;i--){
document.getElementById('body'+i).innerHTML=("");
}
}
document.getElementById('totalPage').innerHTML=(result.totalPage);
document.getElementById('nowPage').innerHTML=(result.nowPage);
return;
이로직이 필요한이유는
마지막 페이지에 1개/2개로 떨어진다면
마지막 body에 이전 페이지 예약이 나타난다
백엔드 서버
reservationService
사용자가 일자별 검색을 했는지 알기위해
startdate/enddate를 스프링으로 부여해준다
String startDate=(String) JSONObject.get("startDate");
String endDate=(String) JSONObject.get("endDate");
현재페이지를 가져온다
int nowPage=(int) JSONObject.get("nowPage");
로그인 이메일을 가져온다
String email=SecurityContextHolder.getContext().getAuthentication().getName();
이메일에 대한 전체 예약개수를 가져온다
int totalPage=getTotalPage(email, startDate, endDate);
조건을 검사한다
reservationEnums enums=confrimDateAndPage(nowPage,totalPage,startDate,endDate);
페이징별 필요한 내용을 가져온다
List<getClientInter>dtoArray=getClientReservationDTO(email,startDate,endDate,nowPage,totalPage,respone);
String[][] array=makeResponse(respone, dtoArray);
응답 해준다
respone.put("bool", true);
getTotalPage
기간 설정/미설정을 분간한다
if(startDate.isEmpty()&&endDate.isEmpty())
기간설정/미설정에 따라 던지는 쿼리문이 다르기 때문이다
confrimDateAndPage
페이지 수를 검증한다
기간을 설정했다면 알맞게 설정했는지 검증한다
getClientReservationDto
역시 기간설정에 따라 던지는 쿼리문이 달라진다
getClientInter
join문으로 쿼리에서 뽑아 낼때는
인터페이스를 사용하면된다
https://algorithmstudy-mju.tistory.com/153
makeResponse
입금상태에 따라서 달라진다
if(m.getStatus().equals("ready")){
한시간전에는 취소가 불가능하게 해준다
if(LocalDateTime.now().plusHours(limitedCancleHour).isAfter(m.getDate_and_time().toLocalDateTime())){
테스트
날짜검색
여기서 16일로 검색해보자
아주 잘뿌려준다!
이제 환불로 가기전
재고정리 로 가자
예를들어 2021-09-06 11:00:00까지 돈이 들어와야하는데
입금도 안되고 취소도 안하는경우는?
이런경우는 아주 많다
spring 스케쥴러+ spring 배치로 해결해보자!
+추가 가상계좌는 입금전에는 입금할 금액
입금 후에는 각가의 금액이 표시된다
예약페이지에 안내문구를 적어놓아야겠다
'Spring boot kim's Shop > 예약시스템' 카테고리의 다른 글
Springboot 예약시스템!(3) 일반결제+예약+예외처리+아임포트 (0) | 2021.08.28 |
---|---|
Springboot 예약시스템!(2) 가격 계산해서 전달하기! (0) | 2021.08.26 |
Springboot 예약시스템 만들기!(1) 연/월/일/요일 뿌리기! (2) | 2021.08.21 |