Skip to content

Commit 76ab975

Browse files
이주승이주승
authored andcommitted
feet : 준비되지 않은 업체 조회 방지
1 parent d3cd10c commit 76ab975

File tree

5 files changed

+38
-2
lines changed

5 files changed

+38
-2
lines changed

src/main/java/com/drinkhere/drinklystore/domain/dto/request/UpdateStoreRequest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ public record UpdateStoreRequest(
4242

4343
@Schema(description = "이용 가능한 가능한 요일", example = "[\"\", \"\", \"\", \"\", \"\"]", required = false)
4444
@Size(max = 50, message = "이용 가능한 가능한 요일은 50자 이하로 입력해야 합니다.")
45-
String availableDays
45+
String availableDays,
46+
47+
Boolean isReady
4648
) {
4749
}

src/main/java/com/drinkhere/drinklystore/domain/dto/response/GetStoresByLocationResponse.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
import com.drinkhere.drinklystore.util.JsonUtil;
99

1010
import java.time.DayOfWeek;
11+
import java.time.LocalDate;
1112
import java.time.LocalTime;
1213
import java.time.format.DateTimeFormatter;
1314
import java.util.List;
15+
import java.util.StringTokenizer;
1416
import java.util.stream.Collectors;
1517

1618
public record GetStoresByLocationResponse(
@@ -20,6 +22,7 @@ public record GetStoresByLocationResponse(
2022
String latitude,
2123
String longitude,
2224
String isOpen,
25+
boolean isAvailable,
2326
String openingInfo,
2427
String storeTel,
2528
String storeAddress,
@@ -93,13 +96,36 @@ public static GetStoresByLocationResponse toDto(Store store, PresignedUrlService
9396
}
9497
}
9598

99+
100+
DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();
101+
String koreanDay = switch (dayOfWeek) {
102+
case MONDAY -> "월";
103+
case TUESDAY -> "화";
104+
case WEDNESDAY -> "수";
105+
case THURSDAY -> "목";
106+
case FRIDAY -> "금";
107+
case SATURDAY -> "토";
108+
case SUNDAY -> "일";
109+
};
110+
111+
boolean isAvailable = false;
112+
StringTokenizer st = new StringTokenizer(store.getAvailableDays(), " ");
113+
while (st.hasMoreTokens()) {
114+
String token = st.nextToken();
115+
if (token.equals(koreanDay) && isOpen.equals("영업중")) {
116+
isAvailable = true;
117+
break;
118+
}
119+
}
120+
96121
return new GetStoresByLocationResponse(
97122
store.getId(),
98123
store.getStoreName(),
99124
presignedUrl,
100125
store.getLatitude(),
101126
store.getLongitude(),
102127
isOpen,
128+
isAvailable,
103129
openingInfo,
104130
store.getStoreTel(),
105131
store.getStoreAddress(),

src/main/java/com/drinkhere/drinklystore/domain/entity/Store.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ public class Store extends BaseTimeEntity {
6363
@Column(name = "business_registration_number", nullable = false)
6464
private String businessRegistrationNumber;
6565

66+
@Column(name = "is_ready" , nullable = false)
67+
private Boolean isReady;
68+
6669
@Builder
6770
public Store(Long ownerId, String storeName, String storeTel, String storeAddress, String storeDetailAddress, String businessRegistrationNumber, String latitude, String longitude) {
6871
this.ownerId = ownerId;
@@ -73,6 +76,7 @@ public Store(Long ownerId, String storeName, String storeTel, String storeAddres
7376
this.businessRegistrationNumber = businessRegistrationNumber;
7477
this.latitude = latitude;
7578
this.longitude = longitude;
79+
this.isReady = false;
7680
}
7781
public void setId(Long id) {this.id = id;}
7882
public void setStoreName(String storeName) {
@@ -106,5 +110,7 @@ public void setInstagramUrl(String instagramUrl) {
106110
public void setAvailableDays(String availableDays) {
107111
this.availableDays = availableDays;
108112
}
113+
114+
public void setIsReady(boolean isReady) {this.isReady = isReady; }
109115
}
110116

src/main/java/com/drinkhere/drinklystore/domain/repository/StoreRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ default Store findByIdOrThrow(Long id) {
3636
+ sin(radians(:latitude)) * sin(radians(CAST(s.latitude AS DOUBLE)))
3737
)
3838
) < :radius
39+
AND s.is_ready = true
3940
AND (:searchKeyword IS NULL OR s.store_name LIKE %:searchKeyword%)
4041
ORDER BY distance ASC
4142
""", nativeQuery = true)
@@ -46,7 +47,7 @@ List<Store> findStoresByLocation(@Param("latitude") double latitude,
4647

4748

4849

49-
@Query("SELECT s FROM Store s LEFT JOIN FETCH s.storeImages WHERE s.id = :storeId")
50+
@Query("SELECT s FROM Store s LEFT JOIN FETCH s.storeImages WHERE s.id = :storeId AND s.isReady = true")
5051
Optional<Store> findByIdWithImages(@Param("storeId") Long storeId);
5152

5253
default Store findByIdWithImagesOrThrow(Long storeId) {

src/main/java/com/drinkhere/drinklystore/domain/service/store/StoreCommandService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public Store updateStore(Store store, UpdateStoreRequest updateStoreRequest) {
3939
if (updateStoreRequest.storeAddress() != null) store.setStoreAddress(updateStoreRequest.storeAddress());
4040
if (updateStoreRequest.instagramUrl() != null) store.setInstagramUrl(updateStoreRequest.instagramUrl());
4141
if (updateStoreRequest.availableDays() != null) store.setAvailableDays(updateStoreRequest.availableDays());
42+
if (updateStoreRequest.isReady() != null) store.setIsReady(updateStoreRequest.isReady());
4243

4344
// DirtyChecking
4445
return store;

0 commit comments

Comments
 (0)