diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java b/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java index 95f08d3a..4099bf40 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java @@ -9,7 +9,8 @@ @SpringBootApplication(scanBasePackages = { "com.nowait.applicationadmin", "com.nowait.infraaws", - "com.nowait.adminsecurity" + "com.nowait.adminsecurity", + "com.nowait.config" }) @EntityScan(basePackages = { "com.nowait.menu.entity", diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuImageService.java b/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuImageService.java index bc884793..ba1a7b77 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuImageService.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuImageService.java @@ -8,6 +8,9 @@ import com.nowait.infraaws.s3.S3Service; import com.nowait.menu.entity.Menu; import com.nowait.menu.entity.MenuImage; +import com.nowait.menu.exception.MenuImageEmptyException; +import com.nowait.menu.exception.MenuImageNotFoundException; +import com.nowait.menu.exception.MenuNotFoundException; import com.nowait.menu.repository.MenuImageRepository; import com.nowait.menu.repository.MenuRepository; @@ -23,10 +26,13 @@ public class MenuImageService { @Transactional public MenuImageUploadResponse save(Long menuId, MultipartFile file) { + if (file == null || file.isEmpty()) { + throw new MenuImageEmptyException(); + } String type = "menu"; Menu menu = menuRepository.findById(menuId) - .orElseThrow(() -> new IllegalArgumentException("Menu not found with id: " + menuId)); + .orElseThrow(MenuNotFoundException::new); S3Service.S3UploadResult uploadResult = s3Service.upload(type, menuId, file).join(); @@ -46,7 +52,7 @@ public MenuImageUploadResponse save(Long menuId, MultipartFile file) { @Transactional public void delete(Long id) { MenuImage menuImage = menuImageRepository.findById(id) - .orElseThrow(() -> new IllegalArgumentException("MenuImage not found with id: " + id)); + .orElseThrow(MenuImageNotFoundException::new); s3Service.delete(menuImage.getFileKey()); menuImageRepository.delete(menuImage); diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuService.java b/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuService.java index d5afc825..a0c25374 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuService.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/menu/service/MenuService.java @@ -13,8 +13,10 @@ import com.nowait.applicationadmin.menu.dto.MenuUpdateRequest; import com.nowait.menu.entity.Menu; import com.nowait.menu.entity.MenuImage; +import com.nowait.menu.exception.MenuNotFoundException; import com.nowait.menu.repository.MenuImageRepository; import com.nowait.menu.repository.MenuRepository; +import com.nowait.order.exception.OrderParameterEmptyException; import lombok.RequiredArgsConstructor; @@ -53,8 +55,12 @@ public MenuReadResponse getAllMenusByStoreId(Long storeId) { @Transactional(readOnly = true) public MenuReadDto getMenuById(Long storeId, Long menuId) { + if (storeId == null || menuId == null) { + throw new OrderParameterEmptyException(); + } + Menu menu = menuRepository.findByStoreIdAndIdAndDeletedFalse(storeId, menuId) - .orElseThrow(() -> new IllegalArgumentException("Menu not found with id: " + menuId)); + .orElseThrow(MenuNotFoundException::new); List images = menuImageRepository.findByMenu(menu); List imageDto = images.stream() @@ -68,7 +74,7 @@ public MenuReadDto getMenuById(Long storeId, Long menuId) { @Transactional public MenuReadDto updateMenu(Long menuId, MenuUpdateRequest request) { Menu menu = menuRepository.findByIdAndDeletedFalse(menuId) - .orElseThrow(() -> new IllegalArgumentException("Menu not found with id: " + menuId)); + .orElseThrow(MenuNotFoundException::new); menu.updateInfo( request.getName(), @@ -89,7 +95,7 @@ public MenuReadDto updateMenu(Long menuId, MenuUpdateRequest request) { @Transactional public String deleteMenu(Long menuId) { Menu menu = menuRepository.findById(menuId) - .orElseThrow(() -> new IllegalArgumentException("Menu is already deleted with id: " + menuId)); + .orElseThrow(MenuNotFoundException::new); menu.markAsDeleted(); menuRepository.save(menu); @@ -100,7 +106,7 @@ public String deleteMenu(Long menuId) { @Transactional public Boolean toggleSoldOut(Long menuId) { Menu menu = menuRepository.findById(menuId) - .orElseThrow(() -> new IllegalArgumentException("해당 메뉴가 존재하지 않습니다.")); + .orElseThrow(MenuNotFoundException::new); menu.toggleSoldOut(); menuRepository.save(menu); diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/reservation/exception/ReservationNotFoundException.java b/application-admin/src/main/java/com/nowait/applicationadmin/reservation/exception/ReservationNotFoundException.java deleted file mode 100644 index 491cc3f6..00000000 --- a/application-admin/src/main/java/com/nowait/applicationadmin/reservation/exception/ReservationNotFoundException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.nowait.applicationadmin.reservation.exception; - -import com.nowait.common.exception.ErrorMessage; - -public class ReservationNotFoundException extends RuntimeException { - public ReservationNotFoundException() { - super(ErrorMessage.NOTFOUND_RESERVATION.getMessage()); - } -} diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java b/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java index ee9831e9..6b3b7a2b 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java @@ -10,7 +10,6 @@ import com.nowait.applicationadmin.reservation.dto.ReservationGetResponseDto; import com.nowait.applicationadmin.reservation.dto.ReservationStatusSummaryDto; import com.nowait.applicationadmin.reservation.dto.ReservationStatusUpdateRequestDto; -import com.nowait.applicationadmin.reservation.exception.ReservationNotFoundException; import com.nowait.reservation.entity.Reservation; import com.nowait.reservation.repository.ReservationRepository; import com.nowait.common.enums.ReservationStatus; diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreImageService.java b/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreImageService.java index f0b5e833..8cb92dde 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreImageService.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreImageService.java @@ -12,6 +12,9 @@ import com.nowait.store.entity.Store; import com.nowait.store.entity.StoreImage; +import com.nowait.store.exception.StoreImageEmptyException; +import com.nowait.store.exception.StoreImageNotFoundException; +import com.nowait.store.exception.StoreNotFoundException; import com.nowait.store.repository.StoreImageRepository; import com.nowait.store.repository.StoreRepository; import com.nowait.infraaws.s3.S3Service; @@ -29,10 +32,11 @@ public class StoreImageService { @Transactional public List saveAll(Long storeId, List files) { + if (files == null || files.isEmpty()) throw new StoreImageEmptyException(); String type = "store"; Store store = storeRepository.findById(storeId) - .orElseThrow(() -> new EntityNotFoundException("Store not found with id: " + storeId)); + .orElseThrow(StoreNotFoundException::new); // 모든 파일을 비동기로 업로드 List> uploadFutures = new ArrayList<>(); @@ -52,8 +56,7 @@ public List saveAll(Long storeId, List // DB 저장은 모든 S3 업로드 성공 후 수행 List imageUploadResponses = new ArrayList<>(); - for (int i = 0; i < uploadResults.size(); i++) { - S3Service.S3UploadResult uploadResult = uploadResults.get(i); + for (S3Service.S3UploadResult uploadResult : uploadResults) { StoreImage storeImage = StoreImage.builder() .store(store) .imageUrl(uploadResult.url()) @@ -70,7 +73,7 @@ public List saveAll(Long storeId, List @Transactional public void delete(Long storeImageId) { StoreImage storeImage = storeImageRepository.findById(storeImageId) - .orElseThrow(() -> new EntityNotFoundException("StoreImage not found with id: " + storeImageId)); + .orElseThrow(StoreImageNotFoundException::new); s3Service.delete(storeImage.getFileKey()); storeImageRepository.delete(storeImage); diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java b/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java index 56b6406b..196f634f 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java @@ -12,6 +12,8 @@ import com.nowait.applicationadmin.store.dto.StoreUpdateRequest; import com.nowait.store.entity.Store; import com.nowait.store.entity.StoreImage; +import com.nowait.store.exception.StoreNotFoundException; +import com.nowait.store.exception.StoreParamEmptyException; import com.nowait.store.repository.StoreImageRepository; import com.nowait.store.repository.StoreRepository; @@ -28,6 +30,8 @@ public class StoreServiceImpl implements StoreService { @Override @Transactional public StoreCreateResponse createStore(StoreCreateRequest request) { + if (request == null) throw new StoreParamEmptyException(); + Store toSave = request.toEntity(); Store saved = storeRepository.save(toSave); @@ -38,8 +42,10 @@ public StoreCreateResponse createStore(StoreCreateRequest request) { @Override @Transactional(readOnly = true) public StoreReadDto getStoreByStoreId(Long storeId) { + if (storeId == null) throw new StoreParamEmptyException(); + Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId) - .orElseThrow(() -> new EntityNotFoundException(storeId + " store not found.")); + .orElseThrow(StoreNotFoundException::new); List images = storeImageRepository.findByStore(store); List imageDto = images.stream() @@ -52,8 +58,10 @@ public StoreReadDto getStoreByStoreId(Long storeId) { @Override @Transactional public StoreReadDto updateStore(Long storeId, StoreUpdateRequest request) { + if (storeId == null || request == null) throw new StoreParamEmptyException(); + Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId) - .orElseThrow(() -> new EntityNotFoundException(storeId + " store not found.")); + .orElseThrow(StoreNotFoundException::new); store.updateInfo( request.getName(), @@ -74,8 +82,12 @@ public StoreReadDto updateStore(Long storeId, StoreUpdateRequest request) { @Override @Transactional public String deleteStore(Long storeId) { + if (storeId == null) { + throw new StoreParamEmptyException(); + } + Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId) - .orElseThrow(() -> new EntityNotFoundException(storeId + " store not found.")); + .orElseThrow(StoreNotFoundException::new); store.markAsDeleted(); storeRepository.save(store); diff --git a/application-user/src/main/java/com/nowait/applicationuser/ApiUserApplication.java b/application-user/src/main/java/com/nowait/applicationuser/ApiUserApplication.java index 7e59d07d..fcfb659f 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/ApiUserApplication.java +++ b/application-user/src/main/java/com/nowait/applicationuser/ApiUserApplication.java @@ -10,7 +10,8 @@ @SpringBootApplication(scanBasePackages = { "com.nowait.applicationuser", "com.nowait.frontsecurity", - "com.nowait.externaloauth" + "com.nowait.externaloauth", + "com.nowait.config" }) @EntityScan(basePackages = { "com.nowait.menu.entity", @@ -19,7 +20,6 @@ "com.nowait.user.entity", "com.nowait.bookmark.entity", "com.nowait.reservation.entity", - "com.nowait.order.entity", "com.nowait.order.entity" }) @EnableJpaRepositories(basePackages = { diff --git a/application-user/src/main/java/com/nowait/applicationuser/menu/service/MenuService.java b/application-user/src/main/java/com/nowait/applicationuser/menu/service/MenuService.java index bd28fada..f9309c3e 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/menu/service/MenuService.java +++ b/application-user/src/main/java/com/nowait/applicationuser/menu/service/MenuService.java @@ -10,6 +10,8 @@ import com.nowait.applicationuser.menu.dto.MenuReadResponse; import com.nowait.menu.entity.Menu; import com.nowait.menu.entity.MenuImage; +import com.nowait.menu.exception.MenuNotFoundException; +import com.nowait.menu.exception.MenuParamEmptyException; import com.nowait.menu.repository.MenuImageRepository; import com.nowait.menu.repository.MenuRepository; @@ -25,6 +27,9 @@ public class MenuService { @Transactional(readOnly = true) public MenuReadResponse getAllMenusByStoreId(Long storeId) { + if (storeId == null) { + throw new MenuParamEmptyException(); + } List menus = menuRepository.findAllByStoreIdAndDeletedFalse(storeId); List menuReadResponse = menus.stream() @@ -42,8 +47,12 @@ public MenuReadResponse getAllMenusByStoreId(Long storeId) { @Transactional(readOnly = true) public MenuReadDto getMenuById(Long storeId, Long menuId) { + if (storeId == null || menuId == null) { + throw new MenuParamEmptyException(); + } + Menu menu = menuRepository.findByStoreIdAndIdAndDeletedFalse(storeId, menuId) - .orElseThrow(() -> new IllegalArgumentException("Menu not found with id: " + menuId)); + .orElseThrow(MenuNotFoundException::new); List images = menuImageRepository.findByMenu(menu); List imageDto = images.stream() diff --git a/application-user/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java b/application-user/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java index e2a1aa09..14cb28fe 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java +++ b/application-user/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java @@ -11,6 +11,8 @@ import com.nowait.applicationuser.store.dto.StoreReadResponse; import com.nowait.store.entity.Store; import com.nowait.store.entity.StoreImage; +import com.nowait.store.exception.StoreNotFoundException; +import com.nowait.store.exception.StoreParamEmptyException; import com.nowait.store.repository.StoreImageRepository; import com.nowait.store.repository.StoreRepository; @@ -68,8 +70,10 @@ public StoreReadResponse getAllStoresByPage(Pageable pageable) { @Override @Transactional(readOnly = true) public StoreReadDto getStoreByStoreId(Long storeId) { + if (storeId == null) throw new StoreParamEmptyException(); + Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId) - .orElseThrow(() -> new EntityNotFoundException(storeId + " store not found.")); + .orElseThrow(StoreNotFoundException::new); List images = storeImageRepository.findByStore(store); List imageDto = images.stream() @@ -81,6 +85,10 @@ public StoreReadDto getStoreByStoreId(Long storeId) { @Override public List searchStoresByName(String name) { + if (name == null || name.isBlank()) { + throw new StoreParamEmptyException(); + } + List stores = storeRepository.findByNameContainingIgnoreCaseAndDeletedFalse(name); return stores.stream() .map(store -> { diff --git a/common/src/main/java/com/nowait/common/exception/ErrorMessage.java b/common/src/main/java/com/nowait/common/exception/ErrorMessage.java index d695104f..5fb5aecb 100644 --- a/common/src/main/java/com/nowait/common/exception/ErrorMessage.java +++ b/common/src/main/java/com/nowait/common/exception/ErrorMessage.java @@ -24,7 +24,22 @@ public enum ErrorMessage { // bookmark DUPLICATE_BOOKMARK("이미 북마크한 주점입니다.", "bookmark001"), - NOT_OWN_BOOKMARK("해당 주점은 다른 사용자가 북마크한 주점입니다.", "bookmark002"); + NOT_OWN_BOOKMARK("해당 주점은 다른 사용자가 북마크한 주점입니다.", "bookmark002"), + + // menu + MENU_PARAMETER_EMPTY("메뉴 생성 시 파라미터 정보가 없습니다.", "menu001"), + MENU_NOT_FOUND("해당 메뉴를 찾을 수 없습니다.", "menu001"), + + // store + STORE_PARAMETER_EMPTY("주점 생성 시 파라미터 정보가 없습니다.", "store001"), + STORE_NOT_FOUND("해당 주점을 찾을 수 없습니다.", "store002"), + + // image + IMAGE_FILE_EMPTY("이미지 파일을 업로드 해주세요", "image001"), + IMAGE_FILE_NOT_FOUND("이미지 파일을 업로드 해주세요", "image001"), + + // search + SEARCH_PARAMETER_EMPTY("검색어가 비어있습니다.", "search001"); private final String message; private final String code; diff --git a/domain-menu/src/main/java/com/nowait/menu/exception/MenuImageEmptyException.java b/domain-menu/src/main/java/com/nowait/menu/exception/MenuImageEmptyException.java new file mode 100644 index 00000000..bd0c146f --- /dev/null +++ b/domain-menu/src/main/java/com/nowait/menu/exception/MenuImageEmptyException.java @@ -0,0 +1,9 @@ +package com.nowait.menu.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class MenuImageEmptyException extends RuntimeException { + public MenuImageEmptyException() { + super(ErrorMessage.IMAGE_FILE_EMPTY.getMessage()); + } +} diff --git a/domain-menu/src/main/java/com/nowait/menu/exception/MenuImageNotFoundException.java b/domain-menu/src/main/java/com/nowait/menu/exception/MenuImageNotFoundException.java new file mode 100644 index 00000000..87726f72 --- /dev/null +++ b/domain-menu/src/main/java/com/nowait/menu/exception/MenuImageNotFoundException.java @@ -0,0 +1,9 @@ +package com.nowait.menu.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class MenuImageNotFoundException extends RuntimeException { + public MenuImageNotFoundException() { + super(ErrorMessage.IMAGE_FILE_NOT_FOUND.getMessage()); + } +} diff --git a/domain-menu/src/main/java/com/nowait/menu/exception/MenuNotFoundException.java b/domain-menu/src/main/java/com/nowait/menu/exception/MenuNotFoundException.java new file mode 100644 index 00000000..b119fe65 --- /dev/null +++ b/domain-menu/src/main/java/com/nowait/menu/exception/MenuNotFoundException.java @@ -0,0 +1,9 @@ +package com.nowait.menu.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class MenuNotFoundException extends RuntimeException { + public MenuNotFoundException() { + super(ErrorMessage.MENU_NOT_FOUND.getMessage()); + } +} diff --git a/domain-menu/src/main/java/com/nowait/menu/exception/MenuParamEmptyException.java b/domain-menu/src/main/java/com/nowait/menu/exception/MenuParamEmptyException.java new file mode 100644 index 00000000..d743cd6c --- /dev/null +++ b/domain-menu/src/main/java/com/nowait/menu/exception/MenuParamEmptyException.java @@ -0,0 +1,9 @@ +package com.nowait.menu.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class MenuParamEmptyException extends RuntimeException { + public MenuParamEmptyException() { + super(ErrorMessage.MENU_PARAMETER_EMPTY.getMessage()); + } +} diff --git a/domain-store/src/main/java/com/nowait/store/exception/StoreImageEmptyException.java b/domain-store/src/main/java/com/nowait/store/exception/StoreImageEmptyException.java new file mode 100644 index 00000000..0f65bb1e --- /dev/null +++ b/domain-store/src/main/java/com/nowait/store/exception/StoreImageEmptyException.java @@ -0,0 +1,9 @@ +package com.nowait.store.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class StoreImageEmptyException extends RuntimeException { + public StoreImageEmptyException() { + super(ErrorMessage.IMAGE_FILE_EMPTY.getMessage()); + } +} diff --git a/domain-store/src/main/java/com/nowait/store/exception/StoreImageNotFoundException.java b/domain-store/src/main/java/com/nowait/store/exception/StoreImageNotFoundException.java new file mode 100644 index 00000000..aff9e0c0 --- /dev/null +++ b/domain-store/src/main/java/com/nowait/store/exception/StoreImageNotFoundException.java @@ -0,0 +1,9 @@ +package com.nowait.store.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class StoreImageNotFoundException extends RuntimeException { + public StoreImageNotFoundException() { + super(ErrorMessage.IMAGE_FILE_NOT_FOUND.getMessage()); + } +} diff --git a/domain-store/src/main/java/com/nowait/store/exception/StoreKeywordEmptyException.java b/domain-store/src/main/java/com/nowait/store/exception/StoreKeywordEmptyException.java new file mode 100644 index 00000000..2b1fecc7 --- /dev/null +++ b/domain-store/src/main/java/com/nowait/store/exception/StoreKeywordEmptyException.java @@ -0,0 +1,9 @@ +package com.nowait.store.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class StoreKeywordEmptyException extends RuntimeException { + public StoreKeywordEmptyException() { + super(ErrorMessage.STORE_PARAMETER_EMPTY.getMessage()); + } +} diff --git a/domain-store/src/main/java/com/nowait/store/exception/StoreNotFoundException.java b/domain-store/src/main/java/com/nowait/store/exception/StoreNotFoundException.java new file mode 100644 index 00000000..15d485db --- /dev/null +++ b/domain-store/src/main/java/com/nowait/store/exception/StoreNotFoundException.java @@ -0,0 +1,9 @@ +package com.nowait.store.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class StoreNotFoundException extends RuntimeException { + public StoreNotFoundException() { + super(ErrorMessage.STORE_NOT_FOUND.getMessage()); + } +} diff --git a/domain-store/src/main/java/com/nowait/store/exception/StoreParamEmptyException.java b/domain-store/src/main/java/com/nowait/store/exception/StoreParamEmptyException.java new file mode 100644 index 00000000..5dc0bf13 --- /dev/null +++ b/domain-store/src/main/java/com/nowait/store/exception/StoreParamEmptyException.java @@ -0,0 +1,9 @@ +package com.nowait.store.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class StoreParamEmptyException extends RuntimeException { + public StoreParamEmptyException() { + super(ErrorMessage.STORE_PARAMETER_EMPTY.getMessage()); + } +}