Skip to content

유스 케이스

Cass edited this page Oct 24, 2024 · 10 revisions

용어별 의미

  • auction : 경매
  • bid : 입찰 : 경매에 자신이 원하는 가격을 제출하는 것
  • bid_max : 최고 입찰가
  • 최대 입찰가 : 현재 조건으로 경매가 종료되었을 때 낙찰자가 낙찰받는 가격
  • 낙찰 : 자신이 제출한 입찰 가격으로 상품을 구매할 수 있게 된 것
  • 유찰 : 낙찰에 실패한 것
  • 자동입찰 : 최고 입찰가를 설정했을 때, 최고 입찰가 이하의 금액의 입찰이 발생했을 시 애플리케이션이 자동으로 상위입찰을 해 주는 것

사용자 기능

  1. 회원가입

    1. 회원가입 페이지에 진입
    2. 회원정보를 입력
    3. (회원가입 폼에서) ID의 중복 여부를 체크
    4. 회원가입 시도 시, 데이터의 유효성 체크 후 회원가입 완료 (유효성에 맞지 않는 데이터라면 에러 메시지 리턴)
      • ID의 중복 여부를 체크했더라도, ID에 대한 유효성 검사는 실시
  2. 로그인

    1. ID와 비밀번호를 입력하고 로그인 시도
    2. 유효한 값을 입력했다면 로그인 완료 후 session에 저장
      • 유효하지 않은 값이라면, ID 혹은 비밀번호를 확인하라는 메시지를 리턴
  3. 로그아웃

    1. 로그인 상태에서 로그아웃 버튼을 클릭
    2. 로그아웃 처리 (세션에서 인증 데이터를 삭제)
      • 로그인 상태가 아닌 유저라면, 로그인 상태가 아니라는 메시지를 리턴
  4. 회원 정보 조회

  5. 회원 정보 수정

  6. 회원 탈퇴

    1. 로그인 상태에서 회원 탈퇴 요청
    2. 탈퇴 처리 (바로 row를 삭제하지 않고, byte 컬럼을 통해 탈퇴 여부를 저장)
    3. 일정 기간 경과 후, 회원 정보 컬럼의 데이터 삭제

상품 관리 기능

상품 등록 관련

  1. 상품 등록
    1. 판매 권한을 가지고 있는 회원으로 로그인
    2. 상품의 정보를 폼에 입력
    3. 상품의 이미지를 업로드
      • 상품의 등록을 완료하지 않았다면, 일정 기간 후(하루?) 업로드한 이미지를 삭제
    4. 유효한 정보를 입력했다면 등록하고 데이터베이스에 삽입
      • 유효하지 않은 정보를 입력했다면, 유효하지 않은 데이터의 정보를 포함한 에러 메시지 리턴
  2. 상품 수정
    1. 해당 상품을 등록한 회원으로 로그인
    2. 상품 번호를 이용해 수정 페이지 진입
    3. 상품의 이미지 수정, 정보를 입력
    4. 유효한 정보를 입력했다면 수정 완료 처리
  3. 상품 삭제
    1. 해당 상품을 등록한 회원으로 로그인
    2. 상품 번호를 이용해 삭제 요청 송신
    3. 상품의 삭제 처리
      • 실제로 DB는 삭제하지 않고, 삭제되었음을 표기하는 byte 컬럼을 통해 표현
      • 삭제되고 일정 기간이 지난 상품의 정보 컬럼과 이미지는 삭제 처리 (로우는 삭제하지 않고 데이터만 삭제)
  4. 등록한 상품의 리스트 조회
  5. 상품번호로 등록한 상품의 정보 확인

상품 조회 관련

  1. 등록된 상품 리스트 조회
  2. 상품번호로 상품 정보 조회

경매 기능

경매 상태 조회

  1. 경매 로그 조회
  2. 상품 번호를 통한 경매 상태 조회

경매 데이터 등록 및 수정

  1. 경매 데이터 등록
    • "상품"과 "경매"는 별개의 객체로 다룸
    1. 상품 번호와 경매 금액, 최소단위, 시간을 입력해서 등록 시도
      • 시작 시간은 현재 시간 이후여야 하고, 기간은 최소 1시간 이상이여야 함
    2. 값이 유효하다면, 등록 처리
      • 유효하지 않은 정보를 입력했다면, 유효하지 않은 데이터의 정보를 포함한 에러 메시지 리턴
  2. 상품에 대한 경매 데이터 조회
    • 현재 낙찰자의 ID 일부, 낙찰 예정 가격, 시작~종료 시간 이 조회됨

경매 진행

image

입찰최고 입찰가 두 가지가 존재 (이베이와 동일한 시스템 클론)

  • 최대 입찰가는 제출된 입찰가 중 제일 높은 가격을 의미한다. 경매가 종료되면 최대 입찰가의 가격을 입찰자가 지불하게 된다.
  • 최대 입찰가는 언제나 최고 입찰가보다 같거나 작다.
  • 최고 입찰가가 설정되어 있다면, 제출된 입찰가가 최고 입찰가보다 작거나 같아면 자동입찰이 이루어진다.
  1. 입찰
    1. 입찰의 케이스

      • 첫 번째 입찰자인 경우: 제출한 입찰가 가격이 최대 입찰가격이 됨
      • 현재 최대 입찰가 + 최소 단위보다 낮은 가격으로 입찰가/최고 입찰가를 설정할 경우 : 설정 불가능함 (에러 메시지 리턴)
      • 현재 최고 입찰가 와 동일한 가격으로 입찰가/최고 입찰가를 설정할 경우 : 설정 가능함. 다른 사람이 먼저 설정한 최고 입찰가와 동일한 금액이라 낙찰받을 수 없다는 메시지를 리턴
      • 현재 최대 입찰가보다 높은 가격이지만 최고 입찰가보다 낮은 가격으로 입찰/최고 입찰가를 설정할 경우 : 설정 가능함. 다른 사람의 최고 입찰가보다 낮은 금액이라 유찰되었다는 메시지를 리턴 (최고 입찰가를 설정한 사용자의 자동입찰이 이루어져 유찰되기 때문)
      • 현재 최대 입찰가/최고 입찰가보다 높은 가격으로 입찰할 경우 : 해당 가격이 최대 입찰가가 됨
      • 현재 최대 입찰가/최고 입찰가보다 높은 가격으로 최고 입찰가를 설정할 경우 : 이하의 조건에 따라 최대 입찰가가 설정됨
        • 다른 최고 입찰가가 없다면 현재 최대 입찰가 + 최소단위의 가격이 최대 입찰가가 됨
        • 다른 최고 입찰가가 있다면 해당 최고 입찰가 + 최소단위의 가격이 최대 입찰가가 됨
      • 동일한 입찰 가격으로 두 명 이상의 사용자가 입찰한 경우, 제일 먼저 입찰한 사용자가 입찰됨
    2. 입찰 시도 시, 동시성 제어에 따라 실패한다면 에러 메시지 리턴

      • 로그는 정상적으로 기록
    3. 판매자는 자신의 경매에 입찰할 수 없음

제출 가격 삽입 가능 여부 최대 입찰가 (입찰자) 리턴 메시지
첫번째 입찰 O 제출한 가격 (사용자) -
최대 입찰가 + 최소 단위 > 제출한 입찰가 X X 현재 입찰가 + 최소 단위 미만으로는 입찰 불가
최고 입찰가 = 제출한 입찰가 OR 최고 입찰가 >= 최대 입찰가 + 최소 단위 O 최고 입찰가 (상대방) 다른 사람의 최고 입찰가와 동일하여 유찰
최고 입찰가 > 제출한 입찰가 >= 최대 입찰가 + 최소 단위 O min(제출한 가격 + 최소단위, 최고 입찰가) (상대방) 다른 사람의 최고 입찰가보다 낮은 금액이라 유찰
제출한 입찰가 > 최고 입찰가 > 최대 입찰가 + 최소 단위 O 제출한 가격 (사용자) -
제출한 최고 입찰가 > 최고 입찰가 > 최대 입찰가 + 최소 단위 O 다른 최고 입찰가가 없다면: 현재 최대 입찰가 + 최소단위
다른 최고 입찰가가 있다면: 해당 최고 입찰가 + 최소단위
-
  1. 최고 입찰가
    • 사용자가 최고 입찰가를 설정하였을 경우, 최고 입찰가보다 낮은 입찰이 발생하였을 경우 시스템에서 자동으로 상위입찰을 해 준다
      • ex) 최고 입찰가격을 10000원으로 설정하였고 다른 사용자가 5000원에 입찰했다면, 시스템에서 자동으로 5000 + 최소 단위 가격으로 자동입찰
    • 두 명 이상의 사용자가 최고 입찰가를 설정했다면, 제일 높은 최고 입찰가를 설정한 사용자가, 두 번째로 높은 최고 입찰가 + 최소 단위 가격으로 자동입찰함
    • 여러 사용자가 동일한 최고 입찰가를 입력하였을 경우, 제일 먼저 최고 입찰가를 입력한 사용자가 해당 가격으로 입찰 상태가 됨
  2. 경매의 로그
    1. 모든 입찰에 대한 로그를 기록함
      • 경매 번호
      • 시간
      • 입찰한 사용자 ID
      • 입찰 가격
      • 입찰 데이터 기록 실패 여부
      • 사용자가 조회가능한지 여부
    2. 이하와 같은 상황이 발생했을 때 기록된 로그는, 다른 사용자가 로그 조회를 통해 볼 수 있는 로그가 됨
      • 첫 번째 입찰이 발생했을 때
      • 낙찰 가격이 변경되었을 때
      • 현재 제일 높은 최대 입찰가와 동일한 입찰이 발생했을 떄
    3. 사용자가 볼 수 있는 정보는 다음과 같음 (구매자와 판매자 동일)
      • 기록에 실패한 입찰 데이터는 출력하지 않는다
      • 시간
      • 낙찰 예정 금액
      • 낙찰 예정인 사용자의 ID 일부
  3. 상태 변화에 따른 알림
    1. 구매자의 알림
      • 낙찰 상태가 유찰이 되었을 때
      • 자신이 입찰한 적 있는 상품의 경매 종료시간이 10분 남았을 때
    2. 판매자의 알림
      • 첫 번째 입찰이 발생했을 때?
      • 경매 종료시간이 10분 남았을 때