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

Springboot 예약내역페이지!(1) 예약내역 보여주기(페이징)+ jpa+mysql inner join

디비드킴 2021. 9. 6. 13:14

이제 예약내역을 확인 할수 있게 뿌려주자

기능은 예약취소/기간별 예약조회 이렇게 두개를 만들었다

(예약취소는 구현중이다)

 

프런트 서버

html

html

js

js

최초입장시 로그인 이메일 표시해주는 함수

function getEmail()

최초 입장시 예약내역을 불러와주는 함수

getReservation()

(밑에 사진에 자세하게 나와있다)

예약 취소관련함수

function cancleReservation()

페이지다음버튼

function next()

js

스크립트로 테이블 목록들을 그린다

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

reservationService.java

사용자가 일자별 검색을 했는지 알기위해

startdate/enddate를 스프링으로 부여해준다

String startDate=(StringJSONObject.get("startDate");

String endDate=(StringJSONObject.get("endDate");

현재페이지를 가져온다

int nowPage=(intJSONObject.get("nowPage");

로그인 이메일을 가져온다

 String email=SecurityContextHolder.getContext().getAuthentication().getName();

이메일에 대한 전체 예약개수를 가져온다

int totalPage=getTotalPage(emailstartDateendDate);

조건을 검사한다

reservationEnums enums=confrimDateAndPage(nowPage,totalPage,startDate,endDate);

페이징별 필요한 내용을 가져온다

List<getClientInter>dtoArray=getClientReservationDTO(email,startDate,endDate,nowPage,totalPage,respone);

String[][] array=makeResponse(responedtoArray);

응답 해준다

respone.put("bool"true);

 

getTotalPage

reservationService.java

기간 설정/미설정을 분간한다

 if(startDate.isEmpty()&&endDate.isEmpty())

utillService.java

기간설정/미설정에 따라 던지는 쿼리문이 다르기 때문이다

reservationDao.java

confrimDateAndPage

reservationService.java

페이지 수를 검증한다

기간을 설정했다면 알맞게 설정했는지 검증한다

 

getClientReservationDto

reservationService.java

역시 기간설정에 따라 던지는 쿼리문이 달라진다

reservationDao.java

getClientInter

join문으로 쿼리에서 뽑아 낼때는 

인터페이스를 사용하면된다

https://algorithmstudy-mju.tistory.com/153

 

Spring JPA ) No converter found capable of converting from type ERROR

Spring Boot 기반 Rest Api를 작성하는 프로젝트에서 JPA를 사용하여 빠른 쿼리를 작성하는 일이 많아지면서, 다양하게 클래스를 정의하여 요청에 응답하다가 No converter found capable of converting from type..

algorithmstudy-mju.tistory.com

getClientInter.java

 

makeResponse

reservationService.java

입금상태에 따라서 달라진다

if(m.getStatus().equals("ready")){

한시간전에는 취소가 불가능하게 해준다

if(LocalDateTime.now().plusHours(limitedCancleHour).isAfter(m.getDate_and_time().toLocalDateTime())){

 

테스트

http://localhost:3030/showReservationPage.html
http://localhost:3030/showReservationPage.html

날짜검색

mysql

여기서 16일로 검색해보자

http://localhost:3030/showReservationPage.html
http://localhost:3030/showReservationPage.html

아주 잘뿌려준다!

이제 환불로 가기전

재고정리 로 가자

예를들어 2021-09-06 11:00:00까지 돈이 들어와야하는데 

입금도 안되고 취소도 안하는경우는?

이런경우는 아주 많다 

spring 스케쥴러+ spring 배치로 해결해보자!

 

+추가 가상계좌는 입금전에는 입금할 금액

입금 후에는 각가의 금액이 표시된다

입금전
입금후 

예약페이지에 안내문구를 적어놓아야겠다

http://localhost:3030/showReservationPage.html