본문 바로가기
TIL with Programmers

[TIL] 10/11 주문 기능 구현

by 보먀 2024. 10. 11.
728x90
반응형

1. 주문 기능 구현

 

1.1. 결제(주문) API - 결제하기 = 주문하기 = 주문등록 = 데이터베이스 주문 INSERT

 

items -> 결제할 도서가 담겨있는 배열

delivery -> 입력받은 주소/이름/연락처 

firstBookTitle -> 주문 목록 상세 조회 화면에서 보여줄 대표 책 제목

(구매한 책이 여러 권일 때 대표책 제목만 보여주기 위해)

Method POST
URI /orders
HTTP status code 성공 200
Request Body {
    items: [
        {
        cartItemId: 장바구니 도서 id,
        bookId: 도서 id,
        quantity: 수량
        },
        {
        cartItemId: 장바구니 도서 id,
        bookId: 도서 id,
        quantity: 수량
        },
        ...
    ],
    delivery: {
        address: "주소",
        receiver: "이름",
        contact: "010-0000-0000"
    }
    totalQuantity: 총 수량
    totalPrice: 총 금액,
    userId: 회원 id,
    firstBookTitle: 대표 도서 제목
}
Response Body  

 

 

1.2. ERD 테이블 보면서 INSERT 순서 결정하기

 

주문 API 와 관련된 테이블은 orders, delivery, orderedBook

  • orders: 주문 테이블
  • orderedBook: 주문한 책의 정보만 들어있는 테이블로, order_id 를 가지고 있음
  • delivery: 배송 정보만 가지고 있는 테이블

 

사용자가 주문을 했을 때 orders 테이블에 데이터 삽입이 일어나는데,

orders 테이블은 주문 도서(orderedBook)와 배송 정보(delivery) 를 테이블을 따로 빼서 관리하기 때문에 주문이 들어왔을 때 주문 도서와 배송 정보를 다른 테이블에 입력해줘야 한다. 

 

입력 순서도 중요한데, 입력순서는 delivery -> orders -> orderedBook 순이다.

 

orders 테이블의 deliver_id 는 delivery 테이블의 id 를 참조하기 때문에 delivery 테이블에 제일 먼저 INSERT

orderedBook 테이블의 order_id 는 orders 테이블의 id 를 참조하기 때문에 orders 테이블에 두번째로 INSERT

orderedBook 을 마지막으로 INSERT

 

 

1.3. insertedId

 

post 메서드로 request 를 보내면, results 에 이런 결과가 담겨온다.

 

여기서 insertId 필드 값은 AUTO_INCREMENT 를 걸어놨을 때 의미있는 값인데, 데이터베이스 테이블에 데이터가 삽입되었을 때 삽입된 열의 id 값을 돌려준다.

(insertId 값이 3 이란 것은 삽입한 데이터의 열이 3 이란 것)

728x90
반응형