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

Springboot 예약시스템!(2) 가격 계산해서 전달하기!

디비드킴 2021. 8. 26. 13:47

두 가지 시나리오가 있다

 

일반 결제 시

자리 선택-> 시간선택-> 일반 결제-> 검증-> 결제 검증-> 예약 완료

가상계 좌시

자리 선택-> 시간선택-> 가상계좌-> 검증-> 계좌발급-> 임시 예약 완료-> 입금 확인-> 예약 완료

 

일단 일반 결제부터 시작해보자!

 

프런트 서버

http://localhost:3030/reservationPage

예약하기를 누르면->총가격을 서버에서 받아온다->결제-> 결제 후 서버로 전송

예약하기를 누르면 buy()가 실행된다

js

 

selectTime

js

체크되어있는 체크박스 값들을 가져온다

 

getprice

js

가격을 가져오는데

비동기가 아닌 동기로 가져와야 한다!

값이 0원이라면 message를 표시해주자

 

iamport

js

 

결제 로직 후 doInsert(rsp.imp_uid)로 검증을 하러 간다

 

doInsert

js

json으로 검증에 필요한 정보를 던져주고

결제 방법이 가상계좌인지 판단한다

if(result.expiredDate!=null)

 

백엔드 서버

1. 총 결제금액 서비스

2. 결제 검증 서비스

3. 예약 서비스를 만들자

 

총 결제금액 서비스

예약 외에도 쓰일 서비스이다

(ex 빵/음료/기타 결제 시)

 

만들기 전 준비

mysql

상품 테이블을 만들어주고 정보를 넣어준다

(예약석은 count가 무의미하므로 임의로 100을 넣었다)

 

restcontroller

restcontroller.java

dto를 이용해 json을 바로 받는다

 

dao

productDao.java

상품명을 이용해 가격을 찾는다

 

priceService

priceService.java

상품정보를 찾는다

productDto productDto=selectProduct(getPriceDto.getProductName());

응답을 위해 json객체 생성

JSONObject jsonObject=new JSONObject();

검증을 한다

priceEnums priceEnums=confrimProudct(productDtogetPriceDto.getCount().size());

 

confrimProduct

priceService.java

요청 수량 검사

if(count<=0)

존재하는 상품인지 검사

else if(productDto==null)

재고 검사

}else if(productDto.getCount()<=0)

상황에 따른 이넘적용

priceEnums.valueOf(selectEnum).setMessege(messege);

priceEnums.valueOf(selectEnum).setPrice(enumPrice);

 

 

테스트

http://localhost:3030/reservationPage

500원석 한 시간=500원

http://localhost:3030/reservationPage

1000원석 한 시간=1000원

http://localhost:3030/reservationPage

1500원석 두 시간=3000원

http://localhost:3030/reservationPage

2000원석 세 시간=6000원

 

실패 테스트

 

선택 자리 0

http://localhost:3030/reservationPage

존재하지 않는 상품 전송

a-4->a-5

http://localhost:3030/reservationPage

성공!

 

재고 검사는 

나중에 커피/빵 제품에서 검사해보고

예약은 시간으로 검사하기 때문에 

예약 서비스에서 구현해놓자!

 

이제 예약 서비스로 가보자