-
Notifications
You must be signed in to change notification settings - Fork 0
유스 케이스
Cass edited this page Oct 24, 2024
·
10 revisions
- auction : 경매
- bid : 입찰 : 경매에 자신이 원하는 가격을 제출하는 것
- bid_max : 최고 입찰가
- 최대 입찰가 : 현재 조건으로 경매가 종료되었을 때 낙찰자가 낙찰받는 가격
- 낙찰 : 자신이 제출한 입찰 가격으로 상품을 구매할 수 있게 된 것
- 유찰 : 낙찰에 실패한 것
- 자동입찰 : 최고 입찰가를 설정했을 때, 최고 입찰가 이하의 금액의 입찰이 발생했을 시 애플리케이션이 자동으로 상위입찰을 해 주는 것
-
회원가입
- 회원가입 페이지에 진입
- 회원정보를 입력
- (회원가입 폼에서) ID의 중복 여부를 체크
- 회원가입 시도 시, 데이터의 유효성 체크 후 회원가입 완료 (유효성에 맞지 않는 데이터라면 에러 메시지 리턴)
- ID의 중복 여부를 체크했더라도, ID에 대한 유효성 검사는 실시
-
로그인
- ID와 비밀번호를 입력하고 로그인 시도
- 유효한 값을 입력했다면 로그인 완료 후 session에 저장
- 유효하지 않은 값이라면, ID 혹은 비밀번호를 확인하라는 메시지를 리턴
-
로그아웃
- 로그인 상태에서 로그아웃 버튼을 클릭
- 로그아웃 처리 (세션에서 인증 데이터를 삭제)
- 로그인 상태가 아닌 유저라면, 로그인 상태가 아니라는 메시지를 리턴
-
회원 정보 조회
-
회원 정보 수정
-
회원 탈퇴
- 로그인 상태에서 회원 탈퇴 요청
- 탈퇴 처리 (바로 row를 삭제하지 않고, byte 컬럼을 통해 탈퇴 여부를 저장)
- 일정 기간 경과 후, 회원 정보 컬럼의 데이터 삭제
- 상품 등록
- 판매 권한을 가지고 있는 회원으로 로그인
- 상품의 정보를 폼에 입력
- 상품의 이미지를 업로드
- 상품의 등록을 완료하지 않았다면, 일정 기간 후(하루?) 업로드한 이미지를 삭제
- 유효한 정보를 입력했다면 등록하고 데이터베이스에 삽입
- 유효하지 않은 정보를 입력했다면, 유효하지 않은 데이터의 정보를 포함한 에러 메시지 리턴
- 상품 수정
- 해당 상품을 등록한 회원으로 로그인
- 상품 번호를 이용해 수정 페이지 진입
- 상품의 이미지 수정, 정보를 입력
- 유효한 정보를 입력했다면 수정 완료 처리
- 상품 삭제
- 해당 상품을 등록한 회원으로 로그인
- 상품 번호를 이용해 삭제 요청 송신
- 상품의 삭제 처리
- 실제로 DB는 삭제하지 않고, 삭제되었음을 표기하는 byte 컬럼을 통해 표현
- 삭제되고 일정 기간이 지난 상품의 정보 컬럼과 이미지는 삭제 처리 (로우는 삭제하지 않고 데이터만 삭제)
- 등록한 상품의 리스트 조회
- 상품번호로 등록한 상품의 정보 확인
- 등록된 상품 리스트 조회
- 상품번호로 상품 정보 조회
- 경매 로그 조회
- 상품 번호를 통한 경매 상태 조회
- 경매 데이터 등록
- "상품"과 "경매"는 별개의 객체로 다룸
- 상품 번호와 경매 금액, 최소단위, 시간을 입력해서 등록 시도
- 시작 시간은 현재 시간 이후여야 하고, 기간은 최소 1시간 이상이여야 함
- 값이 유효하다면, 등록 처리
- 유효하지 않은 정보를 입력했다면, 유효하지 않은 데이터의 정보를 포함한 에러 메시지 리턴
- 상품에 대한 경매 데이터 조회
- 현재 낙찰자의 ID 일부, 낙찰 예정 가격, 시작~종료 시간 이 조회됨
입찰
과 최고 입찰가
두 가지가 존재 (이베이와 동일한 시스템 클론)
-
최대 입찰가
는 제출된 입찰가 중 제일 높은 가격을 의미한다. 경매가 종료되면최대 입찰가
의 가격을 입찰자가 지불하게 된다. -
최대 입찰가
는 언제나최고 입찰가
보다 같거나 작다. -
최고 입찰가
가 설정되어 있다면, 제출된 입찰가가최고 입찰가
보다 작거나 같아면자동입찰
이 이루어진다.
- 입찰
-
입찰의 케이스
- 첫 번째 입찰자인 경우: 제출한 입찰가 가격이 최대 입찰가격이 됨
- 현재
최대 입찰가
+최소 단위
보다 낮은 가격으로입찰가
/최고 입찰가
를 설정할 경우 : 설정 불가능함 (에러 메시지 리턴) - 현재
최고 입찰가
와 동일한 가격으로입찰가
/최고 입찰가
를 설정할 경우 : 설정 가능함. 다른 사람이 먼저 설정한최고 입찰가
와 동일한 금액이라 낙찰받을 수 없다는 메시지를 리턴 - 현재
최대 입찰가
보다 높은 가격이지만최고 입찰가
보다 낮은 가격으로 입찰/최고 입찰가
를 설정할 경우 : 설정 가능함. 다른 사람의최고 입찰가
보다 낮은 금액이라 유찰되었다는 메시지를 리턴 (최고 입찰가
를 설정한 사용자의 자동입찰이 이루어져 유찰되기 때문) - 현재
최대 입찰가
/최고 입찰가
보다 높은 가격으로 입찰할 경우 : 해당 가격이최대 입찰가
가 됨 - 현재
최대 입찰가
/최고 입찰가
보다 높은 가격으로최고 입찰가
를 설정할 경우 : 이하의 조건에 따라최대 입찰가
가 설정됨- 다른
최고 입찰가
가 없다면 현재 최대 입찰가 +최소단위
의 가격이최대 입찰가
가 됨 - 다른
최고 입찰가
가 있다면 해당최고 입찰가
+최소단위
의 가격이최대 입찰가
가 됨
- 다른
- 동일한 입찰 가격으로 두 명 이상의 사용자가 입찰한 경우, 제일 먼저 입찰한 사용자가 입찰됨
-
입찰 시도 시, 동시성 제어에 따라 실패한다면 에러 메시지 리턴
- 로그는 정상적으로 기록
-
판매자는 자신의 경매에 입찰할 수 없음
-
제출 가격 | 삽입 가능 여부 | 최대 입찰가 (입찰자) | 리턴 메시지 |
---|---|---|---|
첫번째 입찰 | O | 제출한 가격 (사용자) | - |
최대 입찰가 + 최소 단위 > 제출한 입찰가
|
X | X | 현재 입찰가 + 최소 단위 미만으로는 입찰 불가 |
최고 입찰가 = 제출한 입찰가 OR 최고 입찰가 >= 최대 입찰가 + 최소 단위
|
O |
최고 입찰가 (상대방) |
다른 사람의 최고 입찰가 와 동일하여 유찰 |
최고 입찰가 > 제출한 입찰가 >= 최대 입찰가 + 최소 단위
|
O | min(제출한 가격 + 최소단위 , 최고 입찰가 ) (상대방) |
다른 사람의 최고 입찰가 보다 낮은 금액이라 유찰 |
제출한 입찰가 > 최고 입찰가 > 최대 입찰가 + 최소 단위
|
O | 제출한 가격 (사용자) | - |
제출한 최고 입찰가 > 최고 입찰가 > 최대 입찰가 + 최소 단위
|
O | 다른 최고 입찰가 가 없다면: 현재 최대 입찰가 + 최소단위 다른 최고 입찰가 가 있다면: 해당 최고 입찰가 + 최소단위
|
- |
- 최고 입찰가
- 사용자가 최고 입찰가를 설정하였을 경우, 최고 입찰가보다 낮은 입찰이 발생하였을 경우 시스템에서 자동으로 상위입찰을 해 준다
- ex) 최고 입찰가격을 10000원으로 설정하였고 다른 사용자가 5000원에 입찰했다면, 시스템에서 자동으로 5000 + 최소 단위 가격으로 자동입찰
- 두 명 이상의 사용자가 최고 입찰가를 설정했다면, 제일 높은 최고 입찰가를 설정한 사용자가, 두 번째로 높은 최고 입찰가 + 최소 단위 가격으로 자동입찰함
- 여러 사용자가 동일한 최고 입찰가를 입력하였을 경우, 제일 먼저 최고 입찰가를 입력한 사용자가 해당 가격으로 입찰 상태가 됨
- 사용자가 최고 입찰가를 설정하였을 경우, 최고 입찰가보다 낮은 입찰이 발생하였을 경우 시스템에서 자동으로 상위입찰을 해 준다
- 경매의 로그
- 모든 입찰에 대한 로그를 기록함
- 경매 번호
- 시간
- 입찰한 사용자 ID
- 입찰 가격
- 입찰 데이터 기록 실패 여부
- 사용자가 조회가능한지 여부
- 이하와 같은 상황이 발생했을 때 기록된 로그는, 다른 사용자가 로그 조회를 통해 볼 수 있는 로그가 됨
- 첫 번째 입찰이 발생했을 때
- 낙찰 가격이 변경되었을 때
- 현재 제일 높은 최대 입찰가와 동일한 입찰이 발생했을 떄
- 사용자가 볼 수 있는 정보는 다음과 같음 (구매자와 판매자 동일)
- 기록에 실패한 입찰 데이터는 출력하지 않는다
- 시간
- 낙찰 예정 금액
- 낙찰 예정인 사용자의 ID 일부
- 모든 입찰에 대한 로그를 기록함
- 상태 변화에 따른 알림
- 구매자의 알림
- 낙찰 상태가 유찰이 되었을 때
- 자신이 입찰한 적 있는 상품의 경매 종료시간이 10분 남았을 때
- 판매자의 알림
- 첫 번째 입찰이 발생했을 때?
- 경매 종료시간이 10분 남았을 때
- 구매자의 알림