메인 페이지
> 상단 header (고정) / GNB (+ 판매자 전환 페이지)
영역 이름 : header
GNB: 옆으로 할 수 있고, 상단에 할 수도 있고
> big banner : 3개*1줄 / 프리미엄 vip 광고 (market_id 로 데이터 받고, 클릭 시, market_list 페이지 연결)
> band: title + 더보기 버튼 + 판매자 전환 버튼 (이중장치) / 5개*8줄 or 5*10줄
- 밴드: 한 밴드에 이미지 5개씩, 옆으로 3번 넘긴다 (약? 총 15개) -> 백엔드가 준 전체 목록 데이터로 프론트가 알아서 잘라서 넣는 거
(밴드 카테고리 title : 마켓 카테고리, 상품 카테고리 // data table는 백엔드가 정해서 주면 됨)
프로모션 : rating 으로 하면 됨
메인/ 목록/ 상세페이지 모두 -> '장바구니 추가/ 바로구매' 버튼
-' 더보기' 눌러서 이동 -> 전체 목록 list page : pagination (query string으로 기존 api 이용해서 조건 달아서/ offset limit 활용)
- 밴드 7or 10개
> footer (대표이사 : 000 , 고객센터 전화번호 등)
- 스크롤 기능 (big banner 1개 + n개의 band )
GNB
: global navigation bar (최상단 카테고리 바)
> 장바구니 | 로그인 | 판매자 admin (이후 추가 가능)
> header
- 홈 | 카테고리 | 마이페이지
(카테고리에 마우스 오버하면 , 아래로 layer 뜰 것 -->3*3 2*5 or 5*2)
>> 카테고리 9개
ex. 카테고리 > 식품 -> list로 랜딩 (list ? category=food)
- 푸드
- 디지털
- 리빙
- 패션
- 뷰티
- 스포츠
- 유아
- 공예
- 펫
리스트 페이지
진입경로
1) GNB -> 카테고리
2) 메인 페이지 -> 밴드 '더보기'
> header
> GNB
> background image (대표 이미지) ex. 유아 카테고리면, 아래는 유아 list, background image는 유아 대표 이미지
- 카테고리에서 나오는 list page일수도 있고
- 마켓에서 나오는 list page 일 수도 있음
2) 상품 목록 (하나의 data는 메인페이지와 공통 -> product image, 제품명 + badge, 원가/할인가, rating, '장바구니 추가/ 바로구매' 버튼 )
rating 을 상품 목록에서 넣는 이유 : 정렬- 평점순 을 위해
-> 접근 방식:
3) pagination
> footer
상세페이지
> header
> product
- product main image(대표이미지 1장)
- product_title, price(원가/할인가/할인율/ 최종가격) , 상품 별점, 장바구니 추가/ 바로구매 버튼, '장바구니 추가/ 바로구매' 버튼
- 탭: '설명' | 리뷰 |
> '설명' : product detail image (상세설명에 있는 이미지들) -> 멀티 업로드 + 지도 api
> '리뷰' : 이메일, 내용(Create, Read), 이미지, 리뷰 별점, 날짜 (timestamp_ createdAt/ updatedAt )
pagination (X)
(과정:
네이버 기사 댓글처럼 이메일 보이는데 모자이크할까?
user_id로 하되, 이메일 @ 앞단으로 자를까? or 이름 3자에서 하나를 자르는)
할인가는 차감되는 금액
최종가는 판매가
(추가) 프론트 - Axios
(추가) 제품 좋아요
(추가) 리뷰 Update, Delete
[배송료]
일반회원 -> 배송료 0원
프리미엄 구독은 배송료 0원 -> 조건 걸어서 해도 되니
* 백엔드: 주소 테이블에 user_name 추가, product table 내에 reveiw
할인가 계산 -> query 한줄로 됨
재고수량은 백엔드가 수량 넘겨주면,
프론트가 차감해서 재고수량 alert창에 띄어줌.
회원가입
회원가입 누르면 구매자 페이지 먼저 나옴
1차 회원가입: 구매자 회원가입
2차 회원가입: 판매자 회원가입 (판매자 전환 페이지; 구매자 페이지에서 연결)
[user 구매자 회원가입]
- (필수) 유저 이름, 이메일, 비밀번호, 패스워드 확인, 주소1 (도로명 주소, 상세주소,우편번호), 전화번호1
- '가입하기' 버튼
유저 이름 : 배송 때문에
이미지 X
마케팅수신정보/ 이용동의약관 / '로봇이 아닙니다' -> X
[seller 판매자 가입]
마켓명
마켓 주소 (주소2) -> 단일 이미지 (멀티 아님)
프로필 이미지
마켓 번호 (전화번호2)
셀러 카테고리
백엔드 : 셀러 카테고리 삭제
로그인
소셜로그인
(필수) 카카오로그인
(선택) 구글, 페이스북, 네이버 등
> 필수값
- 이메일
- 패스워드
(아이디 찾기, 비밀번호 찾기, 아이디 저장 X)
> 로그인 버튼
> 카카오 소셜 로그인 버튼
장바구니
백엔드는 하나의 api로 (create, delete)
수량 변경과 같은 update도
-> cart 하나를 삭제 후 새로 create로
장바구니 경로는 global 로 하니까 백엔드가 api 하나 주면 알아서 하는 거로.
1) 메인페이지 - 장바구니
2) 제품목록 - 장바구니
3) 상세페이지 - 장바구니
4) header- 장바구니
> 마켓별로 상품 묶어서 (market id 기준으로)
백: 마켓별로 묶어서 데이터 전달
백엔드가 프론트에 전달해야 하는 data:
프: 마켓별로 선택 체크 박스, 전체선택/ 삭제 , 장바구니 페이지 떠날 때 fetch
> 장바구니-상품상세페이지 연결 X
> 하나의 라인: 상품명, 가격 정보(원가/최종가격), 수량, 삭제 버튼
total price 를 할 수가 없음. 데이터가 프론트에서만 있고, 백엔드는 아직 가격 데이터가 없으니
--> 유저 입장: 배송비를 여러 번 하게 됨.
[예상되는 그림]
네이버 쇼핑 들어가면
- A 스마트스토어
- B 스마트 스토어
장바구니 목록 있는 거
ex. 예시
제품 하나하나 하면 배송비 한번 나가는데,
마켓별로 묶으면 배송비 여러번 나가니, 이익 창출 부분에서, 여러 번 배송비
그게 싫으면 프리미엄 구독해라.
카테고리 별로 나누는게 아니니
회의 빠르게 하기 위해, 필요한 데이터 위주로.
주문/결제
1) [추가] 결제수단/ 배송유형 선택 (위, 아래 2개의 세션)
- 결제수단: 포인트 차감 or 외부 모듈
- 배송유형: 배송 전, 배송 중, 배송 완료
주문에서 배송수단 선택하는 거로 (배송비 반영 되도록)
[주문 페이지] 구조
- 배송 유형 : 택배 배송 / 방문 수령 선택 (위치는 고려 안 하기로)
- 유저 정보
- 제품 정보
- 결제 수단
2) 주문 페이지
- 유저 정보 (주소 등등) 받아서,
- 상품 정보
[필수] 주문 페이지에서 버튼 -> '주문완료' 페이지로 넘어가고 결제완료 -> 주문내역 페이지 확인 가능하게 백엔드에게 정보 주기
3) 결제 완료 페이지
4) 결제 내역
마이페이지
[user 마이페이지] user_sub
원페이지
- user 정보 가져오고
[user 정보 수정] X
--> 수정할 수 있는 데이터가 '이메일/ 주소/ 휴대번호'인데 못하게 간단하게
> 구독 신청, 취소 (user_sub 테이블)
- 구독여부 (0,1)
- 구독 날짜 created_at
> 구매내역:
- 주문번호(id), 상품, 가격, 배송유형, 날짜(createdAt),
- 구매내역 pagination (pagination <-> scroll )
주문번호가 화면에 보이는 게 아니라,
database 상의 pk id 값 -> 고유 값이니까 이걸 그대로 가져다 쓰는 거로
> 리뷰 작성 페이지
구매 내역에 리뷰 작성 버튼 만들겠다
(구매 여부를 알기 위해서)
orders에서 주문 내역을 받아와서 order id 를 받아서, order detail에 있는 product 도 받아서 / order에 product id 존재, userid 일치 시
프론트에서 '이 제품에 리뷰를 넣어주세요'만 줄 것.
로그인 - user order 내역 나온다 (테이블 조인해서 order detail까지 나오니 -> prdouct id만 가져와서)
어떤 제품에 리뷰를 넣을 지 알아야 하니
[판매자 Admin]페이지
원페이지
> 구독 신청/취소(seller_sub 테이블) -- > 상단 고정 (스크롤x)
- 구독여부 (0,1)
- 구독 날짜 created_at
> 제품 등록 create : 제품 이름, 가격, 할인율 (DB저장할 데이터), main image(단일, 미리보기) , detail image (다중, 미리보기)
> 판매자 정보 전달
프론트가 백엔드에게 요청하지 않고,
알아서 이전에 받은 제품 목록 read
> 제품 삭제 delete (셀러 삭제:탈퇴없이) : 누르면, 백엔드가 params로 받아서 (전체 삭제 X, 개별 삭제) /
프론트가 백엔드에게 요청하지 않고,
알아서 이전에 받은 목록 api 쓴다.
> (추가) 판매내역
제품 테이블 -> product_information (상세설명) 빼기
백엔드: 할인 계산하는 쿼리문 필요없음
(추가) 검색 기능
<변경된 점>
메인페이지: 배너 위에 판매자 전환 버튼 따라다니게 추가
메인페이지: big banner (프리미엄 vip 광고) --> 구독한 premium seller
배송: 택배/ 방문수령 (거점X)
'Wecode - Project 3 (부트캠프) > Project 3 과정' 카테고리의 다른 글
Project 3 - 주문 / 결제 flow (0) | 2023.10.11 |
---|---|
Project 3: sprint 1주- 3일차 - standing meeting (0) | 2023.10.11 |
Project 3: sprint 1주-1일차- erd modeling - 관계도 (0) | 2023.10.10 |
Project 3: sprint 1주- 2일차- standing meeting 및 erd modeling (0) | 2023.10.10 |
Project3: sprint 1주-1일차 - user flow (0) | 2023.10.09 |