본문 바로가기

트러블슈팅

3차 - 장바구니 검증 기능 구현

*) 장바구니에서 결제 버튼을 눌렀을 때, 해당 좌석에 예매되어 있는지 검증 후, 예매가 되어있다면 이미 예매된 좌석이 있다는 경고창을 띄운 후 해당 장바구니 내역을 삭제하고, 예매가 되어있지 않은 경우에는 결제 페이지로 이동시켜주는 기능.

 

*) 기존에는 장바구니 좌석 테이블에 예약여부 컬럼을 추가한 후, 좌석 예매 mapper 실행 시, 좌석 정보를 0 -> 1로 업데이트 하는 동시에, 장바구니 좌석 테이블의 예약여부도 1로 같이 업데이트하는 방식을 사용했으나,

장바구니를 등록하지 않고 바로 결제하는 경우에는 장바구니 번호를 받아올 수 없기 때문에 새로운 방법을 설정했다.

 

[html]

-> 장바구니에서 결제 시, 해당 장바구니 번호를 가지고 함수를 실행시킨다.

 

[js]

-> ajax를 활용하여 컨트롤러 호출 (컨트롤러 검증 후, 예매여부에 따라 후속 처리를 해준다.)

 

[Controller]

1. 장바구니 좌석 정보를 가져옴(jsp에서 전송해준 cart_idx를 활용하여)

2. 공연 카테고리에 따라 불러오는 공연장 규모의 테이블이 달라지는 특수성을 활용하여 카테고리를 얻어옴

3. 1번에서 가져온 장바구니 좌석 정보를 활용하여 얻어온 좌석 1건씩 카테고리에 맞게 검증하는 과정을 거친다.

4. 검증 과정에서 예매된 좌석이 발견되는 즉시 "reserved"를 반환하여 다시 ajax로 보내주고, 없으면 "available"을 반환함.

 

[mapper]

 -> 이름은 selectone이지만 cart_idx 1건씩 얻어오기 때문에 최대 4좌석까지 조회된다. (따라서 Controller에서 List로 받음)

-> 얻어온 cart_idx를 활용하여 카테고리를 찾는 과정

-> 좌석정보에서 행과 열 정보를 잘라내서 얻어온 변수들을 활용하여 해당 좌석이 예매되었는지 검증하는 과정

List로 받아왔지만 1건씩 조회를 해야하기 때문에 Limit 1을 사용한다.