요구사항 상세 확인서 - showMeTheMoneyPrac/BE_Repo GitHub Wiki

Notion Link

기능 목록

  • 회원 기능
    • 회원가입
    • 로그인
    • 회원 정보 조회
    • 회원 정보 수정
    • 회원 탈퇴
    • 포인트 충전
  • 상품 기능
    • 상품 조회
  • 주문 기능
    • 장바구니 담기
    • 상품 주문
    • 환불
  • 리뷰 기능
    • 리뷰 조회
    • 리뷰 작성
    • 리뷰 삭제
    • 리뷰 수정

회원 기능

  1. 회원 가입

    • 회원 가입 시, 필요한 데이터는 email,nickname,password,passwordCheck,address이다.
    • 필요한 데이터를 충족했을 시, (”회원가입을 축하합니다")라는 메시지와 함께 email,nickname에 대한 데이터 제공한다.
    • email은 이메일 정규 표현식을 갖춰야하며 기존 이메일과 동일할 시 (”중복된 이메일이 존재합니다”)라는 메시지와 함께 회원가입 실패로 만든다.
    • nickname은 기존 nickname과 동일할 시 (”중복된 닉네임이 존재합니다”)라는 메시지와 함께 회원가입 실패로 만든다.
    • password는 passwordCheck와 일치하지 않을 시 (”비밀번호와 비밀번호 확인이 일치하지 않습니다")라는 메시지와 함께 회원가입 실패로 만든다.
  2. 로그인

    • 로그인 시, 필요한 데이터는 email,password이다.
    • 로그인 성공 시, email,nickname에 대한 데이터 제공한다.
    • email이 존재하지 않을 시, (”이메일을 등록한 회원이 존재하지 않습니다")라는 메시지와 함께 로그인 실패로 만든다.
    • email은 존재하지만 해당하는 email의 password가 일치하지 않을 시, (”비밀번호가 정확하지 않습니다")라는 메시지와 함께 로그인 실패로 만든다.
  3. 회원 정보 조회

    • 회원 정보 조회 시, 필요한 식별자 데이터는 nickname이다.
    • 회원 정보 조회 성공 시, nickname,address,cash에 대한 데이터 제공한다.
  4. 회원 정보 수정(닉네임, 주소)

    • 닉네임 변경 시, 필요한 데이터는 nickname과 바꾸고자하는 afterNickname이다.

    • 닉네임 변경 성공 시, 바뀐 afterNickname 데이터를 제공한다.

    • afterNickname이 기존 회원의 nickname과 동일하다면 (”기존 닉네임과 동일합니다. 닉네임을 변경해주세요")라는 메시지와 함께 닉네임 변경 실패로 만들기

    • afterNickname이 다른 회원의 nickname과 동일하다면 (”다른 회원의 닉네임과 중복됩니다. 다른 닉네임으로 변경해주세요.”)라는 메시지와 함께 닉네임 변경 실패로 만들기

    • 주소 변경 시, 필요한 데이터는 nickname과 afterAddress이다.

    • 주소 변경 성공 시, afterAddress에 대한 데이터를 제공한다.

  5. 회원 탈퇴

    • 회원 탈퇴 시, 필요한 데이터는 email, password,passwordCheck이다.
    • 회원 탈퇴 성공 시, (”회원 탈퇴가 성공적으로 이루어졌습니다")라는 메시지를 전송한다.
    • email이 존재하지 않을 시, (”이메일을 등록한 회원이 존재하지 않습니다")라는 메시지와 함께 회원탈퇴 실패로 만든다.
    • email은 존재하지만 해당하는 email의 password가 일치하지 않을 시, (”비밀번호가 정확하지 않습니다")라는 메시지와 함께 회원 탈퇴 실패로 만든다.
    • password는 passwordCheck와 일치하지 않을 시 (”비밀번호와 비밀번호 확인이 일치하지 않습니다")라는 메시지와 함께 회원 탈퇴 실패로 만든다.
  6. 캐시 충전

    • 캐시 충전 시, 필요한 데이터는 nickname과 충전하고자 하는 금액인 chargeCash이다.
    • 캐시 충전 성공 시, 기존 cash와 chargeCash를 더한 totalCash 데이터를 제공한다.

상품 기능

  1. 상품 조회
    • 메인 페이지 상품 리스트 조회 시, 필요한 데이터는 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에 대한 정보를 제공해야한다.

    • 이것 또한 페이징 관련 이야기를 적어야한다.

주문 기능

  1. 장바구니 담기

    • 장바구니에 담을 시, 필요한 데이터는 nickname, productId,option,price,ea이다.
    • 만약 장바구니에 이미 담겨 있을 시,(”해당 상품과 설정한 옵션은 이미 장바구니에 담겨져 있습니다.”)라는 메시지와 함께 장바구니에 담기는 실패한다.
    • 필요한 데이터를 충족했을 시, (”해당 상품이 장바구니에 담겼습니다.")라는 메시지를 제공한다.
  2. 장바구니 조회하기

    • 장바구니 리스트 확인 시, 필요한 데이터는 nickname이다.
    • 장바구니 목록에 아무것도 존재하지 않을 시, 비어있는 리스트 cartList를 제공한다.
    • 필요한 데이터를 충족했을 시, cartList[cartId,productId,title,category,firstImg,reviewCnt,price,optionContent,ea,bill]에 대한 데이터를 제공한다.
  3. 장바구니에서 제외하기

    • 장바구니에서 제외할 시, 필요한 데이터는 nickname,cartId이다.
    • 필요한 데이터를 충족했을 시,(”해당 상품이 장바구니에서 제외되었습니다")라는 메시지를 제공하고 새로운 cartList[cartId,productId,title,category,firstImg,reviewCnt,price,optionContent,ea,bill]에 대한 데이터를 제공한다.
  4. 상품을 즉시 구매하기

    • 상품을 상품 상세 페이지에서 즉시 구매할 시, 필요한 데이터는 nickname,productId,ea,price,optionContent,address이다.
    • 필요한 데이터를 충족했을 시, (”주문이 완료되었습니다")라는 메시지를 제공하고 ea*price인 즉 totalPrice를 member의 cash에서 차감한다.
    • 만약 totalPrice가 member의 cash보다 크다면 (”잔액이 부족합니다")라는 메시지를 제공하고 cash를 차감하는 로직을 실행하지 않는다.
  5. 장바구니에서 상품으로 선택하여 주문하기

    • 상품을 장바구니에서 선택할 시, 필요한 데이터는 nickname, cardIdList[cardI1,card2,...],totalPrice,address이다.
    • 필요한 데이터를 충족했을 시, (”주문이 완료되었습니다")라는 메시지를 제공하고 totalPrice를 member의 cash에서 차감한다.
    • 만약 totalPrice가 member의 cash보다 크다면 (”잔액이 부족합니다")라는 메시지를 제공하고 cash를 차감하는 로직을 실행하지 않는다.
  6. 상품 환불하기

    • 상품을 환불할 시, 필요한 데이터는 nickname, orderDetailId이 필요하다.
    • 필요한 데이터를 충족했을 시, (”환불이 완료되었습니다.”)라는 메시지를 제공하고 orderDetail의 bill에 해당하는 데이터를 member의 cash에 추가하여준다.
    • 만약에 orderId가 같은 orderDetail이 모두 사라진다면 해당 order 한 행도 삭제해야한다.

리뷰 기능

  1. 리뷰 작성

    • 리뷰 작성 시, 필요한 데이터는 nickname,orderDetailId(구매 번호),reviewTitle(리뷰 제목),content(리뷰 내용)이다.
    • 필요한 데이터를 충족했을 시, (”리뷰 작성이 완료되었습니다.")라는 메시지와 함께 nickname,reviewTitle,content에 대한 데이터 제공한다.
  2. 리뷰 조회

    • 내가 쓴 리뷰 조회 시, 필요한 데이터는 nickname이다.
    • 필요한 데이터를 충족했을 시, 구매한 상품 리스트들과 함께 내가 작성한 리뷰가 존재한다면 reviewId, reviewTitle, reviewContent에 대한 데이터를 제공한다.
  3. 리뷰 수정

    • 내가 쓴 리뷰 수정 시, 필요한 데이터는 nickname,reviewId,reviewTitle,content이다.
    • 필요한 데이터를 충족했을 시, (”리뷰 작성이 완료되었습니다.")라는 메시지와 함께 nickname,reviewId,reviewTitle(바뀐 제목),content(바뀐 내용)에 대한 데이터를 제공한다.
  4. 리뷰 삭제

    • 내가 쓴 리뷰 수정 시, 필요한 데이터는 reviewId, nickname이다.
    • 필요한 데이터를 충족했을 시, (”리뷰 삭제가 완료되었습니다")라는 메시지를 전달한다.