Wecode - Project 3 (부트캠프)/Project 3 과정

Project 3- 우리 웹사이트의 '주문/결제 페이지' flow

JBS 12 2023. 10. 11. 13:21
주문 결제 
2차 오설록 코드 참고 

 

[erd 테이블- 간략 설명]

order-  상품 없고

order detail - 상품 관련해서 

 

[흐름]

cart --> order -> order detail -> 'cart 에서 갯수만큼 삭제' 

 

[결제 후 'cart 에서 갯수만큼 삭제'] 

로직: order_details에서 order_id, product_id가 일치하는 것을 가져와서 장바구니에서 삭제 --> 이건 장바구니와 관련 없는 로직 

 

설명 : 프론트에서 cart 후에 '상품 정보 + 주문 상세내역' 주는 거 백이 db에 저장 

저장한 갯수만큼 카트에서 삭제 

 

카트 정보를 몰라도 되는 게 

- order한 만큼 삭제해줘 요청만 

- 카트에서 삭제 (조건부로) 

 

 

[경로] 프론트에서 global로 하겠다고 해서, 

장바구니 -> 결제 

상품 상세 -> 결제 

메인-> 결제 

목록 -> 결제 

(백엔드는 일단 '장바구니 -> 결제'만 신경쓰기)


order table vs. order detail table

 

order table-> erd diagram의 정보들은 (user /배송/ 가격/ 결제 수단/ 생성 날짜)

 

아래의 오설록 주문 페이지와 같이, 

일단 product 정보를 제외한 주문/결제 정보들을 받는 것 

user id는 우리가 늘 갖고 있을 것이다. 
order table, order detail table 따로 빼는 이유는, 
만약에 안 빼면,
한 번의 주문에 여러 상품들이 담길 수 있으니까, 
order table 에 같은 주문 번호로 product1,2,3,4 쌓이니까, 복잡해지니까 

order detail table로 따로 빼서, 
- 주문번호 199 / product_id 1 / quantity 2 
- 주문번호 199 / product_id 3 / quantity 2 
- 주문번호 199 / product_id 4 / quantity 2 
이렇게 쌓이도록 

 

[구현 순서]

1. order table 에서 먼저 시작 (product 관련 정보 없이, 회원정보/배송유형/ 결제수단 정보만 받는 거)

프론트도 받는 거니까  app.post 

   : user id 는 늘 갖고 다닐꺼니까 받을 필요 없고, 

프론트에서 넘어오는

'주문정보(결제수단, 날짜, 배송유형: '직접수령, 방문수령', 배송상태, 가격), product id, 수량'으로 order 테이블 저장 

 

2. order detail에 order id로 연동해서 '수량, product id' 저장 

3. 장바구니에서 삭제 : order detail 에서 order_id, product_id 일치하는 거 골라서 삭제 

4. transaction code 추가 (롤백 되게)

 

 

동시다발적으로 실행 됨 

1. 정보 받아와서 order에 저장  (insert into)

2.  order detail에 저장

- 저장된 order id로 가져와서, (연동을 어떻게 할 것인가)

저장되는 값의 형태:

'order id 1, product id 1, quantity1'

'order id 2, product id 2, quantity2'

이렇게 하나씩 입력 (한줄씩 추가) --> 한줄씩 데이터 들어감 

 

우선순위
(수) 
- sql notion (terminal로 치면서- > 현업에서 query builder로 해서 쓸 일 없어서 내가 친 코드 이해하기 어렵다고 해서) 
- 과제1, 과제 2-1 까지
- 초기화 세팅 올라오면 어떻게 된 건지 공부 (초기화 세팅만 따로 project repository)

(목) 
- layered 
- 주문 결제 공부 

(금) 
- 주문 결제 api 완료 
- aws 
- 위치 기반 공부 병행 

(월) 
- 2차 프로젝트로 상세페이지 혼자 짜보기 


(빨리 끝내고) 통신 기다리며 
- 2차 프로젝트로 메인페이지 혼자 

 

 

begin - commit 사이에 

로직이 2개 있더라도

두번째 로직이 안 되면, 

첫번째 로직이 실행 안 되는 거 (아무것도 실행이 안 되는 거 ) 

--> 그래서 보통 은행 거래에서 많이 쓰임

 

그래서 주문/결제에서도 필요하고, 

장바구니에서 차감되는 것도 필요한가? --> 준우님 

https://pm-developer-justdoit.tistory.com/127

 

Project 2- 3일차: Database 세션 심화 [Indexing, Transaction, ACID] **

filtering/ordering/pagination/searching : database를 찾는거고, 실시간으로 하는 거고, index/searching은 검색의 효율화를 위한 설정이 그런거고, 미리 동적으로 걸어주는 게 Index, transaction 찾는게 다름. 1. Indexin

pm-developer-justdoit.tistory.com