실제로 동작하는 화면을 캡쳐해서 넣고싶었지만 서버 대여가 만료되어서 당장 sql문도 백업안해두어서 사진을 첨부할수가 없습니다. 미안합니다 ㅠㅠ 크흡... 꼭 로컬 환경에서도 돌릴수 있게 백업을 잘해둡시다...
ex
정원이 5명인 모임의 티켓이 4장 팔렸고 마지막 1장을 누군가 구매중이라면 새로운 구매가 일어나지 못하고"다른 사용자가 결제 진행중입니다."
라는 문구가 나오게 해야함. 영화 티켓 예매할때 해당 좌석이 선점되는 것처럼 구현하고 싶었다.
구매완료
라고 문구가 바뀌고 비활성화✅ 구매 과정을 ORDER
테이블에 기록하기.
주문번호에 주문자
, 주문한 모임
을 담기.
티켓번호에 주문자
, 주문한 모임
을 담기.
주문자
= 회원 번호,주문한 모임
= 모임번호
주문번호 | 주문자 회원 번호 | 모임 번호 | 주문 일자 | 주문 상태 | 주문 가격 | 대금 수령 상태 |
---|---|---|---|---|---|---|
yymmdd/moimNum(8자리)/userIdNum(8자리) | userIdNum | moimNum | yymmdd:hhmmss | "결제 진행중", "결제 완료", "결제 취소" | orderPrice | "수령", "미수령" |
정원
- 참가한 멤버
수 비교 하기결제 진행중
인 주문 목록의 수를 불러와서 남은 정원수와 비교하기구매 버튼을 누르면 orderDo 주문객체가 생성된다. [주문 번호]는 주문 날짜
+ 구매하려는 모임번호
+ 구매자의 회원 번호
이다.
주문상태는 결제 진행중
이다.
order 테이블에서 [주문번호] 를 통해 구매하려는 모임번호
+ 사용자 회원 번호
조합이 일치하는 행이 있는지 검색해서 중복검사를 진행한다. 중복이 있다면 주문상태가 결제 취소
로 바뀌고 종료된다.
중복이 없다면 orderDo를 order테이블에 저장한다.
모달로 아임포트 결제 api가 실행.
결제 취소
이면 order 테이블에서 해당 행을 삭제한다.결제 취소
로 바뀐다.결제 취소
로 바뀜.결제 완료
로 바뀐다.누르시면 해당 코드 깃허브 페이지로 이동합니다.
데이터 클래스
OrderDo
TicketDo
ReceiptDo
서비스 클래스
OrderService
TicketService
ReceiptService
컨트롤러 클래스
TicketController
BuyPageController
매퍼 인터페이스 클래스
OrderMapper.java / interface
TicketMapper.java / interface
ReceiptMapper.java / interface
매퍼 마이바티스 파일
OrderMapper.xml
TicketMapper.xml
ReceiptMapper.xml
오늘 글은 정말 쓰면서 아쉬웠습니다. 구현한 이미지를 꼭 캡쳐해서 넣고싶었는데... 설명도 좀 아쉬웠던것 같네요
구매 기능을 db에 상태를 등록하고 조회를 통해 구현했지만 개인적으로는 좋은 방법 같진 않습니다. 자잘한 db연결이 너무 많아서 db에 부담도 많고 접속이 많을 수록 돈을 많이 낸다고 합니다. ! db 연결을 최소화해서 해당 기능들을 구현할 수 있도록 더 고민을 해봐야할거같네요