Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 경매 옵션 변경(업데이트) 서비스 구현 #37

Merged
merged 37 commits into from
Aug 11, 2024

Conversation

yudonggeun
Copy link
Contributor

@yudonggeun yudonggeun commented Aug 11, 2024

📄 Summary

경매 정보 변경시 제약을 구현합니다.

구현 제약

- 시작전인 경매만 변경
- 경매 거래는 0번만 가능하다.
- 경매 시작 계획은 0보다 커야한다.
- 변동 시간 단위는 0보다 커야한다.
- 경매의 시작시간은 종료 시간보다 이전이어야한다.
- 상품 이름은 비어있을 수 없다.
- 상품 평가는 0보다 커야한다.
- 경매 유형은 필수값이다.
- 변동 추가(variationDuration)는 필수값이다.
- 시작 시간(startedAt)은 필수값이다.
- 종료 시간(finishedAt)은 필수값이다.
- 요청시간은 필수값이다.

변경 사항

  • AuctionStatus : 경매의 진행 상황을 나타내는 객체입니다.
    • WAITING, RUNNING, FINISHED
  • UpdateAuctionCommandTest 생성
  • AuctionService#chagneOption : 시작 전인 경매만 변경 가능

🙋🏻 More

close #30

chhs2131 and others added 30 commits August 9, 2024 15:28
- ConstantAuctionType: 지정 금액만큼 가격이 변동되는 경매 방식
- PercentageAuctionType: 지정 비율만큼 가격이 변동되는 경매 방식
- 경매가 성공적으로 생성되면 예외가 발생하지 않는다.
- CreateAuctionCommand: 경매 생성 command 구현
- String -> ErrorCode enum으로 변경
## 제약 요구사항 명세
- 경매 재고는 인당 구매 수량 보다 작을 수 없다.
- 최대 구매 수량 제한은 0보다 커야한다.
- 가격 변동폭은 0보다 커야한다.
- 변동 시간 단위는 0보다 커야한다.
- 경매의 시작시간은 종료 시간보다 이전이어야 한다.
- 상품 이름은 비어있을 수 없다.
- 상품의 원가는 0보다 커야한다.
- 경매 유형, 판매자 식별자, 상품 이름, 시작 시간, 종료 시간은 필수값이다.

## 구현 세부 사항
- ErrorCode A000 ~ A007 에러 코드 생성
- CreateAuctionCommand 구현
- CreateAuctionCommandTest 작성
## 제약 요구사항 명세
- 경매 시작 시간과 경매 종료 시간의 차이는 10분, 20분, 30분, 40분, 50분, 60분으로 제한된다.

## 구현 세부 사항
- ErrorCode A008 에러 코드 생성
- AuctionService#createAuction 구현
- AuctionServiceTest 테스트 생성
- 경매 지속시간이 10, 20, 30, 40, 50, 60이 아닌 경우 예외가 발생한다.
- 경매가 성공적으로 생성되면 경매를 저장시킨다.
## 구현 요구사항
- 상품 원가는 가격 변동폭(절대값)보다 커야합니다.
- int -> long 으로 변경
- variationWidth 필드를 PricePolicy로 이전하였습니다.
## 구현 요구사항
- 경매의 할인율은 100% 보다 작아야한다.
- variationWidth 속성이 PricePolicy로 이전되었습니다.
- 가격 변동폭이 0과 같거나 더 작은 경우 A004 예외가 발생한다.
- 가격 할인률은 0보다 크고 100보다 작아야 한다.
* feat: AuctionServiceTest 경매 성공 테스트 추가
- 경매가 성공적으로 생성되면 예외가 발생하지 않는다.
- CreateAuctionCommand: 경매 생성 command 구현

* feat: base exception class add

* hotfix: CustomException의 ErrorCode 리턴 타입 변경
- String -> ErrorCode enum으로 변경

* feat: CreateAuctionCommand 테스트 생성

* refactor: CreateAuctionCommand 멤버변수 오타 수정 (variationDuration)

* feat: CreateAuctionCommand 제약 구현

## 제약 요구사항 명세
- 경매 재고는 인당 구매 수량 보다 작을 수 없다.
- 최대 구매 수량 제한은 0보다 커야한다.
- 가격 변동폭은 0보다 커야한다.
- 변동 시간 단위는 0보다 커야한다.
- 경매의 시작시간은 종료 시간보다 이전이어야 한다.
- 상품 이름은 비어있을 수 없다.
- 상품의 원가는 0보다 커야한다.
- 경매 유형, 판매자 식별자, 상품 이름, 시작 시간, 종료 시간은 필수값이다.

## 구현 세부 사항
- ErrorCode A000 ~ A007 에러 코드 생성
- CreateAuctionCommand 구현
- CreateAuctionCommandTest 작성

* test: 경매의 지속시간은 최소 10분 최대 60분이다.

* feat: AuctionService#createAuction 기능 구현

## 제약 요구사항 명세
- 경매 시작 시간과 경매 종료 시간의 차이는 10분, 20분, 30분, 40분, 50분, 60분으로 제한된다.

## 구현 세부 사항
- ErrorCode A008 에러 코드 생성
- AuctionService#createAuction 구현
- AuctionServiceTest 테스트 생성

* feat: AuctionRepository 생성

* feat: 경매 지속시간 제약 실패 케이스 구현
- 경매 지속시간이 10, 20, 30, 40, 50, 60이 아닌 경우 예외가 발생한다.

* feat: 경매 생성 기능 구현
- 경매가 성공적으로 생성되면 경매를 저장시킨다.

* refactor: Auction 생성 관련 오류 코드를 변경한다.

- A000: 경매 생성시 필수 값을 모두 입력해야합니다.
- A007: 경매 재고는 인당 구매 수량보다 작을 수 없습니다.

---------

Co-authored-by: HiiWee <[email protected]>
…ion-two

# Conflicts:
#	src/main/java/com/wootecam/luckyvickyauction/core/auction/domain/Auction.java
#	src/main/java/com/wootecam/luckyvickyauction/core/auction/dto/CreateAuctionCommand.java
#	src/main/java/com/wootecam/luckyvickyauction/core/auction/service/AuctionService.java
#	src/main/java/com/wootecam/luckyvickyauction/global/exception/ErrorCode.java
#	src/test/java/com/wootecam/luckyvickyauction/core/auction/dto/CreateAuctionCommandTest.java
#	src/test/java/com/wootecam/luckyvickyauction/core/auction/service/AuctionServiceTest.java
## 구현 제약
- 경매 거래는 0번만 가능하다.
- 경매 시작 계획은 0보다 커야한다.
- 변동 시간 단위는 0보다 커야한다.
- 경매의 시작시간은 종료 시간보다 이전이어야한다.
- 상품 이름은 비어있을 수 없다.
- 상품 평가는 0보다 커야한다.
- 경매 유형은 필수값이다.
- 변동 추가(variationDuration)는 필수값이다.
- 시작 시간(startedAt)은 필수값이다.
- 종료 시간(finishedAt)은 필수값이다.
- 요청시간은 필수값이다.
- WAITING: 경매 진행전
- RUNNING: 경매 진행중
- FINISHED: 경매 종료
- AuctionService#chagneOption을 통해서 경매의 상태를 변경할 시 시작 중인 경매는 수정할 수 없도록 제약 구현
- AuctionServiceTest 테스트 추가
- Auction 테스트에서 중복되는 테스트 제거
- A011: 경매ID를 기준으로 경매를 찾으려고 했지만 찾을 수 없습니다.
- A012: 이미 시작된 경매를 변경하려고 할 때, 예외가 발생합니다.
…uction-update

# Conflicts:
#	src/main/java/com/wootecam/luckyvickyauction/core/auction/domain/Auction.java
#	src/main/java/com/wootecam/luckyvickyauction/core/auction/dto/CreateAuctionCommand.java
#	src/main/java/com/wootecam/luckyvickyauction/core/auction/infra/AuctionRepository.java
#	src/main/java/com/wootecam/luckyvickyauction/core/auction/service/AuctionService.java
#	src/main/java/com/wootecam/luckyvickyauction/global/exception/ErrorCode.java
#	src/test/java/com/wootecam/luckyvickyauction/core/auction/domain/AuctionTest.java
#	src/test/java/com/wootecam/luckyvickyauction/core/auction/service/AuctionServiceTest.java
@yudonggeun yudonggeun added the FEATURE 새로운 기능 또는 변경 label Aug 11, 2024
@chhs2131
Copy link
Member

왜 이미 Dev에 존재하는 Commit들인데 중복으로 나타나는 걸까용? FileChanged는 정상적으로 나오는 것 같은데 🥲

@HiiWee
Copy link
Member

HiiWee commented Aug 11, 2024

요거 머지해도 괜찮은건가..?

@yudonggeun
Copy link
Contributor Author

update branch 하고 머지하면 문제 없을 것 같은데?

Copy link
Member

@HiiWee HiiWee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~~ 🤓

Comment on lines +88 to +92
if (auction.getStatus() != AuctionStatus.WAITING) {
throw new BadRequestException(
"시작 전인 경매만 변경할 수 있습니다. 변경요청시간: " + command.requestTime() + ", 경매시작시간: " + auction.getStartedAt(),
ErrorCode.A012);
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의견: 요런거 나중에 로깅으로 남겨줘도 아주아주 좋을것같아요! ㅎㅎ

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#40 로깅 이슈에 todo 목록으로 등록할께요

@yudonggeun yudonggeun merged commit c5c3727 into dev Aug 11, 2024
@yudonggeun yudonggeun deleted the feat/30-auction-update branch August 11, 2024 08:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FEATURE 새로운 기능 또는 변경
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] 경매 생성 제약 조건 중복 적용
3 participants