4. 주문 관리
1. 주문 목록
🎯 주문 관리 기능을 간단히 다뤄보기
실제 쇼핑몰을 만들 때는 여러가지 상태 정보가 필요하기 때문에 주문 관리가 제일 복잡(특히 백엔드)
송장 번호
취소시 환불
부분 취소
OrderListPage 구현
OrderListPage 구현주문 목록을 확인하는 페이지 조금 양이 많은 사용자 또는 카테고리 목록
export default function OrderListPage() {
const { orders, loading, error } = useFetchOrders();
// loading, error 처리
return (
<Container>
<h2>Orders</h2>
<table>
<thead>
<tr>
<th>주문일</th>
<th>주문자</th>
<th>상품</th>
<th>총 가격</th>
<th>상태</th>
<th>행동</th>
</tr>
</thead>
<tbody>
{orders.map((order) => (
<tr key={order.id}>
<td>{order.orderedAt}</td>
<td>{order.orderer.name}</td>
<td>{order.title}</td>
<td>
{numberFormat(order.totalPrice)}
원
</td>
<td>{STATUS_MESSAGES[order.status]}</td>
<td>
<Link to={`/orders/${order.id}`}>
자세히
</Link>
<Link to={`/orders/${order.id}/edit`}>
상태 변경
</Link>
</td>
</tr>
))}
</tbody>
</table>
</Container>
);
}STATUS_MESSAGES : 언어를 서버에서 변경해 줄 수도 있지만 다국어 지원 등이 불편하기 때문에 이렇게 처리
다국어 지원을 위한 라이브러리도 존재
contants.ts 파일에서 상수 관리
contants.ts 파일에서 상수 관리주문 상태를 어떻게 표시할지 상수만 모은 contants.ts 파일에서 정의
배송 준비 : 택배를 보내려고 포장하는 상태
배송 중 : 택배 기사에게 전달 후
취소 : 관리자가 실수했을 때 처리
어떤 일이 있었는지 로그가 필요
useFetchOrders hook 생성
useFetchOrders hook 생성
2. 주문 상세
🎯 주문 상세 정보 확인
OrderDetailPage 구현
STATUS_MESSAGES 사용
<Link>로 처리된상태 변경은 버튼으로 구현해도 좋음상태 변경과주문 목록버튼 구현하기상태에는 송장 번호가 같이 나오면 좋음(배송 추적 가능)
useFetchOrder hook 생성
useFetchOrder hook 생성기존과 비슷하게 작성
orderId를 인자로 받음
3. 주문 상태 변경
🎯 단순하게 주문 상태만 변경해보기
👩🏻💼 고객 지원 업무(CS)를 위해서는 주문을 자세히 다룰 수 있는 기능이 필요
주소를 잘못 입력했을 경우
이사 간 주소로 변경할 경우
배송 시작했을 경우 송장 번호 추가 (배송 시작 버튼을 누르면 송장 번호를 입력)
이후 배송 중 상태로 변경
필요에 따라 B/E 개발자와 논의해 계속해서 확장해 나갈 것 ⇒ 단순 CRUD를 넘어서 비즈니스에 대한 이해가 필요한 부분
OrderEditPage 구현
OrderEditPage 구현useFetchOrder hook에 updateOrder 추가
useFetchOrder hook에 updateOrder 추가Last updated