From e3f871d155ac02d23c3bf68b5e7bf17bc583d8ac Mon Sep 17 00:00:00 2001 From: kgy1008 Date: Tue, 20 Aug 2024 22:28:48 +0900 Subject: [PATCH] [fix] add validation condition --- .../hankkiserver/api/store/controller/StoreController.java | 2 +- .../request/StoreDuplicateValidationRequest.java | 3 ++- .../hankki/hankkiserver/api/store/service/StoreFinder.java | 4 ++-- .../hankkiserver/api/store/service/StoreQueryService.java | 2 +- .../api/store/service/command/StoreValidationCommand.java | 7 ++++--- .../domain/store/repository/StoreRepository.java | 4 ++-- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/hankki/hankkiserver/api/store/controller/StoreController.java b/src/main/java/org/hankki/hankkiserver/api/store/controller/StoreController.java index 72199b30..aa0795ff 100644 --- a/src/main/java/org/hankki/hankkiserver/api/store/controller/StoreController.java +++ b/src/main/java/org/hankki/hankkiserver/api/store/controller/StoreController.java @@ -83,7 +83,7 @@ public HankkiResponse deleteHeartStore(@UserId final Long u @PostMapping("/stores/validate") public HankkiResponse validateDuplicatedStore(@RequestBody final StoreDuplicateValidationRequest request) { - return HankkiResponse.success(CommonSuccessCode.OK, storeQueryService.validateDuplicatedStore(StoreValidationCommand.of(request.universityId(), request.latitude(), request.longitude()))); + return HankkiResponse.success(CommonSuccessCode.OK, storeQueryService.validateDuplicatedStore(StoreValidationCommand.of(request.universityId(), request.latitude(), request.longitude(), request.storeName()))); } @PostMapping("/stores") diff --git a/src/main/java/org/hankki/hankkiserver/api/store/controller/request/StoreDuplicateValidationRequest.java b/src/main/java/org/hankki/hankkiserver/api/store/controller/request/StoreDuplicateValidationRequest.java index 2e310c42..b3e1b505 100644 --- a/src/main/java/org/hankki/hankkiserver/api/store/controller/request/StoreDuplicateValidationRequest.java +++ b/src/main/java/org/hankki/hankkiserver/api/store/controller/request/StoreDuplicateValidationRequest.java @@ -3,6 +3,7 @@ public record StoreDuplicateValidationRequest( long universityId, double latitude, - double longitude + double longitude, + String storeName ) { } diff --git a/src/main/java/org/hankki/hankkiserver/api/store/service/StoreFinder.java b/src/main/java/org/hankki/hankkiserver/api/store/service/StoreFinder.java index e87d3c7f..37af0ad3 100644 --- a/src/main/java/org/hankki/hankkiserver/api/store/service/StoreFinder.java +++ b/src/main/java/org/hankki/hankkiserver/api/store/service/StoreFinder.java @@ -29,8 +29,8 @@ protected Store findByIdWithHeartAndIsDeletedFalse(final Long id) { .orElseThrow(() -> new NotFoundException(StoreErrorCode.STORE_NOT_FOUND)); } - protected Optional findByLatitudeAndLongitudeWhereIsDeletedFalse(final double latitude, final double longitude) { - return storeRepository.findByPoint_LatitudeAndPoint_LongitudeAndIsDeletedFalse(latitude, longitude); + protected Optional findByLatitudeAndLongitudeAndNameWhereIsDeletedFalse(final double latitude, final double longitude, String name) { + return storeRepository.findByLatitudeAndLongitudeAndNameWhereIsDeletedFalse(latitude, longitude, name); } protected boolean existsByLatitudeAndLongitude(final double latitude, final double longitude) { diff --git a/src/main/java/org/hankki/hankkiserver/api/store/service/StoreQueryService.java b/src/main/java/org/hankki/hankkiserver/api/store/service/StoreQueryService.java index 58421b42..675ad1cd 100644 --- a/src/main/java/org/hankki/hankkiserver/api/store/service/StoreQueryService.java +++ b/src/main/java/org/hankki/hankkiserver/api/store/service/StoreQueryService.java @@ -92,7 +92,7 @@ private boolean hasSameUserId(final Long id, final Heart heart) { @Transactional(readOnly = true) public StoreDuplicateValidationResponse validateDuplicatedStore(final StoreValidationCommand command) { - return storeFinder.findByLatitudeAndLongitudeWhereIsDeletedFalse(command.latitude(), command.longitude()) + return storeFinder.findByLatitudeAndLongitudeAndNameWhereIsDeletedFalse(command.latitude(), command.longitude(), command.name()) .map(store -> StoreDuplicateValidationResponse.of(store.getId(), universityStoreFinder.existsByUniversityIdAndStore(command.universityId(), store))) .orElseGet(() -> StoreDuplicateValidationResponse.of(null, false)); } diff --git a/src/main/java/org/hankki/hankkiserver/api/store/service/command/StoreValidationCommand.java b/src/main/java/org/hankki/hankkiserver/api/store/service/command/StoreValidationCommand.java index 39fa4404..6f66e30d 100644 --- a/src/main/java/org/hankki/hankkiserver/api/store/service/command/StoreValidationCommand.java +++ b/src/main/java/org/hankki/hankkiserver/api/store/service/command/StoreValidationCommand.java @@ -3,9 +3,10 @@ public record StoreValidationCommand ( long universityId, double latitude, - double longitude + double longitude, + String name ) { - public static StoreValidationCommand of(long universityId, double latitude, double longitude) { - return new StoreValidationCommand(universityId, latitude, longitude); + public static StoreValidationCommand of(long universityId, double latitude, double longitude, String name) { + return new StoreValidationCommand(universityId, latitude, longitude, name); } } diff --git a/src/main/java/org/hankki/hankkiserver/domain/store/repository/StoreRepository.java b/src/main/java/org/hankki/hankkiserver/domain/store/repository/StoreRepository.java index 9916a65f..b53ee3bd 100644 --- a/src/main/java/org/hankki/hankkiserver/domain/store/repository/StoreRepository.java +++ b/src/main/java/org/hankki/hankkiserver/domain/store/repository/StoreRepository.java @@ -15,8 +15,8 @@ public interface StoreRepository extends JpaRepository, CustomStore @Query("select distinct s from Store s left join fetch s.hearts where s.id = :id and s.isDeleted = false") Optional findByIdWithHeartAndIsDeletedFalse(Long id); - @Query("select s from Store s where s.point.latitude = :latitude and s.point.longitude = :longitude and s.isDeleted = false") - Optional findByPoint_LatitudeAndPoint_LongitudeAndIsDeletedFalse(double latitude, double longitude); + @Query("select s from Store s where s.point.latitude = :latitude and s.point.longitude = :longitude and s.name = :name and s.isDeleted = false") + Optional findByLatitudeAndLongitudeAndNameWhereIsDeletedFalse(double latitude, double longitude, String name); boolean existsByPoint_LatitudeAndPoint_Longitude(double latitude, double longitude);