요구사항 상세 확인서 - showMeTheMoneyPrac/BE_Repo GitHub Wiki
Notion Link
기능 목록
- 회원 기능
- 회원가입
- 로그인
- 회원 정보 조회
- 회원 정보 수정
- 회원 탈퇴
- 포인트 충전
- 상품 기능
- 상품 조회
- 주문 기능
- 장바구니 담기
- 상품 주문
- 환불
- 리뷰 기능
- 리뷰 조회
- 리뷰 작성
- 리뷰 삭제
- 리뷰 수정
회원 기능
-
회원 가입
- 회원 가입 시, 필요한 데이터는 email,nickname,password,passwordCheck,address이다.
- 필요한 데이터를 충족했을 시, (”회원가입을 축하합니다")라는 메시지와 함께 email,nickname에 대한 데이터 제공한다.
- email은 이메일 정규 표현식을 갖춰야하며 기존 이메일과 동일할 시 (”중복된 이메일이 존재합니다”)라는 메시지와 함께 회원가입 실패로 만든다.
- nickname은 기존 nickname과 동일할 시 (”중복된 닉네임이 존재합니다”)라는 메시지와 함께 회원가입 실패로 만든다.
- password는 passwordCheck와 일치하지 않을 시 (”비밀번호와 비밀번호 확인이 일치하지 않습니다")라는 메시지와 함께 회원가입 실패로 만든다.
-
로그인
- 로그인 시, 필요한 데이터는 email,password이다.
- 로그인 성공 시, email,nickname에 대한 데이터 제공한다.
- email이 존재하지 않을 시, (”이메일을 등록한 회원이 존재하지 않습니다")라는 메시지와 함께 로그인 실패로 만든다.
- email은 존재하지만 해당하는 email의 password가 일치하지 않을 시, (”비밀번호가 정확하지 않습니다")라는 메시지와 함께 로그인 실패로 만든다.
-
회원 정보 조회
- 회원 정보 조회 시, 필요한 식별자 데이터는 nickname이다.
- 회원 정보 조회 성공 시, nickname,address,cash에 대한 데이터 제공한다.
-
회원 정보 수정(닉네임, 주소)
-
닉네임 변경 시, 필요한 데이터는 nickname과 바꾸고자하는 afterNickname이다.
-
닉네임 변경 성공 시, 바뀐 afterNickname 데이터를 제공한다.
-
afterNickname이 기존 회원의 nickname과 동일하다면 (”기존 닉네임과 동일합니다. 닉네임을 변경해주세요")라는 메시지와 함께 닉네임 변경 실패로 만들기
-
afterNickname이 다른 회원의 nickname과 동일하다면 (”다른 회원의 닉네임과 중복됩니다. 다른 닉네임으로 변경해주세요.”)라는 메시지와 함께 닉네임 변경 실패로 만들기
-
주소 변경 시, 필요한 데이터는 nickname과 afterAddress이다.
-
주소 변경 성공 시, afterAddress에 대한 데이터를 제공한다.
-
-
회원 탈퇴
- 회원 탈퇴 시, 필요한 데이터는 email, password,passwordCheck이다.
- 회원 탈퇴 성공 시, (”회원 탈퇴가 성공적으로 이루어졌습니다")라는 메시지를 전송한다.
- email이 존재하지 않을 시, (”이메일을 등록한 회원이 존재하지 않습니다")라는 메시지와 함께 회원탈퇴 실패로 만든다.
- email은 존재하지만 해당하는 email의 password가 일치하지 않을 시, (”비밀번호가 정확하지 않습니다")라는 메시지와 함께 회원 탈퇴 실패로 만든다.
- password는 passwordCheck와 일치하지 않을 시 (”비밀번호와 비밀번호 확인이 일치하지 않습니다")라는 메시지와 함께 회원 탈퇴 실패로 만든다.
-
캐시 충전
- 캐시 충전 시, 필요한 데이터는 nickname과 충전하고자 하는 금액인 chargeCash이다.
- 캐시 충전 성공 시, 기존 cash와 chargeCash를 더한 totalCash 데이터를 제공한다.
상품 기능
- 상품 조회
-
메인 페이지 상품 리스트 조회 시, 필요한 데이터는 page에 대한 정보이고 목록으로 각 상품의 productId,title,category,reviewCnt,summary,price,firstImg에 대한 정보를 제공해야한다.
-
페이징 관련 이야기 적어야함
-
상품 상세 정보 조회 시, 필요한 데이터는 상품에 대한 id (productId)에 대한 정보이고 상품의 productId,title,category,optionList[opt1,op2,...],imgList[img1,img2,...],detail,reviewList[nickname,title,content,createdAt]에 대한 정보를 제공해야한다.
-
카테고리와 검색을 활용한 상품 리스트 조회 시,필요한 데이터는 sort(정렬 방식), category(카테고리), searchKeyword(검색어)에 대한 정보이고 정하지 않았다면 null로 보내줘야한다. 조건에 해당하는 목록으로 각 상품의 productId,title,category,reviewCnt,summary,price,firstImg에 대한 정보를 제공해야한다.
-
이것 또한 페이징 관련 이야기를 적어야한다.
-
주문 기능
-
장바구니 담기
- 장바구니에 담을 시, 필요한 데이터는 nickname, productId,option,price,ea이다.
- 만약 장바구니에 이미 담겨 있을 시,(”해당 상품과 설정한 옵션은 이미 장바구니에 담겨져 있습니다.”)라는 메시지와 함께 장바구니에 담기는 실패한다.
- 필요한 데이터를 충족했을 시, (”해당 상품이 장바구니에 담겼습니다.")라는 메시지를 제공한다.
-
장바구니 조회하기
- 장바구니 리스트 확인 시, 필요한 데이터는 nickname이다.
- 장바구니 목록에 아무것도 존재하지 않을 시, 비어있는 리스트 cartList를 제공한다.
- 필요한 데이터를 충족했을 시, cartList[cartId,productId,title,category,firstImg,reviewCnt,price,optionContent,ea,bill]에 대한 데이터를 제공한다.
-
장바구니에서 제외하기
- 장바구니에서 제외할 시, 필요한 데이터는 nickname,cartId이다.
- 필요한 데이터를 충족했을 시,(”해당 상품이 장바구니에서 제외되었습니다")라는 메시지를 제공하고 새로운 cartList[cartId,productId,title,category,firstImg,reviewCnt,price,optionContent,ea,bill]에 대한 데이터를 제공한다.
-
상품을 즉시 구매하기
- 상품을 상품 상세 페이지에서 즉시 구매할 시, 필요한 데이터는 nickname,productId,ea,price,optionContent,address이다.
- 필요한 데이터를 충족했을 시, (”주문이 완료되었습니다")라는 메시지를 제공하고 ea*price인 즉 totalPrice를 member의 cash에서 차감한다.
- 만약 totalPrice가 member의 cash보다 크다면 (”잔액이 부족합니다")라는 메시지를 제공하고 cash를 차감하는 로직을 실행하지 않는다.
-
장바구니에서 상품으로 선택하여 주문하기
- 상품을 장바구니에서 선택할 시, 필요한 데이터는 nickname, cardIdList[cardI1,card2,...],totalPrice,address이다.
- 필요한 데이터를 충족했을 시, (”주문이 완료되었습니다")라는 메시지를 제공하고 totalPrice를 member의 cash에서 차감한다.
- 만약 totalPrice가 member의 cash보다 크다면 (”잔액이 부족합니다")라는 메시지를 제공하고 cash를 차감하는 로직을 실행하지 않는다.
-
상품 환불하기
- 상품을 환불할 시, 필요한 데이터는 nickname, orderDetailId이 필요하다.
- 필요한 데이터를 충족했을 시, (”환불이 완료되었습니다.”)라는 메시지를 제공하고 orderDetail의 bill에 해당하는 데이터를 member의 cash에 추가하여준다.
- 만약에 orderId가 같은 orderDetail이 모두 사라진다면 해당 order 한 행도 삭제해야한다.
리뷰 기능
-
리뷰 작성
- 리뷰 작성 시, 필요한 데이터는 nickname,orderDetailId(구매 번호),reviewTitle(리뷰 제목),content(리뷰 내용)이다.
- 필요한 데이터를 충족했을 시, (”리뷰 작성이 완료되었습니다.")라는 메시지와 함께 nickname,reviewTitle,content에 대한 데이터 제공한다.
-
리뷰 조회
- 내가 쓴 리뷰 조회 시, 필요한 데이터는 nickname이다.
- 필요한 데이터를 충족했을 시, 구매한 상품 리스트들과 함께 내가 작성한 리뷰가 존재한다면 reviewId, reviewTitle, reviewContent에 대한 데이터를 제공한다.
-
리뷰 수정
- 내가 쓴 리뷰 수정 시, 필요한 데이터는 nickname,reviewId,reviewTitle,content이다.
- 필요한 데이터를 충족했을 시, (”리뷰 작성이 완료되었습니다.")라는 메시지와 함께 nickname,reviewId,reviewTitle(바뀐 제목),content(바뀐 내용)에 대한 데이터를 제공한다.
-
리뷰 삭제
- 내가 쓴 리뷰 수정 시, 필요한 데이터는 reviewId, nickname이다.
- 필요한 데이터를 충족했을 시, (”리뷰 삭제가 완료되었습니다")라는 메시지를 전달한다.