From 4e4abae9f538c2a936dd941d05cee82df46a2a23 Mon Sep 17 00:00:00 2001 From: sssukho Date: Sun, 12 Jan 2025 02:32:08 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20common,=20db=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bp-app-api/build.gradle | 3 +- .../bp_app_api/BpAppApiApplication.java | 2 +- ...sitoryBean.java => ImageProviderBean.java} | 22 ++--- .../config/WebSecurityConfiguration.java | 4 +- ...NaverCloudPlatformObjectStorageConfig.java | 42 -------- ...PlatformObjectStorageConfigProperties.java | 43 ++++++++ .../config/properties/StorageConfig.java | 6 +- .../bp_app_api/controller/AuthController.java | 8 +- .../controller/ImageController.java | 8 +- .../controller/MemberController.java | 4 +- .../controller/ReviewController.java | 8 +- .../bp_app_api/controller/ShopController.java | 8 +- .../FindReviewListRequestParameters.java | 23 ----- .../entity/embedded/BusinessTime.java | 27 ----- .../enumeration/ShopSearchType.java | 6 +- .../exception/AlreadyProcessedException.java | 15 --- .../exception/BpCustomException.java | 20 ++++ .../exception/ConfigurationException.java | 25 ----- .../exception/GlobalExceptionHandler.java | 90 +---------------- .../exception/InvalidIdException.java | 33 ------- .../exception/InvalidRequestException.java | 16 --- .../exception/NotFoundException.java | 15 --- .../ParameterOutOfRangeException.java | 20 ---- .../exception/StorageException.java | 20 ---- .../exception/UnableToLikeException.java | 8 -- .../exception/UnableToProcessException.java | 19 ---- .../provider/image/ImageProvider.java | 14 +++ .../provider/image/NCPImageProvider.java | 46 +++++++++ .../repository/image/ImageRepository.java | 14 --- ...rCloudPlatformObjectStorageRepository.java | 44 --------- .../auth/EmailCertificationRequest.java | 2 +- ...EmailCertificationVerificationRequest.java | 2 +- .../auth/EmailDuplicatedRequest.java | 2 +- .../UserRoleMemberRegistrationRequest.java | 2 +- .../FindReviewListRequestParameters.java | 18 ++++ .../shop/ShopListFindRequestParameters.java | 11 ++- .../shop/ShopRegistrationRequest.java | 2 +- .../ErrorResponseMessage.java | 3 +- .../common => response}/ResponseMessage.java | 2 +- .../auth/EmailDuplicatedResult.java | 2 +- .../image/PreSignedGetUrlResult.java | 2 +- .../image/PreSignedPutUrlResult.java | 2 +- .../UserRoleMemberRegistrationResult.java | 2 +- .../review/ReviewFindResult.java | 2 +- .../review/ReviewListFindResult.java | 2 +- .../shop/ShopDetailFindResult.java | 6 +- .../shop/ShopFindResult.java | 2 +- .../shop/ShopListFindResult.java | 4 +- .../shop/ShopRegistrationResult.java | 2 +- .../bp_app_api/service/AuthService.java | 27 +++-- .../bp_app_api/service/CategoryService.java | 4 +- .../bp_app_api/service/FacilityService.java | 45 ++------- .../bp_app_api/service/ImageService.java | 38 ------- .../bp_app_api/service/MemberService.java | 48 ++++++--- .../service/OperationCategoryService.java | 14 +-- .../bp_app_api/service/OperationService.java | 47 ++------- .../service/ReservationService.java | 11 +-- .../bp_app_api/service/ReviewService.java | 28 +++--- .../service/ShopCategoryService.java | 6 +- .../service/ShopFacilityService.java | 15 ++- .../bp_app_api/service/ShopLikeService.java | 6 +- .../service/ShopOperationService.java | 14 +-- .../bp_app_api/service/ShopService.java | 75 +++++++++----- .../src/main/resources/application-local.yml | 4 +- .../src/main/resources/application-prod.yml | 7 +- .../src/main/resources/application-test.yml | 7 +- bp-app-api/src/main/resources/auth.yml | 1 - .../bp_app_api/JasyptTest.java | 68 +++++++++++++ .../controller/ImageControllerTest.java | 18 ++-- .../controller/ReviewControllerTest.java | 17 ++-- .../controller/ShopControllerTest.java | 26 ++--- .../integration/AuthIntegrationTest.java | 23 ++--- .../integration/MemberIntegrationTest.java | 4 +- .../ShopServiceRepositoryIntegrationTest.java | 98 +++++++++---------- .../bp_app_api/service/ReviewServiceTest.java | 47 ++++----- .../bp_app_api/service/ShopServiceTest.java | 37 +++---- bp-common/build.gradle | 3 + bp-domain-mysql/build.gradle | 19 ++++ .../bp_mysql/BpDomainMySqlApplication.java | 8 ++ .../bp_mysql/config/JpaConfig.java | 12 +++ .../bp_mysql}/entity/BaseEntity.java | 4 +- .../bp_mysql}/entity/Category.java | 4 +- .../bp_mysql}/entity/EmailCertification.java | 4 +- .../bp_mysql/entity}/EntityType.java | 2 +- .../bp_mysql}/entity/Facility.java | 4 +- .../bp_mysql}/entity/Member.java | 43 +++----- .../bp_mysql}/entity/Operation.java | 4 +- .../bp_mysql}/entity/OperationCategory.java | 2 +- .../bp_mysql}/entity/Reservation.java | 4 +- .../bp_mysql}/entity/Review.java | 10 +- .../bp_mysql}/entity/Shop.java | 50 ++-------- .../bp_mysql}/entity/ShopCategory.java | 2 +- .../bp_mysql}/entity/ShopFacility.java | 2 +- .../bp_mysql}/entity/ShopLike.java | 2 +- .../bp_mysql}/entity/ShopOperation.java | 2 +- .../bp_mysql}/entity/embedded/Address.java | 14 ++- .../entity/embedded/BusinessTime.java | 44 +++++++++ .../bp_mysql/entity/enumerated}/AuthType.java | 4 +- .../entity/enumerated}/MemberStatus.java | 2 +- .../bp_mysql/entity/enumerated/UserRole.java | 12 +-- .../listener/CustomEntityListener.java | 4 +- .../bp_mysql/enums}/OrderType.java | 4 +- .../bp_mysql/enums}/ReviewSortBy.java | 5 +- .../exception/EnumMismatchException.java | 2 +- .../repository/CategoryRepository.java | 4 +- .../EmailCertificationRepository.java | 4 +- .../repository/FacilityRepository.java | 4 +- .../repository/MemberRepository.java | 4 +- .../OperationCategoryRepository.java | 6 +- .../repository/OperationRepository.java | 4 +- .../repository/ReservationRepository.java | 4 +- .../repository/ReviewRepository.java | 4 +- .../repository/ShopCategoryRepository.java | 6 +- .../repository/ShopFacilityRepository.java | 6 +- .../repository/ShopLikeRepository.java | 6 +- .../repository/ShopOperationRepository.java | 6 +- .../bp_mysql}/repository/ShopRepository.java | 4 +- .../mysql-config/application-local.yml | 0 .../mysql-config/application-prod.yml | 2 +- .../BpDomainMysqlApplicationTests.java | 13 +++ .../s3-client-config/application-local.yml | 0 .../s3-client-config/application-prod.yml | 0 .../naver-cloud-platform-auth.yml | 0 bp-utils/build.gradle | 3 + .../bp_utils}/UUIDGenerator.java | 2 +- .../beautify_project/bp_utils}/Validator.java | 2 +- settings.gradle | 2 +- 127 files changed, 802 insertions(+), 974 deletions(-) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/bean/{ImageRepositoryBean.java => ImageProviderBean.java} (53%) delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfig.java create mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfigProperties.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/FindReviewListRequestParameters.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/embedded/BusinessTime.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/AlreadyProcessedException.java create mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/BpCustomException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ConfigurationException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidIdException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidRequestException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/NotFoundException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ParameterOutOfRangeException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/StorageException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToLikeException.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToProcessException.java create mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/ImageProvider.java create mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/NCPImageProvider.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/ImageRepository.java delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/NaverCloudPlatformObjectStorageRepository.java rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => request}/auth/EmailCertificationRequest.java (68%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => request}/auth/EmailCertificationVerificationRequest.java (80%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => request}/auth/EmailDuplicatedRequest.java (68%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => request}/member/UserRoleMemberRegistrationRequest.java (80%) create mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/review/FindReviewListRequestParameters.java rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => request}/shop/ShopListFindRequestParameters.java (52%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => request}/shop/ShopRegistrationRequest.java (95%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto/common => response}/ErrorResponseMessage.java (97%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto/common => response}/ResponseMessage.java (90%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/auth/EmailDuplicatedResult.java (53%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/image/PreSignedGetUrlResult.java (80%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/image/PreSignedPutUrlResult.java (83%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/member/UserRoleMemberRegistrationResult.java (54%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/review/ReviewFindResult.java (94%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/review/ReviewListFindResult.java (90%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/shop/ShopDetailFindResult.java (64%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/shop/ShopFindResult.java (95%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/shop/ShopListFindResult.java (92%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/{dto => response}/shop/ShopRegistrationResult.java (51%) delete mode 100644 bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ImageService.java create mode 100644 bp-app-api/src/test/java/com/beautify_project/bp_app_api/JasyptTest.java create mode 100644 bp-common/build.gradle create mode 100644 bp-domain-mysql/build.gradle create mode 100644 bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/BpDomainMySqlApplication.java create mode 100644 bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/config/JpaConfig.java rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/BaseEntity.java (85%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/Category.java (90%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/EmailCertification.java (92%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity}/EntityType.java (69%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/Facility.java (89%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/Member.java (50%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/Operation.java (90%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/OperationCategory.java (97%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/Reservation.java (92%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/Review.java (88%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/Shop.java (66%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/ShopCategory.java (96%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/ShopFacility.java (96%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/ShopLike.java (97%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/ShopOperation.java (97%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/entity/embedded/Address.java (77%) create mode 100644 bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/embedded/BusinessTime.java rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated}/AuthType.java (71%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated}/MemberStatus.java (55%) rename bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/Role.java => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/UserRole.java (54%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity}/listener/CustomEntityListener.java (74%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums}/OrderType.java (73%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums}/ReviewSortBy.java (81%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/exception/EnumMismatchException.java (90%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/CategoryRepository.java (72%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/EmailCertificationRepository.java (77%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/FacilityRepository.java (72%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/MemberRepository.java (65%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/OperationCategoryRepository.java (63%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/OperationRepository.java (73%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/ReservationRepository.java (57%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/ReviewRepository.java (65%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/ShopCategoryRepository.java (54%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/ShopFacilityRepository.java (62%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/ShopLikeRepository.java (54%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/ShopOperationRepository.java (62%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api => bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql}/repository/ShopRepository.java (76%) rename bp-app-api/src/main/resources/datasource-local.yml => bp-domain-mysql/src/main/resources/mysql-config/application-local.yml (100%) rename bp-app-api/src/main/resources/datasource-prod.yml => bp-domain-mysql/src/main/resources/mysql-config/application-prod.yml (95%) create mode 100644 bp-domain-mysql/src/test/java/com/beautify_project/bp_mysql/BpDomainMysqlApplicationTests.java rename bp-app-api/src/main/resources/storage-local.yml => bp-s3-client/src/main/resources/s3-client-config/application-local.yml (100%) rename bp-app-api/src/main/resources/storage-prod.yml => bp-s3-client/src/main/resources/s3-client-config/application-prod.yml (100%) rename bp-s3-client/src/main/resources/{ => s3-client-config}/naver-cloud-platform-auth.yml (100%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils => bp-utils/src/main/java/com/beautify_project/bp_utils}/UUIDGenerator.java (86%) rename {bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils => bp-utils/src/main/java/com/beautify_project/bp_utils}/Validator.java (93%) diff --git a/bp-app-api/build.gradle b/bp-app-api/build.gradle index c844cb5..d949913 100644 --- a/bp-app-api/build.gradle +++ b/bp-app-api/build.gradle @@ -8,10 +8,11 @@ dependencies { implementation project(':bp-kafka-event-publisher') implementation project(':bp-utils') implementation project(':bp-s3-client') + implementation project(':bp-domain-mysql') implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' implementation 'org.springframework.boot:spring-boot-starter-mail' implementation 'org.apache.commons:commons-lang3:3.14.0' diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/BpAppApiApplication.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/BpAppApiApplication.java index f4f9353..4d51cee 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/BpAppApiApplication.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/BpAppApiApplication.java @@ -4,7 +4,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.ConfigurationPropertiesScan; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.beautify_project"}) @ConfigurationPropertiesScan("com.beautify_project.bp_app_api.config") public class BpAppApiApplication { diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/bean/ImageRepositoryBean.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/bean/ImageProviderBean.java similarity index 53% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/bean/ImageRepositoryBean.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/bean/ImageProviderBean.java index 96dc42c..f48b562 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/bean/ImageRepositoryBean.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/bean/ImageProviderBean.java @@ -1,12 +1,11 @@ package com.beautify_project.bp_app_api.bean; - -import com.beautify_project.bp_app_api.config.properties.NaverCloudPlatformObjectStorageConfig; +import com.beautify_project.bp_app_api.config.properties.NaverCloudPlatformObjectStorageConfigProperties; import com.beautify_project.bp_app_api.config.properties.StorageConfig; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.exception.ConfigurationException; -import com.beautify_project.bp_app_api.repository.image.ImageRepository; -import com.beautify_project.bp_app_api.repository.image.NaverCloudPlatformObjectStorageRepository; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.provider.image.ImageProvider; +import com.beautify_project.bp_app_api.provider.image.NCPImageProvider; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -16,19 +15,18 @@ @Slf4j @Configuration @RequiredArgsConstructor -public class ImageRepositoryBean { +public class ImageProviderBean { private static final String STORAGE_TYPE_NAVER_CLOUD_PLATFORM_OBJECT_STORAGE = "NAVER-CLOUD-PLATFORM-OBJECT-STORAGE"; private final StorageConfig storageConfig; - private final NaverCloudPlatformObjectStorageConfig ncpObjectStorageConfig; + private final NaverCloudPlatformObjectStorageConfigProperties ncpObjectStorageConfig; @Bean - ImageRepository imageRepository() { + ImageProvider imageProvider() { final String storageType = storageConfig.type().toUpperCase(); if (StringUtils.equals(STORAGE_TYPE_NAVER_CLOUD_PLATFORM_OBJECT_STORAGE, storageType)) { - return new NaverCloudPlatformObjectStorageRepository(ncpObjectStorageConfig); + return new NCPImageProvider(ncpObjectStorageConfig); } - - throw new ConfigurationException("설정값이 맞지 않아 등록할 repository 가 없습니다", ErrorCode.IS001); + throw new BpCustomException("설정값이 올바르지 않아 등록할 image provider 가 없습니다.", ErrorCode.IS001); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/WebSecurityConfiguration.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/WebSecurityConfiguration.java index f848bec..6f89e34 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/WebSecurityConfiguration.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/WebSecurityConfiguration.java @@ -1,7 +1,7 @@ package com.beautify_project.bp_app_api.config; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.ServletException; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfig.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfig.java deleted file mode 100644 index 92750e9..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfig.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.beautify_project.bp_app_api.config.properties; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.exception.ConfigurationException; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.boot.context.properties.ConfigurationProperties; - - -@ConfigurationProperties(prefix = "ncp") -@Slf4j -public record NaverCloudPlatformObjectStorageConfig(String enabled, String endpoint, String regionName, String bucketName, String accessKey, - String secretKey) { - - public NaverCloudPlatformObjectStorageConfig { - validate(enabled, endpoint, regionName, bucketName, accessKey, secretKey); - } - - private void validate(String enabled, String endpoint, String regionName, String bucketName, String accessKey, - String secretKey) { - if (StringUtils.isEmpty(enabled) || StringUtils.equals("FALSE", enabled.toUpperCase())) { - log.info("NaverCloudPlatformObjectStorageRepository is disabled"); - return; - } - - if (StringUtils.isEmpty(endpoint) || StringUtils.isEmpty(regionName) || - StringUtils.isEmpty(bucketName) || StringUtils.isEmpty(accessKey) - || StringUtils.isEmpty(secretKey)) { - throw new ConfigurationException("naver cloud platform 관련 설정값이 올바르지 않습니다.", - ErrorCode.IS001); - } - } - - @Override - public String toString() { - return "NaverCloudPlatformObjectStorageConfig{" + - "bucketName='" + bucketName + '\'' + - ", regionName='" + regionName + '\'' + - ", endpoint='" + endpoint + '\'' + - '}'; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfigProperties.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfigProperties.java new file mode 100644 index 0000000..982bf97 --- /dev/null +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/NaverCloudPlatformObjectStorageConfigProperties.java @@ -0,0 +1,43 @@ +package com.beautify_project.bp_app_api.config.properties; + +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_utils.Validator; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.context.properties.ConfigurationProperties; + + +@ConfigurationProperties(prefix = "ncp") +@Slf4j +public record NaverCloudPlatformObjectStorageConfigProperties(String enabled, String endpoint, String regionName, String bucketName, String accessKey, + String secretKey) { + + public NaverCloudPlatformObjectStorageConfigProperties { + validate(enabled, endpoint, regionName, bucketName, accessKey, secretKey); + } + + private void validate(String enabled, String endpoint, String regionName, String bucketName, String accessKey, + String secretKey) { + + if (Validator.isEmptyOrBlank(enabled) || StringUtils.equals("FALSE", + enabled.toUpperCase())) { + log.info("NaverCloudPlatformObjectStorageRepository is disabled"); + return; + } + + if (Validator.isEmptyOrBlank(endpoint) || Validator.isEmptyOrBlank(regionName) + || Validator.isEmptyOrBlank(bucketName) || Validator.isEmptyOrBlank(accessKey)) { + throw new BpCustomException("Naver cloud paltform 관련 설정값이 올바르지 않습니다.", ErrorCode.IS001); + } + } + + @Override + public String toString() { + return "NaverCloudPlatformObjectStorageConfig{" + + "bucketName='" + bucketName + '\'' + + ", regionName='" + regionName + '\'' + + ", endpoint='" + endpoint + '\'' + + '}'; + } +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/StorageConfig.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/StorageConfig.java index e44f382..5b0a922 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/StorageConfig.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/config/properties/StorageConfig.java @@ -1,7 +1,7 @@ package com.beautify_project.bp_app_api.config.properties; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.exception.ConfigurationException; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; import org.apache.commons.lang3.StringUtils; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -14,7 +14,7 @@ public record StorageConfig (String type) { private void validate(final String type) { if (StringUtils.isEmpty(type)) { - throw new ConfigurationException("storage 설정값이 올바르지 않습니다.", ErrorCode.IS001); + throw new BpCustomException("storage 설정값이 올바르지 않습니다.", ErrorCode.IS001); } } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/AuthController.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/AuthController.java index 9e7ff0e..6818a18 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/AuthController.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/AuthController.java @@ -1,9 +1,9 @@ package com.beautify_project.bp_app_api.controller; -import com.beautify_project.bp_app_api.dto.auth.EmailCertificationRequest; -import com.beautify_project.bp_app_api.dto.auth.EmailCertificationVerificationRequest; -import com.beautify_project.bp_app_api.dto.auth.EmailDuplicatedRequest; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; +import com.beautify_project.bp_app_api.request.auth.EmailCertificationRequest; +import com.beautify_project.bp_app_api.request.auth.EmailCertificationVerificationRequest; +import com.beautify_project.bp_app_api.request.auth.EmailDuplicatedRequest; +import com.beautify_project.bp_app_api.response.ResponseMessage; import com.beautify_project.bp_app_api.service.AuthService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ImageController.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ImageController.java index 4774f43..3a73e89 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ImageController.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ImageController.java @@ -1,7 +1,7 @@ package com.beautify_project.bp_app_api.controller; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.service.ImageService; +import com.beautify_project.bp_app_api.provider.image.ImageProvider; +import com.beautify_project.bp_app_api.response.ResponseMessage; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; @@ -12,7 +12,7 @@ @RequiredArgsConstructor public class ImageController { - private final ImageService imageService; + private final ImageProvider imageProvider; /** * Shop 이미지 등록을 위한 preSignedUrl 발급 @@ -20,6 +20,6 @@ public class ImageController { @GetMapping("/v1/images/presigned-put-url") @ResponseStatus(code = HttpStatus.OK) ResponseMessage issuePreSignedPutUrl() { - return imageService.issuePreSignedPutUrlWrappingResponseMessage(); + return ResponseMessage.createResponseMessage(imageProvider.providePreSignedPutUrl()); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/MemberController.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/MemberController.java index 681b2f1..1b3fec2 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/MemberController.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/MemberController.java @@ -1,7 +1,7 @@ package com.beautify_project.bp_app_api.controller; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.member.UserRoleMemberRegistrationRequest; +import com.beautify_project.bp_app_api.request.member.UserRoleMemberRegistrationRequest; +import com.beautify_project.bp_app_api.response.ResponseMessage; import com.beautify_project.bp_app_api.service.MemberService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ReviewController.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ReviewController.java index 67379a9..5c75560 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ReviewController.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ReviewController.java @@ -1,10 +1,10 @@ package com.beautify_project.bp_app_api.controller; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.review.FindReviewListRequestParameters; -import com.beautify_project.bp_app_api.enumeration.OrderType; -import com.beautify_project.bp_app_api.enumeration.ReviewSortBy; +import com.beautify_project.bp_app_api.request.review.FindReviewListRequestParameters; +import com.beautify_project.bp_app_api.response.ResponseMessage; import com.beautify_project.bp_app_api.service.ReviewService; +import com.beautify_project.bp_mysql.enums.OrderType; +import com.beautify_project.bp_mysql.enums.ReviewSortBy; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ShopController.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ShopController.java index b0c04fb..e618ffe 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ShopController.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/controller/ShopController.java @@ -1,9 +1,9 @@ package com.beautify_project.bp_app_api.controller; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.shop.ShopListFindRequestParameters; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest; -import com.beautify_project.bp_app_api.enumeration.OrderType; +import com.beautify_project.bp_app_api.request.shop.ShopListFindRequestParameters; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest; +import com.beautify_project.bp_app_api.response.ResponseMessage; +import com.beautify_project.bp_mysql.enums.OrderType; import com.beautify_project.bp_app_api.enumeration.ShopSearchType; import com.beautify_project.bp_app_api.service.ShopService; import jakarta.validation.Valid; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/FindReviewListRequestParameters.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/FindReviewListRequestParameters.java deleted file mode 100644 index 204502a..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/FindReviewListRequestParameters.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.beautify_project.bp_app_api.dto.review; - -import com.beautify_project.bp_app_api.enumeration.OrderType; -import com.beautify_project.bp_app_api.enumeration.ReviewSortBy; -import com.beautify_project.bp_app_api.exception.ParameterOutOfRangeException; - -public record FindReviewListRequestParameters( - String shopId, - ReviewSortBy sortBy, - Integer page, - Integer count, - OrderType orderType) { - - public FindReviewListRequestParameters { - validateCount(count); - } - - private void validateCount(Integer count) { - if (count > 100 || count < 0) { - throw new ParameterOutOfRangeException("count", String.valueOf(count)); - } - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/embedded/BusinessTime.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/embedded/BusinessTime.java deleted file mode 100644 index 0946bc0..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/embedded/BusinessTime.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.beautify_project.bp_app_api.entity.embedded; - -import jakarta.persistence.Embeddable; -import java.time.LocalTime; -import java.util.List; -import lombok.Builder; - -@Embeddable -@Builder -public record BusinessTime( - LocalTime openTime, - LocalTime closeTime, - LocalTime breakBeginTime, - LocalTime breakEndTime, - List offDayOfWeek) { - - @Override - public String toString() { - return "BusinessTime{" + - "openTime=" + openTime + - ", closeTime=" + closeTime + - ", breakBeginTime=" + breakBeginTime + - ", breakEndTime=" + breakEndTime + - ", offDayOfWeek=" + offDayOfWeek + - '}'; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/ShopSearchType.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/ShopSearchType.java index 44b4324..23c311c 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/ShopSearchType.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/ShopSearchType.java @@ -1,6 +1,7 @@ package com.beautify_project.bp_app_api.enumeration; -import com.beautify_project.bp_app_api.exception.EnumMismatchException; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; import lombok.Getter; import org.apache.commons.lang3.StringUtils; @@ -28,7 +29,8 @@ public static ShopSearchType from(final String input) { try { return valueOf(inputUpperCase); } catch (IllegalArgumentException e) { - throw new EnumMismatchException("ShopSearchType", input); + throw new BpCustomException("ShopSearchType 에 해당하는 값 '" + input + "' 은 올바르지 않습니다.", + ErrorCode.BR001); } } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/AlreadyProcessedException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/AlreadyProcessedException.java deleted file mode 100644 index abc6984..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/AlreadyProcessedException.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import lombok.Getter; - -@Getter -public class AlreadyProcessedException extends RuntimeException { - - private final ErrorCode errorCode; - - public AlreadyProcessedException(final ErrorCode errorCode) { - super(errorCode.getErrorMessage()); - this.errorCode = errorCode; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/BpCustomException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/BpCustomException.java new file mode 100644 index 0000000..f7312ba --- /dev/null +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/BpCustomException.java @@ -0,0 +1,20 @@ +package com.beautify_project.bp_app_api.exception; + +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import lombok.Getter; + +@Getter +public class BpCustomException extends RuntimeException { + + private final ErrorCode errorCode; + + public BpCustomException(final ErrorCode errorCode) { + super(errorCode.getErrorMessage()); + this.errorCode = errorCode; + } + + public BpCustomException(final String message, final ErrorCode errorCode) { + super(message); + this.errorCode = errorCode; + } +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ConfigurationException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ConfigurationException.java deleted file mode 100644 index 618a67b..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ConfigurationException.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import lombok.Getter; - -@Getter -public class ConfigurationException extends RuntimeException { - - private ErrorCode errorCode; - - public ConfigurationException(final ErrorCode errorCode) { - super(errorCode.getErrorMessage()); - this.errorCode = errorCode; - } - - public ConfigurationException(final Exception exception, final ErrorCode errorCode) { - super(exception); - this.errorCode = errorCode; - } - - public ConfigurationException(final String message, final ErrorCode errorCode) { - super(message); - this.errorCode = errorCode; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/GlobalExceptionHandler.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/GlobalExceptionHandler.java index dc2281f..e14a44f 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/GlobalExceptionHandler.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/GlobalExceptionHandler.java @@ -1,12 +1,9 @@ package com.beautify_project.bp_app_api.exception; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import java.sql.SQLIntegrityConstraintViolationException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.validation.BindingResult; @@ -25,7 +22,6 @@ public class GlobalExceptionHandler { private static final String MSG_FORMAT_PARAMETER_INVALID = "파라미터 '%s' 가 잘못되었습니다."; private static final String MSG_FORMAT_PARAMETER_TYPE_MISMATCH = "파라미터 '%s' 의 데이터 타입이 잘못되었습니다."; - private static final String MSG_FORMAT_MISSING_PARAMETER = "본문 내 '%s' 은 필수값입니다."; private static final String MSG_FORMAT_PARAMETER_OUT_OF_RANGE = "파라미터 '%s' 의 값이 범위에 벗어났습니다."; /** @@ -70,16 +66,6 @@ private ResponseEntity handleMissingServletRequestParamete return createResponseWithCustomMessage(ErrorCode.BR001, customMessage); } - @ExceptionHandler(EnumMismatchException.class) - private ResponseEntity handleQueryStringException(final EnumMismatchException exception) { - log.error("", exception); - - final String customMessage = String.format(MSG_FORMAT_PARAMETER_INVALID, - exception.getValue()); - - return createResponseWithCustomMessage(ErrorCode.BR001, customMessage); - } - @ExceptionHandler(MethodArgumentTypeMismatchException.class) private ResponseEntity handleMethodArgumentTypeMismatchException( final MethodArgumentTypeMismatchException exception) { @@ -105,33 +91,10 @@ private ResponseEntity handleHandlerMethodValidationExcept return createResponse(ErrorCode.BR001); } - @ExceptionHandler(ParameterOutOfRangeException.class) - private ResponseEntity handleParameterOutOfRangeException( - final ParameterOutOfRangeException exception) { - log.error("", exception); - - final String customMessage = String.format(MSG_FORMAT_PARAMETER_OUT_OF_RANGE, - exception.getParameterName()); - return createResponseWithCustomMessage(ErrorCode.BR001, customMessage); - } - - @ExceptionHandler(EmptyResultDataAccessException.class) - private ResponseEntity handleEmptyResultDataAccessException( - final EmptyResultDataAccessException exception) { - log.error("", exception); - return createResponse(ErrorCode.NF002); - } - - @ExceptionHandler(NotFoundException.class) - private ResponseEntity handleNotFoundException(final NotFoundException exception) { - log.error("", exception); - return createResponse(exception.getErrorCode()); - } - - @ExceptionHandler(StorageException.class) - private ResponseEntity handleStorageException(final StorageException exception) { + @ExceptionHandler(BpCustomException.class) + private ResponseEntity handleBpException(final BpCustomException exception) { log.error("", exception); - return createResponse(exception.getErrorCode()); + return createResponseWithCustomMessage(exception.getErrorCode(), exception.getMessage()); } @ExceptionHandler(MissingPathVariableException.class) @@ -142,49 +105,6 @@ private ResponseEntity handleMissingPathVariableException( return createResponse(ErrorCode.BR001); } - @ExceptionHandler(ConfigurationException.class) - private ResponseEntity handleConfigurationException( - final ConfigurationException exception) { - log.error("", exception); - return createResponse(exception.getErrorCode()); - } - - @ExceptionHandler(AlreadyProcessedException.class) - private ResponseEntity handleAlreadyLikeException( - final AlreadyProcessedException exception) { - log.error("", exception); - return createResponse(exception.getErrorCode()); - } - - @ExceptionHandler(InvalidIdException.class) - private ResponseEntity handleInvalidIdException( - final InvalidIdException exception) { - log.error("", exception); - return createResponseWithCustomMessage(ErrorCode.II001, exception.getErrorMessage()); - } - - - @ExceptionHandler(DataIntegrityViolationException.class) - private ResponseEntity handleSQLIntegrityConstraintViolationException( - final DataIntegrityViolationException exception) { - log.error("", exception); - return createResponse(ErrorCode.II002); - } - - @ExceptionHandler(InvalidRequestException.class) - private ResponseEntity handleInvalidRequestException( - final InvalidRequestException exception) { - log.error("", exception); - return createResponse(exception.getErrorCode()); - } - - @ExceptionHandler(UnableToProcessException.class) - private ResponseEntity handleUnableToProcessException( - final UnableToProcessException exception) { - log.error("", exception); - return createResponse(exception.getErrorCode()); - } - private static ResponseEntity createResponse(final ErrorCode errorCode) { ErrorResponseMessage errorResponseMessage = ErrorResponseMessage.createErrorMessage( errorCode); diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidIdException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidIdException.java deleted file mode 100644 index 9637e9a..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidIdException.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import com.beautify_project.bp_app_api.enumeration.EntityType; -import lombok.Getter; -import org.apache.commons.lang3.StringUtils; - -@Getter -public class InvalidIdException extends RuntimeException { - - private static final String FORMAT_ERROR_MESSAGE = "'%s' 엔티티의 식별자 '%s' 에 해당하는 값 '%s' 이 존재하지 않습니다."; - private static final String FORMAT_ERROR_MESSAGE_VALUE_NOT_EXISTS = "'%s' 엔티티의 식별자 '%s' 에 해당하는 값이 존재하지 않습니다."; - - private final EntityType entityType; - private final String id; - private final String value; - private final String errorMessage; - - public InvalidIdException(final EntityType entityType, final String id, final String value) { - super(String.format(FORMAT_ERROR_MESSAGE, entityType, id, value)); - this.entityType = entityType; - this.id = id; - this.value = value; - errorMessage = createErrorMessage(entityType, id, value); - } - - private static String createErrorMessage(final EntityType entityType, final String id, - final String value) { - if (StringUtils.isEmpty(value)) { - return String.format(FORMAT_ERROR_MESSAGE_VALUE_NOT_EXISTS, entityType, id); - } - return String.format(FORMAT_ERROR_MESSAGE, entityType, id, value); - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidRequestException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidRequestException.java deleted file mode 100644 index 22cab4a..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/InvalidRequestException.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import lombok.Getter; - -@Getter -public class InvalidRequestException extends RuntimeException { - - private ErrorCode errorCode; - - public InvalidRequestException(final ErrorCode errorCode) { - super(errorCode.getErrorMessage()); - this.errorCode = errorCode; - } - -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/NotFoundException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/NotFoundException.java deleted file mode 100644 index fa0c714..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/NotFoundException.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import lombok.Getter; - -@Getter -public class NotFoundException extends RuntimeException { - - private final ErrorCode errorCode; - - public NotFoundException(final ErrorCode errorCode) { - super(errorCode.getErrorMessage()); - this.errorCode = errorCode; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ParameterOutOfRangeException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ParameterOutOfRangeException.java deleted file mode 100644 index d9bfd4b..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/ParameterOutOfRangeException.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import lombok.Getter; - -@Getter -public class ParameterOutOfRangeException extends RuntimeException { - - private String parameterName; - private String parameterValue; - - public ParameterOutOfRangeException(String message) { - super(message); - } - - public ParameterOutOfRangeException(final String parameterName, final String parameterValue) { - super(parameterName + "에 해당하는 값 " + "'" + parameterValue + "' 는 올바르지 않습니다."); - this.parameterName = parameterName; - this.parameterValue = parameterValue; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/StorageException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/StorageException.java deleted file mode 100644 index a46b641..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/StorageException.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import lombok.Getter; - -@Getter -public class StorageException extends RuntimeException { - - private ErrorCode errorCode; - - public StorageException(final ErrorCode errorCode) { - super(errorCode.getErrorMessage()); - this.errorCode = errorCode; - } - - public StorageException(final Exception exception, final ErrorCode errorCode) { - super(exception); - this.errorCode = errorCode; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToLikeException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToLikeException.java deleted file mode 100644 index 416cc18..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToLikeException.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -public class UnableToLikeException extends RuntimeException { - - public UnableToLikeException(String message) { - super(message); - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToProcessException.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToProcessException.java deleted file mode 100644 index f2024e9..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/UnableToProcessException.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.beautify_project.bp_app_api.exception; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import lombok.Getter; - -@Getter -public class UnableToProcessException extends RuntimeException { - - private final ErrorCode errorCode; - - public UnableToProcessException(final String message, final ErrorCode errorCode) { - super(message); - this.errorCode = errorCode; - } - - public UnableToProcessException(final ErrorCode errorCode) { - this.errorCode = errorCode; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/ImageProvider.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/ImageProvider.java new file mode 100644 index 0000000..a11cbb9 --- /dev/null +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/ImageProvider.java @@ -0,0 +1,14 @@ +package com.beautify_project.bp_app_api.provider.image; + +import com.beautify_project.bp_app_api.response.image.PreSignedGetUrlResult; +import com.beautify_project.bp_app_api.response.image.PreSignedPutUrlResult; +import java.util.List; + +public interface ImageProvider { + + PreSignedPutUrlResult providePreSignedPutUrl(); + + PreSignedGetUrlResult providePreSignedGetUrlByFileId(final String fileId); + + List provideAllPreSignedGetUrlsByFileId(final List fileIds); +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/NCPImageProvider.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/NCPImageProvider.java new file mode 100644 index 0000000..9d9a0ee --- /dev/null +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/provider/image/NCPImageProvider.java @@ -0,0 +1,46 @@ +package com.beautify_project.bp_app_api.provider.image; + +import com.beautify_project.bp_app_api.config.properties.NaverCloudPlatformObjectStorageConfigProperties; +import com.beautify_project.bp_app_api.response.image.PreSignedGetUrlResult; +import com.beautify_project.bp_app_api.response.image.PreSignedPutUrlResult; +import com.beautify_project.bp_s3_client.naver.NCPConfig; +import com.beautify_project.bp_s3_client.naver.NCPObjectStorageClient; +import com.beautify_project.bp_s3_client.naver.NCPPreSignedGetUrlResult; +import com.beautify_project.bp_s3_client.naver.NCPPreSignedPutUrlResult; +import java.util.List; + +public class NCPImageProvider implements ImageProvider { + + private final NCPObjectStorageClient ncpObjectStorageClient; + + public NCPImageProvider(final NaverCloudPlatformObjectStorageConfigProperties ncpConfigProperties) { + this.ncpObjectStorageClient = new NCPObjectStorageClient( + new NCPConfig(ncpConfigProperties.endpoint(), ncpConfigProperties.regionName(), + ncpConfigProperties.bucketName(), ncpConfigProperties.accessKey(), + ncpConfigProperties.secretKey()) + ); + } + + @Override + public PreSignedPutUrlResult providePreSignedPutUrl() { + final NCPPreSignedPutUrlResult result = ncpObjectStorageClient.createPreSignedPutUrl(); + return new PreSignedPutUrlResult(result.preSignedUrl(), result.fileId()); + } + + @Override + public PreSignedGetUrlResult providePreSignedGetUrlByFileId(final String fileId) { + final NCPPreSignedGetUrlResult result = ncpObjectStorageClient.createPreSignedGetUrl( + fileId); + return new PreSignedGetUrlResult(result.preSignedUrl()); + } + + @Override + public List provideAllPreSignedGetUrlsByFileId(final List fileIds) { + final List resultsFromNCP = ncpObjectStorageClient.createPreSignedGetUrls( + fileIds); + + return resultsFromNCP.stream().map(ncpGetUrlResult -> { + return new PreSignedGetUrlResult(ncpGetUrlResult.preSignedUrl()); + }).toList(); + } +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/ImageRepository.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/ImageRepository.java deleted file mode 100644 index 3b2e0b5..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/ImageRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.beautify_project.bp_app_api.repository.image; - -import com.beautify_project.bp_app_api.dto.image.PreSignedGetUrlResult; -import com.beautify_project.bp_app_api.dto.image.PreSignedPutUrlResult; -import java.util.List; - -public interface ImageRepository { - - PreSignedPutUrlResult createPutUrlResult(); - - PreSignedGetUrlResult findImageLinkByFileId(final String fileId); - - List findAllImageLinksByFileIds(final List fileId); -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/NaverCloudPlatformObjectStorageRepository.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/NaverCloudPlatformObjectStorageRepository.java deleted file mode 100644 index f64f03c..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/image/NaverCloudPlatformObjectStorageRepository.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.beautify_project.bp_app_api.repository.image; - -import com.beautify_project.bp_app_api.config.properties.NaverCloudPlatformObjectStorageConfig; -import com.beautify_project.bp_app_api.dto.image.PreSignedGetUrlResult; -import com.beautify_project.bp_app_api.dto.image.PreSignedPutUrlResult; -import com.beautify_project.bp_s3_client.naver.NCPConfig; -import com.beautify_project.bp_s3_client.naver.NCPObjectStorageClient; -import com.beautify_project.bp_s3_client.naver.NCPPreSignedPutUrlResult; -import java.util.ArrayList; -import java.util.List; - -public class NaverCloudPlatformObjectStorageRepository implements ImageRepository { - - private final NCPObjectStorageClient ncpObjectStorageClient; - - public NaverCloudPlatformObjectStorageRepository( - final NaverCloudPlatformObjectStorageConfig ncpConfigBean) { - this.ncpObjectStorageClient = new NCPObjectStorageClient( - new NCPConfig(ncpConfigBean.endpoint(), ncpConfigBean.regionName(), - ncpConfigBean.bucketName(), ncpConfigBean.accessKey(), - ncpConfigBean.secretKey())); - } - - @Override - public PreSignedPutUrlResult createPutUrlResult() { - NCPPreSignedPutUrlResult result = ncpObjectStorageClient.createPreSignedPutUrl(); - return new PreSignedPutUrlResult(result.preSignedUrl(), result.fileId()); - } - - @Override - public PreSignedGetUrlResult findImageLinkByFileId(final String fileId) { - return new PreSignedGetUrlResult( - ncpObjectStorageClient.createPreSignedGetUrl(fileId).preSignedUrl()); - } - - @Override - public List findAllImageLinksByFileIds(final List fileId) { - List result = new ArrayList<>(); - ncpObjectStorageClient.createPreSignedGetUrls(fileId).forEach(ncpGetUrlResult -> { - result.add(new PreSignedGetUrlResult(ncpGetUrlResult.preSignedUrl())); - }); - return result; - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailCertificationRequest.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailCertificationRequest.java similarity index 68% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailCertificationRequest.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailCertificationRequest.java index ca09a10..75df651 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailCertificationRequest.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailCertificationRequest.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.auth; +package com.beautify_project.bp_app_api.request.auth; import jakarta.validation.constraints.NotBlank; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailCertificationVerificationRequest.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailCertificationVerificationRequest.java similarity index 80% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailCertificationVerificationRequest.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailCertificationVerificationRequest.java index eaae460..12e2dbd 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailCertificationVerificationRequest.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailCertificationVerificationRequest.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.auth; +package com.beautify_project.bp_app_api.request.auth; import jakarta.validation.constraints.NotBlank; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailDuplicatedRequest.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailDuplicatedRequest.java similarity index 68% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailDuplicatedRequest.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailDuplicatedRequest.java index fb3afba..0dfb6fd 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailDuplicatedRequest.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/auth/EmailDuplicatedRequest.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.auth; +package com.beautify_project.bp_app_api.request.auth; import jakarta.validation.constraints.NotBlank; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/member/UserRoleMemberRegistrationRequest.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/member/UserRoleMemberRegistrationRequest.java similarity index 80% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/member/UserRoleMemberRegistrationRequest.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/member/UserRoleMemberRegistrationRequest.java index eba33d7..1489b75 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/member/UserRoleMemberRegistrationRequest.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/member/UserRoleMemberRegistrationRequest.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.member; +package com.beautify_project.bp_app_api.request.member; import jakarta.validation.constraints.NotBlank; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/review/FindReviewListRequestParameters.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/review/FindReviewListRequestParameters.java new file mode 100644 index 0000000..0397eaf --- /dev/null +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/review/FindReviewListRequestParameters.java @@ -0,0 +1,18 @@ +package com.beautify_project.bp_app_api.request.review; + + +import com.beautify_project.bp_mysql.enums.OrderType; +import com.beautify_project.bp_mysql.enums.ReviewSortBy; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; + +public record FindReviewListRequestParameters( + String shopId, + ReviewSortBy sortBy, + @Min(0) + Integer page, + @Min(0) + @Max(100) + Integer count, + OrderType orderType) { +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopListFindRequestParameters.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/shop/ShopListFindRequestParameters.java similarity index 52% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopListFindRequestParameters.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/shop/ShopListFindRequestParameters.java index 398fdac..1970cf0 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopListFindRequestParameters.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/shop/ShopListFindRequestParameters.java @@ -1,15 +1,18 @@ -package com.beautify_project.bp_app_api.dto.shop; +package com.beautify_project.bp_app_api.request.shop; -import com.beautify_project.bp_app_api.enumeration.OrderType; import com.beautify_project.bp_app_api.enumeration.ShopSearchType; +import com.beautify_project.bp_mysql.enums.OrderType; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Size; public record ShopListFindRequestParameters( ShopSearchType searchType, - @Size(min = 0) + @Min(0) Integer page, - @Size(max = 100) + @Min(0) + @Max(100) Integer count, OrderType orderType) { } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopRegistrationRequest.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/shop/ShopRegistrationRequest.java similarity index 95% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopRegistrationRequest.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/shop/ShopRegistrationRequest.java index 93cf042..e633f98 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopRegistrationRequest.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/request/shop/ShopRegistrationRequest.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.shop; +package com.beautify_project.bp_app_api.request.shop; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/common/ErrorResponseMessage.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/ErrorResponseMessage.java similarity index 97% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/common/ErrorResponseMessage.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/ErrorResponseMessage.java index 7a8792e..1ea5d49 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/common/ErrorResponseMessage.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/ErrorResponseMessage.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.common; +package com.beautify_project.bp_app_api.response; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -8,7 +8,6 @@ import lombok.NoArgsConstructor; import lombok.ToString; import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; @NoArgsConstructor(access = AccessLevel.PRIVATE) @Getter diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/common/ResponseMessage.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/ResponseMessage.java similarity index 90% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/common/ResponseMessage.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/ResponseMessage.java index 2d7e033..0cfc102 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/common/ResponseMessage.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/ResponseMessage.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.common; +package com.beautify_project.bp_app_api.response; import lombok.AccessLevel; import lombok.Getter; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailDuplicatedResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/auth/EmailDuplicatedResult.java similarity index 53% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailDuplicatedResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/auth/EmailDuplicatedResult.java index 38b9442..ce97658 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/auth/EmailDuplicatedResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/auth/EmailDuplicatedResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.auth; +package com.beautify_project.bp_app_api.response.auth; public record EmailDuplicatedResult(String isDuplicated) { diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/image/PreSignedGetUrlResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/image/PreSignedGetUrlResult.java similarity index 80% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/image/PreSignedGetUrlResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/image/PreSignedGetUrlResult.java index acd0180..24bee55 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/image/PreSignedGetUrlResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/image/PreSignedGetUrlResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.image; +package com.beautify_project.bp_app_api.response.image; public record PreSignedGetUrlResult (String preSignedUrl){ diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/image/PreSignedPutUrlResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/image/PreSignedPutUrlResult.java similarity index 83% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/image/PreSignedPutUrlResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/image/PreSignedPutUrlResult.java index d5696cd..4f02eb2 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/image/PreSignedPutUrlResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/image/PreSignedPutUrlResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.image; +package com.beautify_project.bp_app_api.response.image; public record PreSignedPutUrlResult(String preSignedUrl, String fileId){ diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/member/UserRoleMemberRegistrationResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/member/UserRoleMemberRegistrationResult.java similarity index 54% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/member/UserRoleMemberRegistrationResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/member/UserRoleMemberRegistrationResult.java index 9b232ca..cfa702f 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/member/UserRoleMemberRegistrationResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/member/UserRoleMemberRegistrationResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.member; +package com.beautify_project.bp_app_api.response.member; public record UserRoleMemberRegistrationResult(String email) { diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/ReviewFindResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/review/ReviewFindResult.java similarity index 94% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/ReviewFindResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/review/ReviewFindResult.java index 358cc5a..7bc3d18 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/ReviewFindResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/review/ReviewFindResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.review; +package com.beautify_project.bp_app_api.response.review; public record ReviewFindResult( String id, diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/ReviewListFindResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/review/ReviewListFindResult.java similarity index 90% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/ReviewListFindResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/review/ReviewListFindResult.java index 6f0bfff..3872f81 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/review/ReviewListFindResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/review/ReviewListFindResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.review; +package com.beautify_project.bp_app_api.response.review; public record ReviewListFindResult( String id, diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopDetailFindResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopDetailFindResult.java similarity index 64% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopDetailFindResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopDetailFindResult.java index f085584..622ae34 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopDetailFindResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopDetailFindResult.java @@ -1,7 +1,7 @@ -package com.beautify_project.bp_app_api.dto.shop; +package com.beautify_project.bp_app_api.response.shop; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.Address; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.BusinessTime; +import com.beautify_project.bp_mysql.entity.embedded.Address; +import com.beautify_project.bp_mysql.entity.embedded.BusinessTime; import java.util.List; public record ShopDetailFindResult( diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopFindResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopFindResult.java similarity index 95% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopFindResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopFindResult.java index 2afff5e..0f5b53e 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopFindResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopFindResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.shop; +package com.beautify_project.bp_app_api.response.shop; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopListFindResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopListFindResult.java similarity index 92% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopListFindResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopListFindResult.java index 5bb6516..29429d2 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopListFindResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopListFindResult.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.dto.shop; +package com.beautify_project.bp_app_api.response.shop; -import com.beautify_project.bp_app_api.entity.Shop; +import com.beautify_project.bp_mysql.entity.Shop; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import java.util.List; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopRegistrationResult.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopRegistrationResult.java similarity index 51% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopRegistrationResult.java rename to bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopRegistrationResult.java index 0486a50..9d4b978 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/dto/shop/ShopRegistrationResult.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/response/shop/ShopRegistrationResult.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.dto.shop; +package com.beautify_project.bp_app_api.response.shop; public record ShopRegistrationResult(String shopId) { diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/AuthService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/AuthService.java index 84cf2d4..b16dde5 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/AuthService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/AuthService.java @@ -1,17 +1,16 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.auth.EmailCertificationRequest; -import com.beautify_project.bp_app_api.dto.auth.EmailCertificationVerificationRequest; -import com.beautify_project.bp_app_api.dto.auth.EmailDuplicatedRequest; -import com.beautify_project.bp_app_api.dto.auth.EmailDuplicatedResult; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.entity.EmailCertification; -import com.beautify_project.bp_app_api.exception.InvalidRequestException; -import com.beautify_project.bp_app_api.exception.NotFoundException; +import com.beautify_project.bp_app_api.exception.BpCustomException; import com.beautify_project.bp_app_api.provider.EmailProvider; -import com.beautify_project.bp_app_api.repository.EmailCertificationRepository; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_app_api.request.auth.EmailCertificationRequest; +import com.beautify_project.bp_app_api.request.auth.EmailCertificationVerificationRequest; +import com.beautify_project.bp_app_api.request.auth.EmailDuplicatedRequest; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.response.ResponseMessage; +import com.beautify_project.bp_app_api.response.auth.EmailDuplicatedResult; +import com.beautify_project.bp_mysql.entity.EmailCertification; +import com.beautify_project.bp_mysql.repository.EmailCertificationRepository; +import com.beautify_project.bp_utils.UUIDGenerator; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -70,13 +69,13 @@ private void validateEmailCertificationRequest( return; } - throw new InvalidRequestException(ErrorCode.EC001); + throw new BpCustomException(ErrorCode.EC001); } @Transactional(rollbackFor = Exception.class) public void verifyCertificationEmail(final EmailCertificationVerificationRequest request) { final EmailCertification foundEmailCertification = emailCertificationRepository.findById( - request.email()).orElseThrow(() -> new NotFoundException(ErrorCode.EC002)); + request.email()).orElseThrow(() -> new BpCustomException(ErrorCode.EC002)); verifyEmailCertificationRequest(request.certificationNumber(), foundEmailCertification.getCertificationNumber()); @@ -91,6 +90,6 @@ private void verifyEmailCertificationRequest(final String requestedCertification requestedCertificationNumber.toUpperCase())) { return; } - throw new InvalidRequestException(ErrorCode.EC003); + throw new BpCustomException(ErrorCode.EC003); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/CategoryService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/CategoryService.java index dc88993..05a1a1a 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/CategoryService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/CategoryService.java @@ -1,7 +1,7 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.entity.Category; -import com.beautify_project.bp_app_api.repository.CategoryRepository; +import com.beautify_project.bp_mysql.entity.Category; +import com.beautify_project.bp_mysql.repository.CategoryRepository; import java.util.ArrayList; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/FacilityService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/FacilityService.java index f48b5c4..ce6dd23 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/FacilityService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/FacilityService.java @@ -1,15 +1,11 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.entity.Facility; -import com.beautify_project.bp_app_api.enumeration.EntityType; -import com.beautify_project.bp_app_api.exception.InvalidIdException; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.FacilityRepository; -import com.beautify_project.bp_app_api.utils.Validator; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_mysql.entity.Facility; +import com.beautify_project.bp_mysql.repository.FacilityRepository; +import com.beautify_project.bp_utils.Validator; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -20,37 +16,12 @@ public class FacilityService { private final FacilityRepository facilityRepository; public List findFacilitiesByIds(final List facilityIdsToFind) { - Validator.throwIfNullOrEmpty(facilityIdsToFind, - new InvalidIdException(EntityType.FACILITY, "facilityId", "null")); - - final List foundFacilities = facilityRepository.findByIdIn(facilityIdsToFind); - validateFoundFacilitiesHaveFacilityIdsToFind(facilityIdsToFind, foundFacilities); - return foundFacilities; - } - - private void validateFoundFacilitiesHaveFacilityIdsToFind(final List facilityIdsToFind, - final List foundFacilities) { - if (facilityIdsToFind.size() == foundFacilities.size()) { - return; - } - - final String notExistedId = extractNotExistedId(facilityIdsToFind, foundFacilities); - throw new InvalidIdException(EntityType.FACILITY, "facilityId", notExistedId); - } - - private static String extractNotExistedId(final List facilityIdsToFind, - final List foundFacilities) { - final Set foundFacilitiesIdSet = foundFacilities.stream() - .map(Facility::getId) - .collect(Collectors.toSet()); - - return facilityIdsToFind.stream() - .filter(idToFind -> !foundFacilitiesIdSet.contains(idToFind)) - .findFirst().orElseGet(() -> "null"); + Validator.throwIfNullOrEmpty(facilityIdsToFind, new BpCustomException(ErrorCode.BR001)); + return facilityRepository.findByIdIn(facilityIdsToFind); } public Facility findFacilityById(final String facilityId) { return facilityRepository.findById(facilityId) - .orElseThrow(() -> new NotFoundException(ErrorCode.FA001)); + .orElseThrow(() -> new BpCustomException(ErrorCode.FA001)); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ImageService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ImageService.java deleted file mode 100644 index b8fd1c9..0000000 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ImageService.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.beautify_project.bp_app_api.service; - -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.image.PreSignedGetUrlResult; -import com.beautify_project.bp_app_api.repository.image.ImageRepository; -import java.util.List; -import java.util.stream.Collectors; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class ImageService { - - private final ImageRepository imageRepository; - - public ResponseMessage issuePreSignedPutUrlWrappingResponseMessage() { - - return ResponseMessage.createResponseMessage(imageRepository.createPutUrlResult()); - } - - public ResponseMessage issuePreSignedGetUrlWrappingResponseMessage(final String fileId) { - return ResponseMessage.createResponseMessage(imageRepository.findImageLinkByFileId(fileId)); - } - - public String issuePreSignedGetUrl(final String fileId) { - PreSignedGetUrlResult preSignedGetUrlResult = imageRepository.findImageLinkByFileId(fileId); - return preSignedGetUrlResult.preSignedUrl(); - } - - public List issuePreSignedGetUrls(final List fileIds) { - final List preSignedGetUrlResults = imageRepository.findAllImageLinksByFileIds( - fileIds); - - return preSignedGetUrlResults.stream().map(PreSignedGetUrlResult::preSignedUrl) - .collect(Collectors.toList()); - } -} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/MemberService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/MemberService.java index 5f847c6..9524a2d 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/MemberService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/MemberService.java @@ -1,13 +1,18 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.member.UserRoleMemberRegistrationRequest; -import com.beautify_project.bp_app_api.dto.member.UserRoleMemberRegistrationResult; -import com.beautify_project.bp_app_api.entity.Member; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.MemberRepository; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.response.ResponseMessage; +import com.beautify_project.bp_mysql.entity.Member; +import com.beautify_project.bp_mysql.entity.enumerated.AuthType; +import com.beautify_project.bp_mysql.entity.enumerated.MemberStatus; +import com.beautify_project.bp_mysql.entity.enumerated.UserRole; +import com.beautify_project.bp_mysql.repository.MemberRepository; +import com.beautify_project.bp_app_api.request.member.UserRoleMemberRegistrationRequest; +import com.beautify_project.bp_app_api.response.member.UserRoleMemberRegistrationResult; import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,12 +21,14 @@ @Transactional(readOnly = true) public class MemberService { + private static final PasswordEncoder PASSWORD_ENCODER = new BCryptPasswordEncoder(); + private static final String DEFAULT_PASSWORD = "DEFAULT_PASSWORD"; + private final MemberRepository memberRepository; public Member findMemberByEmailOrElseThrow(final String memberEmail) { return memberRepository.findById(memberEmail) - .orElseThrow(() -> new NotFoundException( - ErrorCode.ME001)); + .orElseThrow(() -> new BpCustomException(ErrorCode.ME001)); } public boolean existByMemberMail(final String memberEmail) { @@ -30,9 +37,28 @@ public boolean existByMemberMail(final String memberEmail) { @Transactional(rollbackFor = Exception.class) public ResponseMessage signUpUserRoleMember(final UserRoleMemberRegistrationRequest request) { - final Member userRoleMemberToRegister = Member.createSelfAuthMember(request); - final Member registeredUserRoleMember = memberRepository.save(userRoleMemberToRegister); + final Member registeredUserRoleMember = memberRepository.save( + createNewSelfAuthMember(request)); + return ResponseMessage.createResponseMessage( new UserRoleMemberRegistrationResult(registeredUserRoleMember.getEmail())); } + + public static Member createNewSelfAuthMember(final UserRoleMemberRegistrationRequest request) { + return Member.createNewMember(request.email(), generateEncryptedDefaultPassword(), request.name(), + request.contact(), AuthType.BP, UserRole.USER, MemberStatus.ACTIVE, + System.currentTimeMillis()); + } + + private static String generateEncryptedDefaultPassword() { + return PASSWORD_ENCODER.encode(DEFAULT_PASSWORD); + } + + public String encryptPassword(final String plainPassword) { + return PASSWORD_ENCODER.encode(plainPassword); + } + + public boolean passwordMatches(final String encryptedPassword, final String inputPassword) { + return PASSWORD_ENCODER.matches(encryptedPassword, inputPassword); + } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationCategoryService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationCategoryService.java index 7452e8c..7d1cfc0 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationCategoryService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationCategoryService.java @@ -1,11 +1,11 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.entity.Category; -import com.beautify_project.bp_app_api.entity.OperationCategory; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.OperationCategoryRepository; -import com.beautify_project.bp_app_api.utils.Validator; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_mysql.entity.Category; +import com.beautify_project.bp_mysql.entity.OperationCategory; +import com.beautify_project.bp_mysql.repository.OperationCategoryRepository; +import com.beautify_project.bp_utils.Validator; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -33,7 +33,7 @@ public List findOperationCategoriesWithOperationIds( final List operationIds) { final List operationCategories = operationCategoryRepository.findByIdOperationIdIn( operationIds); - Validator.throwIfNullOrEmpty(operationCategories, new NotFoundException(ErrorCode.OC001)); + Validator.throwIfNullOrEmpty(operationCategories, new BpCustomException(ErrorCode.OC001)); return operationCategoryRepository.findByIdOperationIdIn(operationIds); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationService.java index 13a216f..3f5c79e 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/OperationService.java @@ -1,15 +1,11 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.enumeration.EntityType; -import com.beautify_project.bp_app_api.exception.InvalidIdException; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.OperationRepository; -import com.beautify_project.bp_app_api.utils.Validator; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.repository.OperationRepository; +import com.beautify_project.bp_utils.Validator; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -19,39 +15,14 @@ public class OperationService { private final OperationRepository operationRepository; - public List findOperationsByIds(final List operationIdsToFind) { - Validator.throwIfNullOrEmpty(operationIdsToFind, - new InvalidIdException(EntityType.OPERATION, "operationId", "null")); - - final List foundOperations = operationRepository.findByIdIn(operationIdsToFind); - validateFoundOperationsHaveOperationIdsToFind(operationIdsToFind, foundOperations); - - return foundOperations; - } - - private void validateFoundOperationsHaveOperationIdsToFind(final List operationIdsToFind, - final List foundOperations) { - if (operationIdsToFind.size() == foundOperations.size()) { - return; - } - final String notExistedId = extractNotExistedId(operationIdsToFind, foundOperations); - throw new InvalidIdException(EntityType.OPERATION, "operationId", notExistedId); - } - - private static String extractNotExistedId(final List operationIdsToFind, - final List foundOperations) { - final Set foundOperationsIdSet = foundOperations.stream() - .map(Operation::getId).collect( - Collectors.toSet()); - - return operationIdsToFind.stream() - .filter(idToFind -> !foundOperationsIdSet.contains(idToFind)) - .findFirst().orElseGet(() -> "null"); + public List findOperationsByIds(final List operationIdsToFind) { + Validator.throwIfNullOrEmpty(operationIdsToFind, new BpCustomException(ErrorCode.BR001)); + return operationRepository.findByIdIn(operationIdsToFind); } public Operation findOperationById(final String operationId) { - return operationRepository.findById(operationId).orElseThrow(() -> new NotFoundException( + return operationRepository.findById(operationId).orElseThrow(() -> new BpCustomException( ErrorCode.OP001)); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReservationService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReservationService.java index 29949d8..f02a337 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReservationService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReservationService.java @@ -1,9 +1,9 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.entity.Reservation; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.ReservationRepository; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_mysql.entity.Reservation; +import com.beautify_project.bp_mysql.repository.ReservationRepository; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -16,7 +16,6 @@ public class ReservationService { public Reservation findReservationById(final @NotNull String reservationId) { return reservationRepository.findById(reservationId) - .orElseThrow(() -> new NotFoundException( - ErrorCode.RS001)); + .orElseThrow(() -> new BpCustomException(ErrorCode.RS001)); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReviewService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReviewService.java index fb569e0..8659a56 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReviewService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ReviewService.java @@ -1,17 +1,17 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.review.FindReviewListRequestParameters; -import com.beautify_project.bp_app_api.dto.review.ReviewFindResult; -import com.beautify_project.bp_app_api.dto.review.ReviewListFindResult; -import com.beautify_project.bp_app_api.entity.Member; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.entity.Reservation; -import com.beautify_project.bp_app_api.entity.Review; -import com.beautify_project.bp_app_api.entity.Shop; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.ReviewRepository; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.response.ResponseMessage; +import com.beautify_project.bp_mysql.entity.Member; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.entity.Reservation; +import com.beautify_project.bp_mysql.entity.Review; +import com.beautify_project.bp_mysql.entity.Shop; +import com.beautify_project.bp_mysql.repository.ReviewRepository; +import com.beautify_project.bp_app_api.request.review.FindReviewListRequestParameters; +import com.beautify_project.bp_app_api.response.review.ReviewFindResult; +import com.beautify_project.bp_app_api.response.review.ReviewListFindResult; import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -35,7 +35,7 @@ public class ReviewService { public ResponseMessage findReview(final String reviewId) { final Review foundReview = reviewRepository.findById(reviewId) - .orElseThrow(() -> new NotFoundException(ErrorCode.RE001)); + .orElseThrow(() -> new BpCustomException(ErrorCode.RE001)); final Member reviewedWriter = memberService.findMemberByEmailOrElseThrow(foundReview.getMemberEmail()); final Operation reviewedOperation = operationService.findOperationById( @@ -59,7 +59,7 @@ public ResponseMessage findReviewListInShop(final FindReviewListRequestParameter List foundReviews = reviewRepository.findAll(pageable).getContent(); if (foundReviews.isEmpty()) { - throw new NotFoundException(ErrorCode.RE001); + throw new BpCustomException(ErrorCode.RE001); } final List result = foundReviews.stream().map(review -> diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopCategoryService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopCategoryService.java index de8c072..67471ff 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopCategoryService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopCategoryService.java @@ -1,8 +1,8 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.entity.Category; -import com.beautify_project.bp_app_api.entity.ShopCategory; -import com.beautify_project.bp_app_api.repository.ShopCategoryRepository; +import com.beautify_project.bp_mysql.entity.Category; +import com.beautify_project.bp_mysql.entity.ShopCategory; +import com.beautify_project.bp_mysql.repository.ShopCategoryRepository; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopFacilityService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopFacilityService.java index 71ae009..f04eae5 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopFacilityService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopFacilityService.java @@ -1,11 +1,11 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.entity.Facility; -import com.beautify_project.bp_app_api.entity.ShopFacility; -import com.beautify_project.bp_app_api.enumeration.EntityType; -import com.beautify_project.bp_app_api.exception.InvalidIdException; -import com.beautify_project.bp_app_api.repository.ShopFacilityRepository; -import com.beautify_project.bp_app_api.utils.Validator; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_mysql.entity.Facility; +import com.beautify_project.bp_mysql.entity.ShopFacility; +import com.beautify_project.bp_mysql.repository.ShopFacilityRepository; +import com.beautify_project.bp_utils.Validator; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -42,8 +42,7 @@ public List registerAll(final List shopFacilitiesToR } public List findShopFacilitiesByShopIds(final List shopIds) { - Validator.throwIfNullOrEmpty(shopIds, - new InvalidIdException(EntityType.SHOP, "shopId", "null")); + Validator.throwIfNullOrEmpty(shopIds, new BpCustomException(ErrorCode.BR001)); return shopFacilityRepository.findByIdShopIdIn(shopIds); } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopLikeService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopLikeService.java index d70a15f..131e56f 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopLikeService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopLikeService.java @@ -1,8 +1,8 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.entity.ShopLike; -import com.beautify_project.bp_app_api.entity.ShopLike.ShopLikeId; -import com.beautify_project.bp_app_api.repository.ShopLikeRepository; +import com.beautify_project.bp_mysql.entity.ShopLike; +import com.beautify_project.bp_mysql.entity.ShopLike.ShopLikeId; +import com.beautify_project.bp_mysql.repository.ShopLikeRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopOperationService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopOperationService.java index 7b35c82..43eadcf 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopOperationService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopOperationService.java @@ -1,11 +1,11 @@ package com.beautify_project.bp_app_api.service; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.entity.ShopOperation; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.ShopOperationRepository; -import com.beautify_project.bp_app_api.utils.Validator; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.entity.ShopOperation; +import com.beautify_project.bp_mysql.repository.ShopOperationRepository; +import com.beautify_project.bp_utils.Validator; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -43,7 +43,7 @@ private List createShopOperationsWithShopIdAndOperations(final St public List findShopOperationsByShopIds(final List shopIds) { final List shopOperations = shopOperationRepository.findByIdShopIdIn(shopIds); - Validator.throwIfNullOrEmpty(shopOperations, new NotFoundException(ErrorCode.SO001)); + Validator.throwIfNullOrEmpty(shopOperations, new BpCustomException(ErrorCode.SO001)); return shopOperations; } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopService.java b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopService.java index f514c49..45bfd31 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopService.java +++ b/bp-app-api/src/main/java/com/beautify_project/bp_app_api/service/ShopService.java @@ -1,24 +1,25 @@ package com.beautify_project.bp_app_api.service; import com.beautify_project.bp_app_api.config.IOBoundAsyncThreadPoolConfiguration; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.shop.ShopListFindRequestParameters; -import com.beautify_project.bp_app_api.dto.shop.ShopListFindResult; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationResult; -import com.beautify_project.bp_app_api.entity.Facility; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.entity.Shop; -import com.beautify_project.bp_app_api.entity.ShopCategory; -import com.beautify_project.bp_app_api.entity.ShopFacility; -import com.beautify_project.bp_app_api.entity.ShopLike; -import com.beautify_project.bp_app_api.entity.ShopOperation; -import com.beautify_project.bp_app_api.exception.AlreadyProcessedException; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.exception.UnableToProcessException; -import com.beautify_project.bp_app_api.repository.ShopRepository; -import com.beautify_project.bp_app_api.utils.Validator; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.provider.image.ImageProvider; +import com.beautify_project.bp_app_api.request.shop.ShopListFindRequestParameters; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.response.ResponseMessage; +import com.beautify_project.bp_app_api.response.shop.ShopListFindResult; +import com.beautify_project.bp_app_api.response.shop.ShopRegistrationResult; +import com.beautify_project.bp_mysql.entity.Facility; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.entity.Shop; +import com.beautify_project.bp_mysql.entity.ShopCategory; +import com.beautify_project.bp_mysql.entity.ShopFacility; +import com.beautify_project.bp_mysql.entity.ShopLike; +import com.beautify_project.bp_mysql.entity.ShopOperation; +import com.beautify_project.bp_mysql.entity.embedded.Address; +import com.beautify_project.bp_mysql.entity.embedded.BusinessTime; +import com.beautify_project.bp_mysql.repository.ShopRepository; +import com.beautify_project.bp_utils.Validator; import jakarta.validation.constraints.NotBlank; import java.util.ArrayList; import java.util.List; @@ -47,13 +48,14 @@ public class ShopService { private final FacilityService facilityService; private final ShopLikeService shopLikeService; private final ShopCategoryService shopCategoryService; - private final ImageService imageService; + private final ImageProvider imageProvider; private final IOBoundAsyncThreadPoolConfiguration ioBoundAsyncThreadPoolConfig; @Transactional(rollbackFor = Exception.class) public ResponseMessage registerShop(final ShopRegistrationRequest shopRegistrationRequest) { - final Shop registeredShop = shopRepository.save(Shop.from(shopRegistrationRequest)); + final Shop registeredShop = shopRepository.save( + createShopEntityFromShopRegistrationRequest(shopRegistrationRequest)); final String registeredShopId = registeredShop.getId(); final List operationIds = shopRegistrationRequest.operationIds(); final List facilityIds = shopRegistrationRequest.facilityIds(); @@ -72,10 +74,28 @@ public ResponseMessage registerShop(final ShopRegistrationRequest shopRegistrati return ResponseMessage.createResponseMessage(new ShopRegistrationResult(registeredShopId)); } + public static Shop createShopEntityFromShopRegistrationRequest( + final ShopRegistrationRequest request) { + + return Shop.newShop(request.name(), request.contact(), request.url(), + request.introduction(), request.imageFileIds(), + Address.of(request.address().dongCode(), request.address().siDoName(), + request.address().siGoonGooName(), request.address().eubMyunDongName(), + request.address().roadNameCode(), request.address().roadName(), + request.address().underGround(), request.address().roadMainNum(), + request.address().roadSubNum(), request.address().siGoonGooBuildingName(), + request.address().zipCode(), request.address().apartComplex(), + request.address().eubMyunDongSerialNumber(), request.address().latitude(), + request.address().longitude()), + BusinessTime.of(request.businessTime().openTime(), request.businessTime().closeTime(), + request.businessTime().breakBeginTime(), request.businessTime().breakEndTime(), + request.businessTime().offDayOfWeek())); + } + public ResponseMessage registerShopAsync(final ShopRegistrationRequest request) { final List> completableFutures = new ArrayList<>(); - final Shop shopToSave = Shop.from(request); + final Shop shopToSave = createShopEntityFromShopRegistrationRequest(request); final CompletableFuture saveShopAsyncResult = CompletableFuture.supplyAsync( () -> shopRepository.save(shopToSave), ioBoundAsyncThreadPoolConfig.getAsyncExecutor()); @@ -94,7 +114,7 @@ public ResponseMessage registerShopAsync(final ShopRegistrationRequest request) shopToSave.getId())); } catch (CompletionException exception) { rollbackAll(completableFutures); - throw new UnableToProcessException(ErrorCode.SH002); + throw new BpCustomException(ErrorCode.SH002); } } @@ -168,8 +188,9 @@ private List createShopListFindResults(final List foun final String shopId = foundShop.getId(); final List operationNames = operationNamesByShopId.get(shopId); final List facilityNames = facilityNamesByShopId.get(shopId); - final String thumbnailLink = imageService.issuePreSignedGetUrl( - foundShop.getImageFileIds().get(0)); + final String thumbnailFileId = foundShop.getImageFileIds().get(0); + final String thumbnailLink = imageProvider.providePreSignedGetUrlByFileId(thumbnailFileId).preSignedUrl(); + return ShopListFindResult.createShopListFindResult(foundShop, operationNames, facilityNames, thumbnailLink); }) @@ -211,13 +232,13 @@ private Map> findFacilityNamesByShops(final List sh public Shop findShopById(final @NotBlank String shopId) { return shopRepository.findById(shopId) - .orElseThrow(() -> new NotFoundException(ErrorCode.SH001)); + .orElseThrow(() -> new BpCustomException(ErrorCode.SH001)); } @Transactional(rollbackFor = Exception.class) public void likeShop(final @NotBlank String shopId, final @NotBlank String memberEmail) { if (shopLikeService.isLikePushed(shopId, memberEmail)) { - throw new AlreadyProcessedException(ErrorCode.AL001); + throw new BpCustomException(ErrorCode.AL001); } Shop foundShop = findShopById(shopId); @@ -232,7 +253,7 @@ public void likeShop(final @NotBlank String shopId, final @NotBlank String membe @Transactional(rollbackFor = Exception.class) public void cancelLikeShop(final @NotBlank String shopId, final @NotBlank String memberEmail) { if (!shopLikeService.isLikePushed(shopId, memberEmail)) { - throw new AlreadyProcessedException(ErrorCode.AL002); + throw new BpCustomException(ErrorCode.AL002); } Shop foundShop = findShopById(shopId); diff --git a/bp-app-api/src/main/resources/application-local.yml b/bp-app-api/src/main/resources/application-local.yml index 5af89b1..da5695e 100644 --- a/bp-app-api/src/main/resources/application-local.yml +++ b/bp-app-api/src/main/resources/application-local.yml @@ -10,10 +10,10 @@ spring: on-profile: local import: - jasypt.yml - - datasource-local.yml - - storage-local.yml - auth.yml - mail.yml + - classpath:mysql-config/application-local.yml + - classpath:s3-client-config/application-local.yml logging: level: diff --git a/bp-app-api/src/main/resources/application-prod.yml b/bp-app-api/src/main/resources/application-prod.yml index 0aeefd6..76beb31 100644 --- a/bp-app-api/src/main/resources/application-prod.yml +++ b/bp-app-api/src/main/resources/application-prod.yml @@ -2,6 +2,7 @@ server: port: 8080 tomcat: uri-encoding: UTF-8 + shutdown: graceful spring: config: @@ -9,10 +10,12 @@ spring: on-profile: prod import: - jasypt.yml - - datasource-local.yml - - storage-local.yml - auth.yml + - mail.yml + - classpath:mysql-config/application-prod.yml + - classpath:s3-client-config/application-prod.yml logging: level: org.hibernate.SQL: debug + com.beautify_project.bp_app_api: debug diff --git a/bp-app-api/src/main/resources/application-test.yml b/bp-app-api/src/main/resources/application-test.yml index d1a366a..7f4e272 100644 --- a/bp-app-api/src/main/resources/application-test.yml +++ b/bp-app-api/src/main/resources/application-test.yml @@ -2,6 +2,7 @@ server: port: 8080 tomcat: uri-encoding: UTF-8 + shutdown: graceful spring: config: @@ -9,10 +10,10 @@ spring: on-profile: test import: - jasypt.yml - - datasource-local.yml - - storage-local.yml - - mail.yml - auth.yml + - mail.yml + - classpath:mysql-config/application-local.yml + - classpath:s3-client-config/application-local.yml logging: level: diff --git a/bp-app-api/src/main/resources/auth.yml b/bp-app-api/src/main/resources/auth.yml index 2943b31..02c823b 100644 --- a/bp-app-api/src/main/resources/auth.yml +++ b/bp-app-api/src/main/resources/auth.yml @@ -1,5 +1,4 @@ ## BP 서비스 내 발급할 jwt secret key ---- jwt: secret-key: ENC(kA951a0P++xefWrbSQ1YIZn5aep0rBnJXcmRqLSyvhPf/xyHF241qQ==) expired-minute: 60 diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/JasyptTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/JasyptTest.java new file mode 100644 index 0000000..7efa6a9 --- /dev/null +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/JasyptTest.java @@ -0,0 +1,68 @@ +//package com.beautify_project.bp_app_api; +// +//import com.beautify_project.bp_app_api.config.properties.KafkaProducerConfigProperties; +//import org.jasypt.encryption.StringEncryptor; +//import org.junit.jupiter.api.Test; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Qualifier; +//import org.springframework.boot.test.context.SpringBootTest; +// +//@SpringBootTest +//public class JasyptTest { +// +// @Autowired +// @Qualifier("encryptorBean") +// private StringEncryptor stringEncryptor; +// +// @Autowired +// private KafkaProducerConfigProperties kafkaProducerConfigProperties; +// +// @Test +// void encryptSpringSecurityConfig() { +// final String encryptedKakaoClientId = stringEncryptor.encrypt( +// "3fc1928e41c31bfa3e85a8e7585f6d0a"); +// final String encryptedKakaoClientSecret = stringEncryptor.encrypt( +// "iGXGQsjIXeF3o98TxxbFIBs4s1i1rEs1"); +// final String encryptedNaverClientId = stringEncryptor.encrypt("VxGtKuhMM9MFNJ5kNUz0"); +// final String encryptedNaverClientSecret = stringEncryptor.encrypt("hDEfkQcm3l"); +// +// System.out.println("encryptedKakaoClientId = " + encryptedKakaoClientId); +// System.out.println("encryptedKakaoClientSecret = " + encryptedKakaoClientSecret); +// System.out.println("encryptedNaverClientId = " + encryptedNaverClientId); +// System.out.println("encryptedNaverClientSecret = " + encryptedNaverClientSecret); +// } +// +// @Test +// void encryptMailConfig() { +// final String encryptedMailPassword = stringEncryptor.encrypt("jddn nsit iiow pxir"); +// System.out.println("encryptedMailPassword = " + encryptedMailPassword); +// } +// +// @Test +// void encryptJwtConfig() { +// final String encryptedJwtSecretKey = stringEncryptor.encrypt("jwtSecretKeyForBeautifyProject"); +// System.out.println("encryptedJwtSecretKey = " + encryptedJwtSecretKey); +// } +// +// @Test +// void encryptKafkaProducerConfig() { +// final String encryptedBrokerUrl = stringEncryptor.encrypt( +// kafkaProducerConfigProperties.getBroker()); +// +// System.out.println("encryptedBrokerUrl = " + encryptedBrokerUrl); +// } +// +// @Test +// void encryptDatasourceConfig() { +// final String decryptedDatasourceUrl = stringEncryptor.decrypt( +// "WYQa+sbvAKaZjBGjG3eJYe0zs57sLmydUoHWy3+5K2uIzOX7L0s5Z+eqNqOUB10OkbVNmB7mANhO1LaL4Q1599kNNmzAiII0j93edJCVWErUtIc7hgEV+2L3CexhYg/FRcUBL1vMC4ejtLmgZ+P3NePq/v9EWTE7"); +// +// System.out.println("decryptedDatasourceUrl = " + decryptedDatasourceUrl); +// +// final String plainDatasourceUrl = "jdbc:mysql://127.0.0.1:3306/beautify_project?serverTimezone=Asia/Seoul&useUniCode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true"; +// final String encryptedDatasourceUrl = stringEncryptor.encrypt(plainDatasourceUrl); +// System.out.println("encryptedDatasourceUrl = " + encryptedDatasourceUrl); +// +// } +// +//} diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ImageControllerTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ImageControllerTest.java index 05f2be3..6a7714b 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ImageControllerTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ImageControllerTest.java @@ -5,12 +5,11 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.exception.StorageException; -import com.beautify_project.bp_app_api.service.ImageService; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.provider.image.ImageProvider; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.response.image.PreSignedPutUrlResult; import com.beautify_project.bp_s3_client.naver.NCPObjectStorageClient; -import com.beautify_project.bp_s3_client.naver.NCPPreSignedPutUrlResult; import java.util.UUID; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -29,7 +28,7 @@ class ImageControllerTest { private MockMvc mockMvc; @MockBean - private ImageService imageService; + ImageProvider imageProvider; @MockBean private NCPObjectStorageClient ncpClient; @@ -39,8 +38,8 @@ class ImageControllerTest { void given_preSignedPutUrlRequest_when_succeed_then_getResponseMessageWrappingPreSignedPutUrlResult() throws Exception { // given - when(imageService.issuePreSignedPutUrlWrappingResponseMessage()).thenReturn(ResponseMessage.createResponseMessage( - new NCPPreSignedPutUrlResult("www.test.com", UUID.randomUUID().toString()))); + when(imageProvider.providePreSignedPutUrl()).thenReturn( + new PreSignedPutUrlResult("www.test.com", UUID.randomUUID().toString())); // when ResultActions resultActions = mockMvc.perform( @@ -62,7 +61,8 @@ void given_preSignedPutUrlRequest_when_succeed_then_getResponseMessageWrappingPr void given_preSignedPutUrlRequest_when_failed_then_getErrorResponseMessageWrappingErrorCodeIS002() throws Exception { // given - when(imageService.issuePreSignedPutUrlWrappingResponseMessage()).thenThrow(new StorageException(ErrorCode.IS002)); + when(imageProvider.providePreSignedPutUrl()).thenThrow( + new BpCustomException(ErrorCode.IS002)); // when ResultActions resultActions = mockMvc.perform( diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ReviewControllerTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ReviewControllerTest.java index a5c4efe..2276057 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ReviewControllerTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ReviewControllerTest.java @@ -6,14 +6,14 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.review.FindReviewListRequestParameters; -import com.beautify_project.bp_app_api.dto.review.ReviewFindResult; -import com.beautify_project.bp_app_api.dto.review.ReviewListFindResult; -import com.beautify_project.bp_app_api.exception.NotFoundException; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; +import com.beautify_project.bp_app_api.response.ResponseMessage; import com.beautify_project.bp_app_api.service.ReviewService; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_utils.UUIDGenerator; +import com.beautify_project.bp_app_api.request.review.FindReviewListRequestParameters; +import com.beautify_project.bp_app_api.response.review.ReviewFindResult; +import com.beautify_project.bp_app_api.response.review.ReviewListFindResult; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.DisplayName; @@ -155,8 +155,7 @@ void given_findReviewList_InShop_when_failed_then_getErrorMessage() throws Excep final String mockedShopId = UUIDGenerator.generate(); when(reviewService.findReviewListInShop(any(FindReviewListRequestParameters.class))).thenThrow( - new NotFoundException( - ErrorCode.SH001)); + new BpCustomException(ErrorCode.SH001)); // when ResultActions resultActions = mockMvc.perform( diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ShopControllerTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ShopControllerTest.java index a48c624..e12f528 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ShopControllerTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/controller/ShopControllerTest.java @@ -6,21 +6,21 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.shop.ShopListFindRequestParameters; -import com.beautify_project.bp_app_api.dto.shop.ShopListFindResult; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.Address; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.BusinessTime; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationResult; -import com.beautify_project.bp_app_api.entity.Facility; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.entity.Shop; -import com.beautify_project.bp_app_api.repository.ShopRepository; +import com.beautify_project.bp_app_api.response.ResponseMessage; import com.beautify_project.bp_app_api.service.FacilityService; import com.beautify_project.bp_app_api.service.OperationService; import com.beautify_project.bp_app_api.service.ShopService; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_mysql.entity.Facility; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.entity.Shop; +import com.beautify_project.bp_mysql.repository.ShopRepository; +import com.beautify_project.bp_utils.UUIDGenerator; +import com.beautify_project.bp_app_api.request.shop.ShopListFindRequestParameters; +import com.beautify_project.bp_app_api.response.shop.ShopListFindResult; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.Address; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.BusinessTime; +import com.beautify_project.bp_app_api.response.shop.ShopRegistrationResult; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import java.time.LocalTime; @@ -115,7 +115,7 @@ void given_shopRegistrationRequest_when_success_then_getResponseMessageWrappingS ) ); - Shop mockedShop = Shop.from(mockedRequest); + Shop mockedShop = ShopService.createShopEntityFromShopRegistrationRequest(mockedRequest); when(shopService.registerShop(mockedRequest)).thenReturn( ResponseMessage.createResponseMessage(new ShopRegistrationResult(mockedShop.getId()))); diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/AuthIntegrationTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/AuthIntegrationTest.java index e694391..b424b3f 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/AuthIntegrationTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/AuthIntegrationTest.java @@ -5,15 +5,16 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import com.beautify_project.bp_app_api.dto.auth.EmailCertificationRequest; -import com.beautify_project.bp_app_api.dto.auth.EmailCertificationVerificationRequest; -import com.beautify_project.bp_app_api.dto.auth.EmailDuplicatedRequest; -import com.beautify_project.bp_app_api.dto.member.UserRoleMemberRegistrationRequest; -import com.beautify_project.bp_app_api.entity.EmailCertification; -import com.beautify_project.bp_app_api.entity.Member; -import com.beautify_project.bp_app_api.repository.EmailCertificationRepository; -import com.beautify_project.bp_app_api.repository.MemberRepository; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_app_api.request.auth.EmailCertificationRequest; +import com.beautify_project.bp_app_api.request.auth.EmailCertificationVerificationRequest; +import com.beautify_project.bp_app_api.request.auth.EmailDuplicatedRequest; +import com.beautify_project.bp_app_api.request.member.UserRoleMemberRegistrationRequest; +import com.beautify_project.bp_app_api.service.MemberService; +import com.beautify_project.bp_mysql.entity.EmailCertification; +import com.beautify_project.bp_mysql.entity.Member; +import com.beautify_project.bp_mysql.repository.EmailCertificationRepository; +import com.beautify_project.bp_mysql.repository.MemberRepository; +import com.beautify_project.bp_utils.UUIDGenerator; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; @@ -67,7 +68,7 @@ void given_emailDuplicatedCheckRequest_when_succeed_then_get_responseMessageWrap // given final UserRoleMemberRegistrationRequest mockedRequest = new UserRoleMemberRegistrationRequest( "dev.sssukho@gmail.com", "1234", "이름", "010-1234-5678"); - final Member insertedMember = Member.createSelfAuthMember(mockedRequest); + final Member insertedMember = MemberService.createNewSelfAuthMember(mockedRequest); memberRepository.saveAndFlush(insertedMember); final EmailDuplicatedRequest request = new EmailDuplicatedRequest( @@ -93,7 +94,7 @@ void given_emailDuplicatedCheckRequest_when_duplicated_id_then_get_responseMessa final UserRoleMemberRegistrationRequest mockedRequest = new UserRoleMemberRegistrationRequest( "dev.sssukho@gmail.com", "1234", "이름", "010-1234-5678"); - final Member insertedMember = Member.createSelfAuthMember(mockedRequest); + final Member insertedMember = MemberService.createNewSelfAuthMember(mockedRequest); memberRepository.saveAndFlush(insertedMember); final EmailDuplicatedRequest request = new EmailDuplicatedRequest( diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/MemberIntegrationTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/MemberIntegrationTest.java index b309e6b..4c818e5 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/MemberIntegrationTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/MemberIntegrationTest.java @@ -4,8 +4,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import com.beautify_project.bp_app_api.dto.member.UserRoleMemberRegistrationRequest; -import com.beautify_project.bp_app_api.repository.MemberRepository; +import com.beautify_project.bp_app_api.request.member.UserRoleMemberRegistrationRequest; +import com.beautify_project.bp_mysql.repository.MemberRepository; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/ShopServiceRepositoryIntegrationTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/ShopServiceRepositoryIntegrationTest.java index 50ab13c..889af3c 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/ShopServiceRepositoryIntegrationTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/integration/ShopServiceRepositoryIntegrationTest.java @@ -2,33 +2,29 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import com.beautify_project.bp_app_api.dto.common.ErrorResponseMessage.ErrorCode; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.Address; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.BusinessTime; -import com.beautify_project.bp_app_api.entity.Category; -import com.beautify_project.bp_app_api.entity.Facility; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.entity.OperationCategory; -import com.beautify_project.bp_app_api.entity.Shop; -import com.beautify_project.bp_app_api.entity.ShopLike; -import com.beautify_project.bp_app_api.entity.ShopLike.ShopLikeId; -import com.beautify_project.bp_app_api.exception.AlreadyProcessedException; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.CategoryRepository; -import com.beautify_project.bp_app_api.repository.FacilityRepository; -import com.beautify_project.bp_app_api.repository.OperationCategoryRepository; -import com.beautify_project.bp_app_api.repository.OperationRepository; -import com.beautify_project.bp_app_api.repository.ShopCategoryRepository; -import com.beautify_project.bp_app_api.repository.ShopFacilityRepository; -import com.beautify_project.bp_app_api.repository.ShopLikeRepository; -import com.beautify_project.bp_app_api.repository.ShopOperationRepository; -import com.beautify_project.bp_app_api.repository.ShopRepository; + +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.response.ErrorResponseMessage.ErrorCode; import com.beautify_project.bp_app_api.service.ShopService; +import com.beautify_project.bp_mysql.entity.Category; +import com.beautify_project.bp_mysql.entity.Facility; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.entity.OperationCategory; +import com.beautify_project.bp_mysql.entity.Shop; +import com.beautify_project.bp_mysql.entity.ShopLike; +import com.beautify_project.bp_mysql.entity.ShopLike.ShopLikeId; +import com.beautify_project.bp_mysql.repository.CategoryRepository; +import com.beautify_project.bp_mysql.repository.FacilityRepository; +import com.beautify_project.bp_mysql.repository.OperationCategoryRepository; +import com.beautify_project.bp_mysql.repository.OperationRepository; +import com.beautify_project.bp_mysql.repository.ShopCategoryRepository; +import com.beautify_project.bp_mysql.repository.ShopFacilityRepository; +import com.beautify_project.bp_mysql.repository.ShopLikeRepository; +import com.beautify_project.bp_mysql.repository.ShopOperationRepository; +import com.beautify_project.bp_mysql.repository.ShopRepository; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.Address; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.BusinessTime; import java.time.LocalTime; import java.util.Arrays; import java.util.List; @@ -142,7 +138,8 @@ void given_shopLike_when_succeed_then_db_inserted() { ) ); - final Shop testShop = Shop.from(requestForTest); + final Shop testShop = ShopService.createShopEntityFromShopRegistrationRequest( + requestForTest); shopRepository.saveAndFlush(testShop); // DB 에 있는 상태 가정 final String memberEmail = "sssukho@gmail.com"; @@ -152,8 +149,7 @@ void given_shopLike_when_succeed_then_db_inserted() { // then final Shop shopFromDb = shopRepository.findById(testShop.getId()) - .orElseThrow(() -> new NotFoundException( - ErrorCode.SH001)); + .orElseThrow(() -> new BpCustomException(ErrorCode.SH001)); final Long previousLikeCount = testShop.getLikes(); final Long postLikeCount = shopFromDb.getLikes(); @@ -219,7 +215,8 @@ void given_shopLikeCancel_when_succeed_then_db_deleted() { ) ); - final Shop testShop = Shop.from(requestForTest); + final Shop testShop = ShopService.createShopEntityFromShopRegistrationRequest( + requestForTest); testShop.increaseLikeCount(); shopRepository.saveAndFlush(testShop); @@ -234,7 +231,7 @@ void given_shopLikeCancel_when_succeed_then_db_deleted() { // then assert testShop.getId() != null; final Shop shopFromDB = shopRepository.findById(testShop.getId()) - .orElseThrow(() -> new NotFoundException(ErrorCode.SH001)); + .orElseThrow(() -> new BpCustomException(ErrorCode.SH001)); final Long previousLikeCount = testShop.getLikes(); final Long postLikeCount = shopFromDB.getLikes(); @@ -244,8 +241,8 @@ void given_shopLikeCancel_when_succeed_then_db_deleted() { } @Test - @DisplayName("Shop 좋아요시 기존에 좋아요 한 이력이 있으면 AlreadyProcessedException 을 던진다") - void given_shopLike_when_already_shop_like_exists_then_throw_alreadyProcessedException() { + @DisplayName("Shop 좋아요시 기존에 좋아요 한 이력이 있으면 BpException 을 던진다") + void given_shopLike_when_already_shop_like_exists_then_throw_BpException() { // given final List mockedOperationEntities = Arrays.asList( Operation.of("두피 문신 시술", "두피 문신 시술 설명"), @@ -295,19 +292,20 @@ void given_shopLike_when_already_shop_like_exists_then_throw_alreadyProcessedExc ) ); - final Shop testShop = Shop.from(requestForTest); + final Shop testShop = ShopService.createShopEntityFromShopRegistrationRequest( + requestForTest); final String memberEmail = "sssukho@gmail.com"; shopRepository.saveAndFlush(testShop); shopService.likeShop(testShop.getId(), memberEmail); // when & then assertThatThrownBy(() -> shopService.likeShop(testShop.getId(), memberEmail)).isInstanceOf( - AlreadyProcessedException.class); + BpCustomException.class); } @Test - @DisplayName("Shop 좋아요 취소시 기존에 좋아요 했던 이력이 없으면 AlreadyProcessedException 을 던진다") - void given_shopLikeCancel_when_shop_like_not_exists_then_throw_alreadyProcessedException() { + @DisplayName("Shop 좋아요 취소시 기존에 좋아요 했던 이력이 없으면 BpException 을 던진다") + void given_shopLikeCancel_when_shop_like_not_exists_then_throw_BpException() { // given final List mockedOperationEntities = Arrays.asList( Operation.of("두피 문신 시술", "두피 문신 시술 설명"), @@ -357,7 +355,8 @@ void given_shopLikeCancel_when_shop_like_not_exists_then_throw_alreadyProcessedE ) ); - final Shop testShop = Shop.from(requestForTest); + final Shop testShop = ShopService.createShopEntityFromShopRegistrationRequest( + requestForTest); testShop.increaseLikeCount(); shopRepository.saveAndFlush(testShop); @@ -366,7 +365,7 @@ void given_shopLikeCancel_when_shop_like_not_exists_then_throw_alreadyProcessedE // when & then assertThatThrownBy( () -> shopService.cancelLikeShop(testShop.getId(), memberEmail)).isInstanceOf( - AlreadyProcessedException.class); + BpCustomException.class); } @Test @@ -461,11 +460,12 @@ void given_shopRegistrationWithAllFields_when_succeed_then_allFieldsAreStoredInD assertThat(insertedShop.getRegisteredTime()).isLessThan(System.currentTimeMillis()); assertThat(insertedShop.getUpdated()).isLessThan(System.currentTimeMillis()); - assertThat(insertedShop.getBusinessTime().openTime()).hasHour(9); - assertThat(insertedShop.getBusinessTime().closeTime()).hasHour(18); - assertThat(insertedShop.getBusinessTime().breakBeginTime()).hasHour(13); - assertThat(insertedShop.getBusinessTime().breakEndTime()).hasHour(14); - assertThat(insertedShop.getBusinessTime().offDayOfWeek()).hasSize(2); + + assertThat(insertedShop.getBusinessTime().getOpenTime()).hasHour(9); + assertThat(insertedShop.getBusinessTime().getCloseTime()).hasHour(18); + assertThat(insertedShop.getBusinessTime().getBreakBeginTime()).hasHour(13); + assertThat(insertedShop.getBusinessTime().getBreakEndTime()).hasHour(14); + assertThat(insertedShop.getBusinessTime().getOffDayOfWeek()).hasSize(2); assertThat(insertedShop.getShopAddress().getDongCode()).isNotBlank(); assertThat(insertedShop.getShopAddress().getSiDoName()).isNotBlank(); @@ -590,11 +590,11 @@ void given_shopRegistrationAsyncWithAllFields_when_succeed_then_allFieldsAreStor assertThat(insertedShop.getRegisteredTime()).isLessThan(System.currentTimeMillis()); assertThat(insertedShop.getUpdated()).isLessThan(System.currentTimeMillis()); - assertThat(insertedShop.getBusinessTime().openTime()).hasHour(9); - assertThat(insertedShop.getBusinessTime().closeTime()).hasHour(18); - assertThat(insertedShop.getBusinessTime().breakBeginTime()).hasHour(13); - assertThat(insertedShop.getBusinessTime().breakEndTime()).hasHour(14); - assertThat(insertedShop.getBusinessTime().offDayOfWeek()).hasSize(2); + assertThat(insertedShop.getBusinessTime().getOpenTime()).hasHour(9); + assertThat(insertedShop.getBusinessTime().getCloseTime()).hasHour(18); + assertThat(insertedShop.getBusinessTime().getBreakBeginTime()).hasHour(13); + assertThat(insertedShop.getBusinessTime().getBreakEndTime()).hasHour(14); + assertThat(insertedShop.getBusinessTime().getOffDayOfWeek()).hasSize(2); assertThat(insertedShop.getShopAddress().getDongCode()).isNotBlank(); assertThat(insertedShop.getShopAddress().getSiDoName()).isNotBlank(); diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ReviewServiceTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ReviewServiceTest.java index 9faea49..9bfb8a1 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ReviewServiceTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ReviewServiceTest.java @@ -9,23 +9,23 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.member.UserRoleMemberRegistrationRequest; -import com.beautify_project.bp_app_api.dto.review.FindReviewListRequestParameters; -import com.beautify_project.bp_app_api.dto.review.ReviewFindResult; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.Address; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.BusinessTime; -import com.beautify_project.bp_app_api.entity.Member; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.entity.Reservation; -import com.beautify_project.bp_app_api.entity.Review; -import com.beautify_project.bp_app_api.entity.Shop; -import com.beautify_project.bp_app_api.enumeration.OrderType; -import com.beautify_project.bp_app_api.enumeration.ReviewSortBy; -import com.beautify_project.bp_app_api.exception.NotFoundException; -import com.beautify_project.bp_app_api.repository.ReviewRepository; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_app_api.exception.BpCustomException; +import com.beautify_project.bp_app_api.request.member.UserRoleMemberRegistrationRequest; +import com.beautify_project.bp_app_api.request.review.FindReviewListRequestParameters; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.Address; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.BusinessTime; +import com.beautify_project.bp_app_api.response.ResponseMessage; +import com.beautify_project.bp_app_api.response.review.ReviewFindResult; +import com.beautify_project.bp_mysql.entity.Member; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.entity.Reservation; +import com.beautify_project.bp_mysql.entity.Review; +import com.beautify_project.bp_mysql.entity.Shop; +import com.beautify_project.bp_mysql.enums.OrderType; +import com.beautify_project.bp_mysql.enums.ReviewSortBy; +import com.beautify_project.bp_mysql.repository.ReviewRepository; +import com.beautify_project.bp_utils.UUIDGenerator; import java.time.LocalTime; import java.util.ArrayList; import java.util.Arrays; @@ -68,7 +68,7 @@ void given_reviewFindRequest_when_succeed_then_returnResponseMessageWrappingRevi // given final UserRoleMemberRegistrationRequest userRoleMemberRegistrationRequest = new UserRoleMemberRegistrationRequest( "dev.sssukho@mgail.com", "password", "임석호", "010-1234-5678"); - final Member mockedMember = Member.createSelfAuthMember(userRoleMemberRegistrationRequest); + final Member mockedMember = MemberService.createNewSelfAuthMember(userRoleMemberRegistrationRequest); final Operation mockedOperation = Operation.of("시술명", "시술 설명"); final ShopRegistrationRequest requestForMockedShop = new ShopRegistrationRequest( "미용시술소1", @@ -102,7 +102,8 @@ void given_reviewFindRequest_when_succeed_then_returnResponseMessageWrappingRevi "90" ) ); - final Shop mockedShop = Shop.from(requestForMockedShop); + final Shop mockedShop = ShopService.createShopEntityFromShopRegistrationRequest( + requestForMockedShop); final Reservation mockedReservation = Reservation.of(System.currentTimeMillis(), mockedMember.getEmail(), mockedShop.getId(), mockedOperation.getId()); final Review mockedReview = Review.of("4.5", "리뷰 내용", mockedMember.getEmail(), @@ -138,7 +139,7 @@ void given_reviewFindRequestWithNotExistedReviewId_when_failed_then_throwNotFoun // when & then assertThatThrownBy(() -> reviewService.findReview(notExistedReviewId)).isInstanceOf( - NotFoundException.class); + BpCustomException.class); } @Test @@ -147,7 +148,7 @@ void given_reviewFindListRequest_when_succeed_then_getResponseMessageWRappingRev // given final UserRoleMemberRegistrationRequest userRoleMemberRegistrationRequest = new UserRoleMemberRegistrationRequest( "dev.sssukho@mgail.com", "password", "임석호", "010-1234-5678"); - final Member mockedMember = Member.createSelfAuthMember(userRoleMemberRegistrationRequest); + final Member mockedMember = MemberService.createNewSelfAuthMember(userRoleMemberRegistrationRequest); final Operation mockedOperation = Operation.of("시술명", "시술 설명"); final ShopRegistrationRequest requestForMockedShop = new ShopRegistrationRequest( "미용시술소1", @@ -181,7 +182,7 @@ void given_reviewFindListRequest_when_succeed_then_getResponseMessageWRappingRev "90" ) ); - final Shop mockedShop = Shop.from(requestForMockedShop); + final Shop mockedShop = ShopService.createShopEntityFromShopRegistrationRequest(requestForMockedShop); final Reservation mockedReservation = Reservation.of(System.currentTimeMillis(), mockedMember.getEmail(), mockedShop.getId(), mockedOperation.getId()); final Review mockedReview1 = Review.of("4.5", "리뷰 내용", mockedMember.getEmail(), @@ -228,7 +229,7 @@ void given_reviewFindListRequestWithNotExistedShopId_when_failed_then_throwNotFo // when & then assertThatThrownBy( () -> reviewService.findReviewListInShop(requestParameters)).isInstanceOf( - NotFoundException.class); + BpCustomException.class); } @Test diff --git a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ShopServiceTest.java b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ShopServiceTest.java index 5ffbfaf..5e5bcb9 100644 --- a/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ShopServiceTest.java +++ b/bp-app-api/src/test/java/com/beautify_project/bp_app_api/service/ShopServiceTest.java @@ -7,18 +7,20 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.beautify_project.bp_app_api.dto.common.ResponseMessage; -import com.beautify_project.bp_app_api.dto.shop.ShopListFindRequestParameters; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.Address; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest.BusinessTime; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationResult; -import com.beautify_project.bp_app_api.entity.Facility; -import com.beautify_project.bp_app_api.entity.Operation; -import com.beautify_project.bp_app_api.entity.Shop; -import com.beautify_project.bp_app_api.enumeration.OrderType; import com.beautify_project.bp_app_api.enumeration.ShopSearchType; -import com.beautify_project.bp_app_api.repository.ShopRepository; +import com.beautify_project.bp_app_api.provider.image.ImageProvider; +import com.beautify_project.bp_app_api.request.shop.ShopListFindRequestParameters; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.Address; +import com.beautify_project.bp_app_api.request.shop.ShopRegistrationRequest.BusinessTime; +import com.beautify_project.bp_app_api.response.ResponseMessage; +import com.beautify_project.bp_app_api.response.image.PreSignedGetUrlResult; +import com.beautify_project.bp_app_api.response.shop.ShopRegistrationResult; +import com.beautify_project.bp_mysql.entity.Facility; +import com.beautify_project.bp_mysql.entity.Operation; +import com.beautify_project.bp_mysql.entity.Shop; +import com.beautify_project.bp_mysql.enums.OrderType; +import com.beautify_project.bp_mysql.repository.ShopRepository; import java.time.LocalTime; import java.util.Arrays; import java.util.List; @@ -55,7 +57,7 @@ class ShopServiceTest { private ShopCategoryService shopCategoryService; @Mock - private ImageService imageService; + private ImageProvider imageProvider; @Test @DisplayName("Shop 등록 요청시 모든 필드값이 있는 경우 등록에 성공 후 ResponseMessage 를 리턴한다.") @@ -109,7 +111,7 @@ void given_shopRegisterWithAllFields_when_succeed_then_returnResponseMessageWrap ) ); - Shop mockedRegisteredShop = Shop.from(mockedRequest); + Shop mockedRegisteredShop = ShopService.createShopEntityFromShopRegistrationRequest(mockedRequest); when(shopRepository.save(any(Shop.class))).thenReturn(mockedRegisteredShop); when(shopOperationService.registerShopOperations(any(String.class), anyList())).thenReturn( null); @@ -175,7 +177,7 @@ void given_shopRegisterWithoutOperation_when_succeed_then_returnResponseMessageW ) ); - Shop mockedRegisteredShop = Shop.from(mockedRequest); + Shop mockedRegisteredShop = ShopService.createShopEntityFromShopRegistrationRequest(mockedRequest); when(shopRepository.save(any(Shop.class))).thenReturn(mockedRegisteredShop); when(shopFacilityService.registerShopFacilities(any(String.class), anyList())).thenReturn( @@ -234,7 +236,7 @@ void given_shopRegisterWithoutFacility_when_succeed_then_returnResponseMessageWr ) ); - Shop mockedRegisteredShop = Shop.from(mockedRequest); + Shop mockedRegisteredShop = ShopService.createShopEntityFromShopRegistrationRequest(mockedRequest); when(shopRepository.save(any(Shop.class))).thenReturn(mockedRegisteredShop); when(shopOperationService.registerShopOperations(any(String.class), anyList())).thenReturn( @@ -306,12 +308,13 @@ void given_shopListFind_when_succeed_then_returnResponseMessageWrappingShopFindR ) ); - Shop mockedRegisteredShop = Shop.from(mockedRequest); + Shop mockedRegisteredShop = ShopService.createShopEntityFromShopRegistrationRequest(mockedRequest); List mockedShopList = List.of(mockedRegisteredShop); Page mockedPage = new PageImpl<>(mockedShopList); when(shopRepository.findAll(any(Pageable.class))).thenReturn(mockedPage); - when(imageService.issuePreSignedGetUrl(any(String.class))).thenReturn("presigned-get-url"); + when(imageProvider.providePreSignedGetUrlByFileId(any(String.class))).thenReturn( + new PreSignedGetUrlResult("presigned-get-url")); // when ResponseMessage responseMessage = shopService.findShopList(parameters); diff --git a/bp-common/build.gradle b/bp-common/build.gradle new file mode 100644 index 0000000..95503a2 --- /dev/null +++ b/bp-common/build.gradle @@ -0,0 +1,3 @@ +dependencies { + implementation 'jakarta.validation:jakarta.validation-api:3.0.2' +} diff --git a/bp-domain-mysql/build.gradle b/bp-domain-mysql/build.gradle new file mode 100644 index 0000000..2f26652 --- /dev/null +++ b/bp-domain-mysql/build.gradle @@ -0,0 +1,19 @@ +plugins { + id 'org.springframework.boot' version '3.3.5' + id 'io.spring.dependency-management' version '1.1.6' + id 'io.freefair.lombok' version '8.11' +} + +dependencies { + implementation project(':bp-common') + implementation project(':bp-utils') + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' + implementation 'org.apache.commons:commons-lang3:3.14.0' + + runtimeOnly 'com.mysql:mysql-connector-j:9.1.0' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' + + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' +} diff --git a/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/BpDomainMySqlApplication.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/BpDomainMySqlApplication.java new file mode 100644 index 0000000..7471290 --- /dev/null +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/BpDomainMySqlApplication.java @@ -0,0 +1,8 @@ +package com.beautify_project.bp_mysql; + +public class BpDomainMySqlApplication { + + public static void main(String[] args) { + + } +} diff --git a/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/config/JpaConfig.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/config/JpaConfig.java new file mode 100644 index 0000000..3425dd2 --- /dev/null +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/config/JpaConfig.java @@ -0,0 +1,12 @@ +package com.beautify_project.bp_mysql.config; + +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@Configuration +@EnableJpaRepositories(basePackages = {"com.beautify_project.bp_mysql.repository"}) +@EntityScan(basePackages = {"com.beautify_project.bp_mysql.entity"}) +public class JpaConfig { + +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/BaseEntity.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/BaseEntity.java similarity index 85% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/BaseEntity.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/BaseEntity.java index 7e72113..5f98551 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/BaseEntity.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/BaseEntity.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.listener.CustomEntityListener; +import com.beautify_project.bp_mysql.entity.listener.CustomEntityListener; import jakarta.persistence.Column; import jakarta.persistence.EntityListeners; import jakarta.persistence.MappedSuperclass; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Category.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Category.java similarity index 90% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Category.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Category.java index eabd673..a53f4af 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Category.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Category.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_utils.UUIDGenerator; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/EmailCertification.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/EmailCertification.java similarity index 92% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/EmailCertification.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/EmailCertification.java index e26c179..83f937c 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/EmailCertification.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/EmailCertification.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.listener.CustomEntityListener; +import com.beautify_project.bp_mysql.entity.listener.CustomEntityListener; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EntityListeners; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/EntityType.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/EntityType.java similarity index 69% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/EntityType.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/EntityType.java index a989278..f94ea63 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/EntityType.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/EntityType.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.enumeration; +package com.beautify_project.bp_mysql.entity; public enum EntityType { SHOP, diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Facility.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Facility.java similarity index 89% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Facility.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Facility.java index d02f983..d9a89c6 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Facility.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Facility.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_utils.UUIDGenerator; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Member.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Member.java similarity index 50% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Member.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Member.java index e538ded..2d380e2 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Member.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Member.java @@ -1,10 +1,9 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.dto.member.UserRoleMemberRegistrationRequest; -import com.beautify_project.bp_app_api.enumeration.AuthType; -import com.beautify_project.bp_app_api.enumeration.MemberStatus; -import com.beautify_project.bp_app_api.enumeration.Role; -import com.beautify_project.bp_app_api.listener.CustomEntityListener; +import com.beautify_project.bp_mysql.entity.enumerated.AuthType; +import com.beautify_project.bp_mysql.entity.enumerated.MemberStatus; +import com.beautify_project.bp_mysql.entity.enumerated.UserRole; +import com.beautify_project.bp_mysql.entity.listener.CustomEntityListener; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EntityListeners; @@ -16,8 +15,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import org.springframework.data.domain.Persistable; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; @Entity @Table(name = "member") @@ -26,9 +23,6 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member extends BaseEntity implements Persistable { - private static final PasswordEncoder PASSWORD_ENCODER = new BCryptPasswordEncoder(); - public static final String DEFAULT_PASSWORD = "DEFAULT_PASSWORD"; - @Id @Column(name = "member_email") private String email; @@ -48,7 +42,7 @@ public class Member extends BaseEntity implements Persistable { @Column(name = "member_role") @Enumerated(EnumType.STRING) - private Role role; + private UserRole role; @Column(name = "member_account_status") @Enumerated(EnumType.STRING) @@ -57,9 +51,9 @@ public class Member extends BaseEntity implements Persistable { @Column(name = "member_registered_time") private Long registeredTime; - public Member(final String email, final String password, final String name, + private Member(final String email, final String password, final String name, final String contact, final AuthType authType, - final Role role, final MemberStatus status, final Long registeredTime) { + final UserRole role, final MemberStatus status, final Long registeredTime) { this.email = email; this.password = password; this.name = name; @@ -70,23 +64,12 @@ public Member(final String email, final String password, final String name, this.registeredTime = registeredTime; } - public static Member createSelfAuthMember(UserRoleMemberRegistrationRequest request) { - return new Member(request.email(), encryptPassword(request.password()), request.name(), - request.contact(), AuthType.BP, Role.USER, MemberStatus.ACTIVE, - System.currentTimeMillis()); - } - - public static Member createThirdPartyAuthMember(final String email, AuthType authType) { - return new Member(email, encryptPassword(DEFAULT_PASSWORD), null, null, authType, Role.USER, - MemberStatus.NEED_TO_SIGN_UP, System.currentTimeMillis()); - } - - private static String encryptPassword(final String plainPassword) { - return PASSWORD_ENCODER.encode(plainPassword); - } + public static Member createNewMember(final String email, final String password, + final String name, final String contact, final AuthType authType, final UserRole userRole, + final MemberStatus memberStatus, final Long registeredTime) { - public boolean passwordMatches(final String inputPassword) { - return PASSWORD_ENCODER.matches(password, inputPassword); + return new Member(email, password, name, contact, authType, userRole, memberStatus, + registeredTime); } @Override diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Operation.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Operation.java similarity index 90% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Operation.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Operation.java index 23a036b..6494978 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Operation.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Operation.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_utils.UUIDGenerator; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/OperationCategory.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/OperationCategory.java similarity index 97% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/OperationCategory.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/OperationCategory.java index 70ff58f..50557fd 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/OperationCategory.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/OperationCategory.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Reservation.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Reservation.java similarity index 92% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Reservation.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Reservation.java index 060ab29..ac61f65 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Reservation.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Reservation.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_utils.UUIDGenerator; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Review.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Review.java similarity index 88% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Review.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Review.java index 1e23239..8ec3c05 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Review.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Review.java @@ -1,11 +1,10 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_utils.UUIDGenerator; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; -import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -18,7 +17,6 @@ public class Review { @Id @Column(name = "review_id") - @NotNull private String id; @Column(name = "review_rate") @@ -31,19 +29,15 @@ public class Review { private Long registeredTime; @Column(name = "member_email") - @NotNull private String memberEmail; @Column(name = "operation_id") - @NotNull private String operationId; @Column(name = "shop_id") - @NotNull private String shopId; @Column(name = "reservation_id") - @NotNull private String reservationId; private Review(final String id, final String rate, final String content, diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Shop.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Shop.java similarity index 66% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Shop.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Shop.java index 31f2af4..4328014 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/Shop.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/Shop.java @@ -1,9 +1,8 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; -import com.beautify_project.bp_app_api.dto.shop.ShopRegistrationRequest; -import com.beautify_project.bp_app_api.entity.embedded.Address; -import com.beautify_project.bp_app_api.entity.embedded.BusinessTime; -import com.beautify_project.bp_app_api.utils.UUIDGenerator; +import com.beautify_project.bp_mysql.entity.embedded.Address; +import com.beautify_project.bp_mysql.entity.embedded.BusinessTime; +import com.beautify_project.bp_utils.UUIDGenerator; import jakarta.persistence.AttributeOverride; import jakarta.persistence.Column; import jakarta.persistence.Embedded; @@ -101,42 +100,13 @@ private Shop(final String id, final String name, final String contact, final Str this.businessTime = businessTime; } - public static Shop from(final ShopRegistrationRequest registrationRequest) { + public static Shop newShop(final String name, final String contact, final String url, + final String introduction, final List imageFileIds, Address address, + BusinessTime businessTime) { + long currentTime = System.currentTimeMillis(); return new Shop( - UUIDGenerator.generate(), - registrationRequest.name(), - registrationRequest.contact(), - registrationRequest.url(), - registrationRequest.introduction(), - "0.0", // rate - 0L, // likes - System.currentTimeMillis(), // registeredTime - System.currentTimeMillis(), // updated - registrationRequest.imageFileIds(), - Address.builder() - .dongCode(registrationRequest.address().dongCode()) - .siDoName(registrationRequest.address().siDoName()) - .siGoonGooName(registrationRequest.address().siGoonGooName()) - .eubMyunDongName(registrationRequest.address().eubMyunDongName()) - .roadNameCode(registrationRequest.address().roadNameCode()) - .roadName(registrationRequest.address().roadName()) - .underGround(registrationRequest.address().underGround()) - .roadMainNum(registrationRequest.address().roadMainNum()) - .roadSubNum(registrationRequest.address().roadSubNum()) - .siGoonGooBuildingName(registrationRequest.address().siGoonGooBuildingName()) - .zipCode(registrationRequest.address().zipCode()) - .apartComplex(registrationRequest.address().apartComplex()) - .eubMyunDongSerialNumber(registrationRequest.address().eubMyunDongSerialNumber()) - .latitude(registrationRequest.address().latitude()) - .longitude(registrationRequest.address().longitude()) - .build(), - BusinessTime.builder() - .openTime(registrationRequest.businessTime().openTime()) - .closeTime(registrationRequest.businessTime().closeTime()) - .breakBeginTime(registrationRequest.businessTime().breakBeginTime()) - .breakEndTime(registrationRequest.businessTime().breakEndTime()) - .offDayOfWeek(registrationRequest.businessTime().offDayOfWeek()).build() - ); + UUIDGenerator.generate(), name, contact, url, introduction, "0.0", 0L, currentTime, + currentTime, imageFileIds, address, businessTime); } public void increaseLikeCount() { diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopCategory.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopCategory.java similarity index 96% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopCategory.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopCategory.java index 5a4b541..1107cf6 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopCategory.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopCategory.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopFacility.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopFacility.java similarity index 96% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopFacility.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopFacility.java index 6737a14..83b09d4 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopFacility.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopFacility.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopLike.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopLike.java similarity index 97% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopLike.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopLike.java index d3a3021..95e9ade 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopLike.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopLike.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopOperation.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopOperation.java similarity index 97% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopOperation.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopOperation.java index 2948fc7..b7d866c 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/ShopOperation.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/ShopOperation.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.entity; +package com.beautify_project.bp_mysql.entity; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/embedded/Address.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/embedded/Address.java similarity index 77% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/embedded/Address.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/embedded/Address.java index c92fd95..5758470 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/entity/embedded/Address.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/embedded/Address.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.entity.embedded; +package com.beautify_project.bp_mysql.entity.embedded; import jakarta.persistence.Embeddable; import lombok.AccessLevel; @@ -51,6 +51,18 @@ private Address(final String dongCode, final String siDoName, final String siGoo this.longitude = longitude; } + public static Address of(final String dongCode, final String siDoName, + final String siGoonGooName, final String eubMyunDongName, final String roadNameCode, + final String roadName, final String underGround, final String roadMainNum, + final String roadSubNum, final String siGoonGooBuildingName, final String zipCode, + final String apartComplex, final String eubMyunDongSerialNumber, final String latitude, + final String longitude) { + + return new Address(dongCode, siDoName, siGoonGooName, eubMyunDongName, roadNameCode, + roadName, underGround, roadMainNum, roadSubNum, siGoonGooBuildingName, zipCode, + apartComplex, eubMyunDongSerialNumber, latitude, longitude); + } + @Override public String toString() { return "Address{" + diff --git a/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/embedded/BusinessTime.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/embedded/BusinessTime.java new file mode 100644 index 0000000..b13886b --- /dev/null +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/embedded/BusinessTime.java @@ -0,0 +1,44 @@ +package com.beautify_project.bp_mysql.entity.embedded; + +import jakarta.persistence.Embeddable; +import java.time.LocalTime; +import java.util.List; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Embeddable +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class BusinessTime { + + private LocalTime openTime; + private LocalTime closeTime; + private LocalTime breakBeginTime; + private LocalTime breakEndTime; + private List offDayOfWeek; + + private BusinessTime(final LocalTime openTime, final LocalTime closeTime, + final LocalTime breakBeginTime, final LocalTime breakEndTime, + final List offDayOfWeek) { + this.openTime = openTime; + this.closeTime = closeTime; + this.breakBeginTime = breakBeginTime; + this.breakEndTime = breakEndTime; + this.offDayOfWeek = offDayOfWeek; + } + + public static BusinessTime of(final LocalTime openTime, final LocalTime closeTime, + final LocalTime breakBeginTime, final LocalTime breakEndTime, + final List offDayOfWeek) { + return new BusinessTime(openTime, closeTime, breakBeginTime, breakEndTime, offDayOfWeek); + } + + @Override + public String toString() { + return "BusinessTime{" + "openTime=" + openTime + ", closeTime=" + closeTime + + ", breakBeginTime=" + breakBeginTime + ", breakEndTime=" + breakEndTime + + ", offDayOfWeek=" + offDayOfWeek + '}'; + } +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/AuthType.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/AuthType.java similarity index 71% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/AuthType.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/AuthType.java index f2da40b..710f1e7 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/AuthType.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/AuthType.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.enumeration; +package com.beautify_project.bp_mysql.entity.enumerated; -import com.beautify_project.bp_app_api.exception.EnumMismatchException; +import com.beautify_project.bp_mysql.exception.EnumMismatchException; public enum AuthType { NAVER, KAKAO, BP; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/MemberStatus.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/MemberStatus.java similarity index 55% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/MemberStatus.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/MemberStatus.java index 4e3a364..5c6c4a6 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/MemberStatus.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/MemberStatus.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.enumeration; +package com.beautify_project.bp_mysql.entity.enumerated; public enum MemberStatus { IDLE, LOCKED, NEED_TO_SIGN_UP, ACTIVE diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/Role.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/UserRole.java similarity index 54% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/Role.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/UserRole.java index 6e42092..3ab584e 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/Role.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/enumerated/UserRole.java @@ -1,17 +1,17 @@ -package com.beautify_project.bp_app_api.enumeration; +package com.beautify_project.bp_mysql.entity.enumerated; -import com.beautify_project.bp_app_api.exception.EnumMismatchException; +import com.beautify_project.bp_mysql.exception.EnumMismatchException; -public enum Role { +public enum UserRole { USER, ADMIN, OWNER; - private static final String PREFIX_FOR_SECURITY_FILTER_CHAIN = "ROLE_"; + private static final String PREFIX_FOR_SECURITY_FILTER_CHAIN = "ROILE_"; - public static Role from(final String input) { + public static UserRole from(final String input) { try { return valueOf(input.toUpperCase()); } catch (IllegalArgumentException exception) { - throw new EnumMismatchException(Role.class.getName(), input); + throw new EnumMismatchException(UserRole.class.getName(), input); } } diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/listener/CustomEntityListener.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/listener/CustomEntityListener.java similarity index 74% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/listener/CustomEntityListener.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/listener/CustomEntityListener.java index f0a71dd..2573f7e 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/listener/CustomEntityListener.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/entity/listener/CustomEntityListener.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.listener; +package com.beautify_project.bp_mysql.entity.listener; -import com.beautify_project.bp_app_api.entity.BaseEntity; +import com.beautify_project.bp_mysql.entity.BaseEntity; import jakarta.persistence.EntityListeners; import jakarta.persistence.PrePersist; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/OrderType.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums/OrderType.java similarity index 73% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/OrderType.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums/OrderType.java index df5b2f1..36fe789 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/OrderType.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums/OrderType.java @@ -1,7 +1,7 @@ -package com.beautify_project.bp_app_api.enumeration; +package com.beautify_project.bp_mysql.enums; -import com.beautify_project.bp_app_api.exception.EnumMismatchException; +import com.beautify_project.bp_mysql.exception.EnumMismatchException; public enum OrderType { ASC, diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/ReviewSortBy.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums/ReviewSortBy.java similarity index 81% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/ReviewSortBy.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums/ReviewSortBy.java index 221829a..dbe13a6 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/enumeration/ReviewSortBy.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/enums/ReviewSortBy.java @@ -1,6 +1,7 @@ -package com.beautify_project.bp_app_api.enumeration; +package com.beautify_project.bp_mysql.enums; -import com.beautify_project.bp_app_api.exception.EnumMismatchException; + +import com.beautify_project.bp_mysql.exception.EnumMismatchException; import org.apache.commons.lang3.StringUtils; public enum ReviewSortBy { diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/EnumMismatchException.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/exception/EnumMismatchException.java similarity index 90% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/EnumMismatchException.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/exception/EnumMismatchException.java index 58292e1..48342c4 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/exception/EnumMismatchException.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/exception/EnumMismatchException.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.exception; +package com.beautify_project.bp_mysql.exception; import lombok.Getter; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/CategoryRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/CategoryRepository.java similarity index 72% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/CategoryRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/CategoryRepository.java index 2537593..ee752d2 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/CategoryRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/CategoryRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.Category; +import com.beautify_project.bp_mysql.entity.Category; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/EmailCertificationRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/EmailCertificationRepository.java similarity index 77% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/EmailCertificationRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/EmailCertificationRepository.java index 0033892..2a1a260 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/EmailCertificationRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/EmailCertificationRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.EmailCertification; +import com.beautify_project.bp_mysql.entity.EmailCertification; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/FacilityRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/FacilityRepository.java similarity index 72% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/FacilityRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/FacilityRepository.java index 454af02..62139bb 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/FacilityRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/FacilityRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.Facility; +import com.beautify_project.bp_mysql.entity.Facility; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/MemberRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/MemberRepository.java similarity index 65% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/MemberRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/MemberRepository.java index 6558037..de8290f 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/MemberRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/MemberRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.Member; +import com.beautify_project.bp_mysql.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/OperationCategoryRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/OperationCategoryRepository.java similarity index 63% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/OperationCategoryRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/OperationCategoryRepository.java index 2094661..6cb3a2d 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/OperationCategoryRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/OperationCategoryRepository.java @@ -1,7 +1,7 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.OperationCategory; -import com.beautify_project.bp_app_api.entity.OperationCategory.OperationCategoryId; +import com.beautify_project.bp_mysql.entity.OperationCategory; +import com.beautify_project.bp_mysql.entity.OperationCategory.OperationCategoryId; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/OperationRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/OperationRepository.java similarity index 73% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/OperationRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/OperationRepository.java index 325b7f9..a96f18b 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/OperationRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/OperationRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.Operation; +import com.beautify_project.bp_mysql.entity.Operation; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ReservationRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ReservationRepository.java similarity index 57% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ReservationRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ReservationRepository.java index 5f6771e..5cba33b 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ReservationRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ReservationRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.Reservation; +import com.beautify_project.bp_mysql.entity.Reservation; import org.springframework.data.jpa.repository.JpaRepository; public interface ReservationRepository extends JpaRepository { diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ReviewRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ReviewRepository.java similarity index 65% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ReviewRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ReviewRepository.java index e5dea18..d55b193 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ReviewRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ReviewRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.Review; +import com.beautify_project.bp_mysql.entity.Review; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopCategoryRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopCategoryRepository.java similarity index 54% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopCategoryRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopCategoryRepository.java index 0b80f77..60d6999 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopCategoryRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopCategoryRepository.java @@ -1,7 +1,7 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.ShopCategory; -import com.beautify_project.bp_app_api.entity.ShopCategory.ShopCategoryId; +import com.beautify_project.bp_mysql.entity.ShopCategory; +import com.beautify_project.bp_mysql.entity.ShopCategory.ShopCategoryId; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopFacilityRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopFacilityRepository.java similarity index 62% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopFacilityRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopFacilityRepository.java index 290f090..80585b4 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopFacilityRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopFacilityRepository.java @@ -1,7 +1,7 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.ShopFacility; -import com.beautify_project.bp_app_api.entity.ShopFacility.ShopFacilityId; +import com.beautify_project.bp_mysql.entity.ShopFacility; +import com.beautify_project.bp_mysql.entity.ShopFacility.ShopFacilityId; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopLikeRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopLikeRepository.java similarity index 54% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopLikeRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopLikeRepository.java index aee7f00..5d42589 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopLikeRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopLikeRepository.java @@ -1,7 +1,7 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.ShopLike; -import com.beautify_project.bp_app_api.entity.ShopLike.ShopLikeId; +import com.beautify_project.bp_mysql.entity.ShopLike; +import com.beautify_project.bp_mysql.entity.ShopLike.ShopLikeId; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopOperationRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopOperationRepository.java similarity index 62% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopOperationRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopOperationRepository.java index 5176f3e..ed71e5b 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopOperationRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopOperationRepository.java @@ -1,7 +1,7 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.ShopOperation; -import com.beautify_project.bp_app_api.entity.ShopOperation.ShopOperationId; +import com.beautify_project.bp_mysql.entity.ShopOperation; +import com.beautify_project.bp_mysql.entity.ShopOperation.ShopOperationId; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopRepository.java b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopRepository.java similarity index 76% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopRepository.java rename to bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopRepository.java index 55d7b49..9ff6727 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/repository/ShopRepository.java +++ b/bp-domain-mysql/src/main/java/com/beautify_project/bp_mysql/repository/ShopRepository.java @@ -1,6 +1,6 @@ -package com.beautify_project.bp_app_api.repository; +package com.beautify_project.bp_mysql.repository; -import com.beautify_project.bp_app_api.entity.Shop; +import com.beautify_project.bp_mysql.entity.Shop; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/bp-app-api/src/main/resources/datasource-local.yml b/bp-domain-mysql/src/main/resources/mysql-config/application-local.yml similarity index 100% rename from bp-app-api/src/main/resources/datasource-local.yml rename to bp-domain-mysql/src/main/resources/mysql-config/application-local.yml diff --git a/bp-app-api/src/main/resources/datasource-prod.yml b/bp-domain-mysql/src/main/resources/mysql-config/application-prod.yml similarity index 95% rename from bp-app-api/src/main/resources/datasource-prod.yml rename to bp-domain-mysql/src/main/resources/mysql-config/application-prod.yml index bdc9245..d0e075d 100644 --- a/bp-app-api/src/main/resources/datasource-prod.yml +++ b/bp-domain-mysql/src/main/resources/mysql-config/application-prod.yml @@ -8,7 +8,7 @@ spring: jpa: hibernate: dialect: org.hibernate.dialect.MySQL8Dialect - ddl-auto: validate + ddl-auto: create properties: hibernate: format_sql: true diff --git a/bp-domain-mysql/src/test/java/com/beautify_project/bp_mysql/BpDomainMysqlApplicationTests.java b/bp-domain-mysql/src/test/java/com/beautify_project/bp_mysql/BpDomainMysqlApplicationTests.java new file mode 100644 index 0000000..c440b22 --- /dev/null +++ b/bp-domain-mysql/src/test/java/com/beautify_project/bp_mysql/BpDomainMysqlApplicationTests.java @@ -0,0 +1,13 @@ +package com.beautify_project.bp_mysql; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class BpDomainMysqlApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/bp-app-api/src/main/resources/storage-local.yml b/bp-s3-client/src/main/resources/s3-client-config/application-local.yml similarity index 100% rename from bp-app-api/src/main/resources/storage-local.yml rename to bp-s3-client/src/main/resources/s3-client-config/application-local.yml diff --git a/bp-app-api/src/main/resources/storage-prod.yml b/bp-s3-client/src/main/resources/s3-client-config/application-prod.yml similarity index 100% rename from bp-app-api/src/main/resources/storage-prod.yml rename to bp-s3-client/src/main/resources/s3-client-config/application-prod.yml diff --git a/bp-s3-client/src/main/resources/naver-cloud-platform-auth.yml b/bp-s3-client/src/main/resources/s3-client-config/naver-cloud-platform-auth.yml similarity index 100% rename from bp-s3-client/src/main/resources/naver-cloud-platform-auth.yml rename to bp-s3-client/src/main/resources/s3-client-config/naver-cloud-platform-auth.yml diff --git a/bp-utils/build.gradle b/bp-utils/build.gradle index e69de29..6be4656 100644 --- a/bp-utils/build.gradle +++ b/bp-utils/build.gradle @@ -0,0 +1,3 @@ +dependencies { + implementation 'org.apache.commons:commons-lang3:3.14.0' +} diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils/UUIDGenerator.java b/bp-utils/src/main/java/com/beautify_project/bp_utils/UUIDGenerator.java similarity index 86% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils/UUIDGenerator.java rename to bp-utils/src/main/java/com/beautify_project/bp_utils/UUIDGenerator.java index 811fefd..c07aa4d 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils/UUIDGenerator.java +++ b/bp-utils/src/main/java/com/beautify_project/bp_utils/UUIDGenerator.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.utils; +package com.beautify_project.bp_utils; import java.util.UUID; diff --git a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils/Validator.java b/bp-utils/src/main/java/com/beautify_project/bp_utils/Validator.java similarity index 93% rename from bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils/Validator.java rename to bp-utils/src/main/java/com/beautify_project/bp_utils/Validator.java index 8365230..a9a6883 100644 --- a/bp-app-api/src/main/java/com/beautify_project/bp_app_api/utils/Validator.java +++ b/bp-utils/src/main/java/com/beautify_project/bp_utils/Validator.java @@ -1,4 +1,4 @@ -package com.beautify_project.bp_app_api.utils; +package com.beautify_project.bp_utils; import java.util.List; import org.apache.commons.lang3.StringUtils; diff --git a/settings.gradle b/settings.gradle index 1da6a90..7de973c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ rootProject.name = 'beautify-project' include ':bp-app-api', ':bp-app-batch', ':bp-kafka-event-publisher', - ':bp-kafka-event-consumer', ':bp-utils', ':bp-s3-client' + ':bp-kafka-event-consumer', ':bp-utils', ':bp-s3-client', ':bp-domain-mysql', ':bp-common'