-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* [feat] update할 음식의 가격이 0 또는 음수일 경우 던져질 Exception 구현 * [feat] Menu 도메인 엔티티에서 update할 price를 받으면 자신의 price를 업데이트 하는 메서드 구현 - 음수, 0 이라면 InvalidMenuPriceUpdateException 던짐 - Dynamic Update를 이용해 수정된 가격만 업데이트하는 쿼리를 보내기 위해 사용 * [test] Menu 도메인 엔티티에서 update할 price를 받으면 자신의 price를 업데이트 하는 메서드 테스트 - 음수, 혹은 양수면 InvalidMenuPriceUpdateException 발생 테스트 - 양수라면 업데이트 된 가격으로 업데이트 됐는지 확인 * [feat] Menu의 가격을 Update하기 위한 Command 구현 - vendorId : 업데이트를 시도하는 vendor의 id - menuId : 업데이트 할 menu의 id - updatePrice : 업데이트 할 가격 * [feat] Menu의 가격을 Update할 수 있는 MenuPriceUpdateService 구현 - 존재하는 메뉴만 업데이트 할 수 있다. - 자신의 가게만 업데이트 할 수 있다. - 가격은 양수만 가능하다. * [feat] 더미용 Menu를 생성하기 위한 createMenu 메서드 구현 - 테스트용 Menu를 매번 생성하면 중복코드가 많이 생기기 때문에 더미 객체 생성용 메서드 생성 * [test] Menu의 가격을 Update할 수 있는 MenuPriceUpdateService 테스트 구현 - 존재하는 메뉴만 업데이트 할 수 있다. - 자신의 가게만 업데이트 할 수 있다. - 가격은 양수만 가능하다. * [fix] 메뉴의 주인이 아닌 점주가 수정 요청을 했을 때, 400을 던지는 로직에서 403을 던지도록 수정 * [feat] 클라이언트에게 주고 받을 DTO 생성 - 업데이트 할 price를 받고 업데이트 된 price를 준다. * [feat] 업데이트 할 엔드포인트 구현 및 exception handler에 추가 * [test] StoreApiController에 추가한 update price관련 로직 테스트 추가 - 업데이트 가격이 0일경우 400 - 업데이트 가격이 음수일경우 400 - 벤더가 아니면 401 - 내 메뉴를 수정하는것이 아니면 403 * [fix] MenuPriceUpdateService 에서 자신의 가게의 메뉴를 수정할 때 던져지는 Exception을 MenuOwnerNotMatchException 로 수정
- Loading branch information
Showing
14 changed files
with
455 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
src/main/java/camp/woowak/lab/menu/exception/InvalidMenuPriceUpdateException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package camp.woowak.lab.menu.exception; | ||
|
||
import camp.woowak.lab.common.exception.BadRequestException; | ||
|
||
public class InvalidMenuPriceUpdateException extends BadRequestException { | ||
public InvalidMenuPriceUpdateException(String message) { | ||
super(MenuErrorCode.INVALID_PRICE, message); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
src/main/java/camp/woowak/lab/menu/exception/MenuOwnerNotMatchException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package camp.woowak.lab.menu.exception; | ||
|
||
import camp.woowak.lab.common.exception.ForbiddenException; | ||
|
||
public class MenuOwnerNotMatchException extends ForbiddenException { | ||
public MenuOwnerNotMatchException(String message) { | ||
super(MenuErrorCode.MENU_OWNER_NOT_MATCH, message); | ||
} | ||
} |
48 changes: 48 additions & 0 deletions
48
src/main/java/camp/woowak/lab/menu/service/MenuPriceUpdateService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package camp.woowak.lab.menu.service; | ||
|
||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import camp.woowak.lab.menu.domain.Menu; | ||
import camp.woowak.lab.menu.exception.MenuOwnerNotMatchException; | ||
import camp.woowak.lab.menu.exception.UnauthorizedMenuCategoryCreationException; | ||
import camp.woowak.lab.menu.repository.MenuRepository; | ||
import camp.woowak.lab.menu.service.command.MenuPriceUpdateCommand; | ||
import camp.woowak.lab.order.exception.NotFoundMenuException; | ||
import camp.woowak.lab.store.domain.Store; | ||
import lombok.extern.slf4j.Slf4j; | ||
|
||
@Service | ||
@Slf4j | ||
public class MenuPriceUpdateService { | ||
private final MenuRepository menuRepository; | ||
|
||
public MenuPriceUpdateService(MenuRepository menuRepository) { | ||
this.menuRepository = menuRepository; | ||
} | ||
|
||
/** | ||
* @throws camp.woowak.lab.menu.exception.InvalidMenuPriceUpdateException 업데이트 하려는 가격이 0 또는 음수인 경우 | ||
* @throws UnauthorizedMenuCategoryCreationException 자신의 가게의 메뉴가 아닌 메뉴를 업데이트 하려는 경우 | ||
* @throws NotFoundMenuException 존재하지 않는 메뉴의 가격을 업데이트 하려는 경우 | ||
*/ | ||
@Transactional | ||
public long updateMenuPrice(MenuPriceUpdateCommand cmd) { | ||
Menu menu = menuRepository.findByIdWithStore(cmd.menuId()) | ||
.orElseThrow(() -> { | ||
log.info("등록되지 않은 메뉴 {}의 가격 수정을 시도했습니다.", cmd.menuId()); | ||
throw new NotFoundMenuException("등록되지 않은 Menu의 가격 수정을 시도했습니다."); | ||
}); | ||
|
||
Store store = menu.getStore(); | ||
if (!store.isOwnedBy(cmd.vendorId())) { | ||
log.info("권한없는 사용자 {}가 점포 {}의 메뉴 가격 수정을 시도했습니다.", cmd.vendorId(), store.getId()); | ||
throw new MenuOwnerNotMatchException("권한없는 사용자가 메뉴 가격 수정을 시도했습니다."); | ||
} | ||
|
||
long updatedPrice = menu.updatePrice(cmd.updatePrice()); | ||
log.info("Store({}) 의 메뉴({}) 가격을 ({})로 수정했습니다.", store.getId(), menu.getId(), cmd.updatePrice()); | ||
|
||
return updatedPrice; | ||
} | ||
} |
15 changes: 15 additions & 0 deletions
15
src/main/java/camp/woowak/lab/menu/service/command/MenuPriceUpdateCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package camp.woowak.lab.menu.service.command; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @param vendorId 업데이트를 시도하는 vendor의 id | ||
* @param menuId 업데이트 할 menu의 id | ||
* @param updatePrice 업데이트 할 가격 | ||
*/ | ||
public record MenuPriceUpdateCommand( | ||
UUID vendorId, | ||
Long menuId, | ||
Long updatePrice | ||
) { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
src/main/java/camp/woowak/lab/web/dto/request/store/MenuPriceUpdateRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package camp.woowak.lab.web.dto.request.store; | ||
|
||
import jakarta.validation.constraints.Min; | ||
import jakarta.validation.constraints.NotNull; | ||
|
||
public record MenuPriceUpdateRequest( | ||
@Min(value = 1, message = "price값은 음수 혹은 0이 될 수 없습니다.") | ||
@NotNull(message = "price값은 필수 입니다.") | ||
Long price | ||
) { | ||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/camp/woowak/lab/web/dto/response/store/MenuPriceUpdateResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package camp.woowak.lab.web.dto.response.store; | ||
|
||
public record MenuPriceUpdateResponse( | ||
long updatedPrice | ||
) { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.