f-lab-edu/soldout

프로젝트 준비 과정

Closed this issue · 4 comments

진행 작업

  • 로그인 검증 기능 구현
  • 상품 도메인 설계 및 상품 리스트 및 상세설명 API 구현

예정 작업

  • 테스트코드 작성(JUnit)
  • 데이터베이스 연결(JDBC)
  • Github Action 설정

프로젝트 진행 과정 예상안

  1. 기획
  • 요구사항을 정의
  • 이행할 방법?
  • 정책 수립한다 => (어떻게 뭘 할지를 정한다)
  1. 스토리보드 제작 (요구사항 명세)
  2. api 명세서
  • 로그인
  • 회원가입
  • 상품리스트 표시

📌 프로젝트 요구사항

  • 사용자는 회원가입 및 로그인을 해야 해당 서비스를 이용할 수 있다.(또는 상품 리스트 접근까지는 가능)

  • 사용자는 등록된 상품 리스트를 확인할 수 있다.

  • 사용자가 하나의 상품을 선택하면 해당 상품의 상세 설명 및 거래 페이지로 이동한다.

  • 상세 설명 및 거래 페이지에는 특정 상품의 최근 거래내역입찰현황, 상세설명을 확인할 수 있다.

  • 거래 가격사이즈를 기준으로 분류하고, 사이즈 선택 전엔 모든 사이즈최근 거래내역입찰현황을 볼 수 있다.

  • 거래의사가 있는 사용자는 희망 사이즈 선택 후, 해당 상품의 구매 또는 판매 의사를 선택할 수 있다.

  • 구매판매 의사를 결정한 이후, 즉시거래 또는 입찰을 선택할 수 있다.

    • 구매

      • 즉시 구매의 경우, 배송지결제수단을 등록해야 한다.
      • 구매 입찰의 경우, 배송지결제수단과 함께 구매희망가, 입찰 종료일을 추가로 입력해야 한다.
    • 판매

      • 즉시 판매의 경우, 배송지정산계좌, 페널티 결제 수단을 등록해야 한다.
      • 판매 입찰의 경우, 배송지정산계좌, 페널티 결제 수단과 함께 판매희망가입찰 종료일을 추가로 입력해야 한다.
  • 즉시 구매

    • 즉시 구매를 결정하면 바로 결제가 진행된다.
  • 즉시 판매

    • 즉시 판매를 결정하면 해당 제품을 판매자가 배송한다.(일반 택배, 편의점 택배 선택)
    • 그 다음, 검수 센터에서 검수 과정을 거치고,검수 통과가 되면 구매자에게 상품을 배송한다.
    • 구매자에게 상품 배송이 완료되면 정산을 진행한다.
  • 구매 입찰판매 입찰

    • 같은 사이즈의 제품이 구매 희망가판매 희망가동일한 경우, 거래가 성사된다.
      • 판매자는 해당 제품을 검수 센터에 배송한 이후, 검수과정을 거친다.
      • 검수가 통과되면 검수 센터에서 해당 제품을 구매자의 배송지로 배송한다.
      • 구매자는 배송이 시작되면(또는 도착하면) 해당 가격으로 결제를 진행한다.
      • 판매자는 구매자에게 상품 배송이 시작되면 정산을 진행한다.
  • 카카오 로그인
    url('/oauth/kakao') method GET
    req 없음 res(or URL params) ex) /oauth/kakao/callback/${REDIRECT_URI}?code=${AUTHORIZE_CODE}
    기능 : 카카로 로그인 페이지로 보내주기
  • 카카오 로그인 정보 저장 후 토큰발급(로그인처리)
    url('/oauth/kakao/callback') method GET
    req 없음
    res
200
{
  success: true,
  data: accessToken,
  message:"ok"
}
500 // 서버 에러가 아닌이상 카카오 요청에서는 에러가 없다는것으로 가정
{
  success: false,
  data: null ,
  error:{
    code:"error code"
    message:"error message"
  }
}

cookie

token:refreshToken

tokenData

{
  id: 1,
  nickName:"",
  email:"",
  name:"",
}

기능: 카카오로 부터 기본 유저정보 저장 후 토큰 발급

  • 유저 추가 기본 정보 받기
    url('/user') method PUT
    req
{
   phone:"",
   password:"",
}

res

200
{
  success: true,
  data: accessToken,
  message:"ok"
}

  • 로그인
    url('/user/signin') method POST
    req
body{
  email:"",
  password:""
}

res

200
{
  success: true,
  data: accessToken,
  message:"ok"
}
401 // 비밀번호 오류, 아이디 없음, req값없음, email 양식 오류
{
  success: false,
  data: null ,
  error:{
    code:"error code"
    message:"error message"
  }
}

cookie

token:refreshToken
  • 회원가입
    url('/user/signup') method POST
    req
body{
  name:"",
  email:"",
  password:"",//hash값만 저장
  phone:""//옵션
  address:""//옵션
}

res

{
  success: true,
  data:  userData,
  message:"ok"
}
400 // 필수값 없음, 중복 아이디
{
  success: false,
  data: null ,
  error:{
    code:"error code"
    message:"error message"
  }
}
  • user 는 어떤 값을 저장 할 것인가
{
  name:"",
  email:"",
  password:"",//hash값만 저장
  phone:""//옵션 => 문자 인증 api 옵션
  address:""//옵션
}