Skip to content

Commit 15a94cf

Browse files
authored
Merge pull request #163 from 9oormthon-univ/fix/storeDetail
Fix/store detail
2 parents d52f7c2 + 4167458 commit 15a94cf

File tree

8 files changed

+113
-33
lines changed

8 files changed

+113
-33
lines changed

src/main/java/com/jangburich/domain/menu/controller/MenuController.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import java.util.List;
44

55
import org.springframework.data.domain.Page;
6-
import org.springframework.data.domain.Pageable;
76
import org.springframework.security.core.Authentication;
87
import org.springframework.web.bind.annotation.DeleteMapping;
98
import org.springframework.web.bind.annotation.GetMapping;
@@ -15,7 +14,6 @@
1514
import org.springframework.web.bind.annotation.RestController;
1615

1716
import com.jangburich.domain.menu.domain.MenuCreateRequestDTO;
18-
import com.jangburich.domain.menu.domain.MenuGetResponseDTO;
1917
import com.jangburich.domain.menu.domain.MenuResponse;
2018
import com.jangburich.domain.menu.domain.MenuUpdateRequestDTO;
2119
import com.jangburich.domain.menu.service.MenuService;
@@ -58,9 +56,8 @@ public ResponseCustom<Message> deleteMenu(
5856
}
5957

6058
@GetMapping("")
61-
public ResponseCustom<Page<MenuResponse>> getMenu(
62-
Authentication authentication, Pageable pageable) {
63-
Page<MenuResponse> menu = menuService.getMenu(AuthenticationParser.parseUserId(authentication), pageable);
59+
public ResponseCustom<List<MenuResponse>> getMenu(Authentication authentication) {
60+
List<MenuResponse> menu = menuService.getMenu(AuthenticationParser.parseUserId(authentication));
6461
return ResponseCustom.OK(menu);
6562
}
6663
}

src/main/java/com/jangburich/domain/menu/repository/MenuRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import org.springframework.data.jpa.repository.Query;
1212

1313
public interface MenuRepository extends JpaRepository<Menu, Long> {
14-
Page<MenuResponse> findAllByStore(Store store, Pageable pageable);
14+
List<MenuResponse> findAllByStore(Store store);
1515

1616
@Query("SELECT m.id, m.price FROM Menu m WHERE m.id IN :menuIds")
1717
List<Object[]> findPricesByMenuIds(List<Long> menuIds);

src/main/java/com/jangburich/domain/menu/service/MenuService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.jangburich.domain.menu.service;
22

3+
import java.util.List;
4+
35
import org.springframework.data.domain.Page;
46
import org.springframework.data.domain.Pageable;
57
import org.springframework.stereotype.Service;
@@ -74,7 +76,7 @@ public void deleteMenu(String customOAuthUser, Long id) {
7476
menuRepository.delete(menu);
7577
}
7678

77-
public Page<MenuResponse> getMenu(String customOAuthUser, Pageable pageable) {
79+
public List<MenuResponse> getMenu(String customOAuthUser) {
7880
User user = userRepository.findByProviderId(customOAuthUser)
7981
.orElseThrow(() -> new DefaultNullPointerException(ErrorCode.INVALID_AUTHENTICATION));
8082

@@ -84,6 +86,6 @@ public Page<MenuResponse> getMenu(String customOAuthUser, Pageable pageable) {
8486
Store store = storeRepository.findByOwner(owner)
8587
.orElseThrow(() -> new DefaultNullPointerException(ErrorCode.INVALID_STORE_ID));
8688

87-
return menuRepository.findAllByStore(store, pageable);
89+
return menuRepository.findAllByStore(store);
8890
}
8991
}

src/main/java/com/jangburich/domain/store/domain/Store.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.time.DayOfWeek;
44
import java.time.LocalTime;
5+
import java.time.format.DateTimeFormatter;
56
import java.util.List;
67

78
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -99,7 +100,9 @@ public static Store create(Owner owner) {
99100
return newOwner;
100101
}
101102

102-
public static Store of(Owner owner, StoreCreateRequestDTO storeCreateRequestDTO) {
103+
public static Store of(Owner owner, StoreCreateRequestDTO storeCreateRequestDTO, List<DayOfWeek> dayOfWeeks) {
104+
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
105+
103106
Store newStore = new Store();
104107
newStore.setOwner(owner);
105108
newStore.setName(storeCreateRequestDTO.getStoreName());
@@ -108,11 +111,18 @@ public static Store of(Owner owner, StoreCreateRequestDTO storeCreateRequestDTO)
108111
newStore.setLatitude(storeCreateRequestDTO.getLatitude());
109112
newStore.setLongitude(storeCreateRequestDTO.getLongitude());
110113
newStore.setAddress(storeCreateRequestDTO.getAddress());
111-
newStore.setAddress(storeCreateRequestDTO.getAddress());
112114
newStore.setLocation(storeCreateRequestDTO.getLocation());
113-
newStore.setWorkDays(storeCreateRequestDTO.getDayOfWeek());
114-
newStore.setOpenTime(storeCreateRequestDTO.getOpenTime());
115-
newStore.setCloseTime(storeCreateRequestDTO.getCloseTime());
115+
newStore.setWorkDays(dayOfWeeks);
116+
newStore.setOpenTime(
117+
storeCreateRequestDTO.getOpenTime() != null
118+
? LocalTime.parse(storeCreateRequestDTO.getOpenTime(), timeFormatter)
119+
: null
120+
);
121+
newStore.setCloseTime(
122+
storeCreateRequestDTO.getCloseTime() != null
123+
? LocalTime.parse(storeCreateRequestDTO.getCloseTime(), timeFormatter)
124+
: null
125+
);
116126
newStore.setContactNumber(storeCreateRequestDTO.getPhoneNumber());
117127
newStore.setReservationAvailable(storeCreateRequestDTO.getReservationAvailable());
118128
newStore.setMaxReservation(storeCreateRequestDTO.getMaxReservation());

src/main/java/com/jangburich/domain/store/domain/StoreCreateRequestDTO.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.jangburich.domain.store.domain;
22

3-
import java.time.DayOfWeek;
43
import java.time.LocalDate;
54
import java.time.LocalTime;
5+
import java.time.format.DateTimeFormatter;
66
import java.util.List;
77

88
import com.jangburich.domain.menu.domain.MenuCreateRequestDTO;
@@ -17,6 +17,7 @@
1717
@Setter
1818
@RequiredArgsConstructor
1919
public class StoreCreateRequestDTO {
20+
2021
private String storeName;
2122
private String phoneNumber;
2223
private String businessName;
@@ -30,21 +31,32 @@ public class StoreCreateRequestDTO {
3031
@Enumerated(EnumType.STRING)
3132
private Category category;
3233

33-
// address
3434
private Double latitude;
3535
private Double longitude;
3636
private String address;
3737
private String location;
3838

39-
// business hour
40-
private List<DayOfWeek> dayOfWeek;
41-
private LocalTime openTime;
42-
private LocalTime closeTime;
39+
private String dayOfWeek;
40+
private String openTime;
41+
private String closeTime;
4342

4443
private List<MenuCreateRequestDTO> menuCreateRequestDTOS;
4544

4645
private Long minPrepayment;
4746
private Long prepaymentDuration;
4847
private Boolean reservationAvailable;
4948
private Long maxReservation;
49+
50+
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
51+
52+
public void setOpenTime(LocalTime openTime) {
53+
this.openTime = openTime != null ? openTime.format(TIME_FORMATTER) : null;
54+
}
55+
56+
public void setCloseTime(LocalTime closeTime) {
57+
this.closeTime = closeTime != null ? closeTime.format(TIME_FORMATTER) : null;
58+
}
5059
}
60+
61+
62+

src/main/java/com/jangburich/domain/store/domain/StoreGetResponseDTO.java

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.jangburich.domain.store.domain;
22

33
import java.time.DayOfWeek;
4-
import java.time.LocalTime;
4+
import java.time.format.DateTimeFormatter;
55
import java.util.List;
6+
import java.util.stream.Collectors;
7+
8+
import com.jangburich.domain.menu.domain.MenuResponse;
69

710
import jakarta.persistence.EnumType;
811
import jakarta.persistence.Enumerated;
@@ -31,16 +34,19 @@ public class StoreGetResponseDTO {
3134
private Double longitude;
3235
private String address;
3336
private String location;
34-
private List<DayOfWeek> dayOfWeek;
35-
private LocalTime openTime;
36-
private LocalTime closeTime;
37+
private String dayOfWeek;
38+
private String openTime;
39+
private String closeTime;
40+
private List<MenuResponse> menuResponses;
41+
42+
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
3743

3844
public StoreGetResponseDTO(Long id, String ownerId, String name, Category category, String representativeImage,
3945
Boolean reservationAvailable, Long maxReservation, Long minPrepayment, Long prepaymentDuration,
4046
String introduction,
41-
Double latitude, Double longitude, String address, String location, List<DayOfWeek> dayOfWeek,
42-
LocalTime openTime,
43-
LocalTime closeTime) {
47+
Double latitude, Double longitude, String address, String location, String dayOfWeek,
48+
String openTime,
49+
String closeTime, List<MenuResponse> menuResponses) {
4450
this.id = id;
4551
this.ownerId = ownerId;
4652
this.name = name;
@@ -58,9 +64,27 @@ public StoreGetResponseDTO(Long id, String ownerId, String name, Category catego
5864
this.dayOfWeek = dayOfWeek;
5965
this.openTime = openTime;
6066
this.closeTime = closeTime;
67+
this.menuResponses = menuResponses;
6168
}
6269

63-
public StoreGetResponseDTO of(Store store) {
70+
private String convertDayOfWeekToKorean(DayOfWeek dayOfWeek) {
71+
return switch (dayOfWeek) {
72+
case MONDAY -> "월";
73+
case TUESDAY -> "화";
74+
case WEDNESDAY -> "수";
75+
case THURSDAY -> "목";
76+
case FRIDAY -> "금";
77+
case SATURDAY -> "토";
78+
case SUNDAY -> "일";
79+
default -> throw new IllegalArgumentException("Invalid DayOfWeek");
80+
};
81+
}
82+
83+
public StoreGetResponseDTO of(Store store, List<MenuResponse> menuResponses) {
84+
String dayOfWeekString = store.getWorkDays().stream()
85+
.map(this::convertDayOfWeekToKorean)
86+
.collect(Collectors.joining(", "));
87+
6488
return new StoreGetResponseDTO(
6589
store.getId(),
6690
store.getOwner().getUser().getProviderId(),
@@ -76,9 +100,10 @@ public StoreGetResponseDTO of(Store store) {
76100
store.getLongitude(),
77101
store.getAddress(),
78102
store.getLocation(),
79-
store.getWorkDays(),
80-
store.getOpenTime(),
81-
store.getCloseTime()
103+
dayOfWeekString,
104+
store.getOpenTime().format(TIME_FORMATTER),
105+
store.getCloseTime().format(TIME_FORMATTER),
106+
menuResponses
82107
);
83108
}
84109
}

src/main/java/com/jangburich/domain/store/service/StoreService.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.jangburich.domain.store.service;
22

3+
import java.time.DayOfWeek;
34
import java.time.LocalDate;
45
import java.time.LocalDateTime;
56
import java.util.ArrayList;
@@ -13,6 +14,7 @@
1314

1415
import com.jangburich.domain.menu.domain.Menu;
1516
import com.jangburich.domain.menu.domain.MenuCreateRequestDTO;
17+
import com.jangburich.domain.menu.domain.MenuResponse;
1618
import com.jangburich.domain.menu.repository.MenuRepository;
1719
import com.jangburich.domain.order.domain.Cart;
1820
import com.jangburich.domain.order.domain.OrderResponse;
@@ -49,6 +51,7 @@
4951
import com.jangburich.global.config.s3.S3Service;
5052
import com.jangburich.global.error.DefaultNullPointerException;
5153
import com.jangburich.global.payload.ErrorCode;
54+
import com.jangburich.utils.DayOfWeekConverter;
5255

5356
import lombok.RequiredArgsConstructor;
5457

@@ -79,7 +82,9 @@ public void createStore(String authentication, StoreCreateRequestDTO storeCreate
7982
Owner owner = ownerRepository.findByUser(user)
8083
.orElseThrow(() -> new DefaultNullPointerException(ErrorCode.INVALID_AUTHENTICATION));
8184

82-
Store store = storeRepository.save(Store.of(owner, storeCreateRequestDTO));
85+
List<DayOfWeek> dayOfWeekList = DayOfWeekConverter.convertStringToDayOfWeekList(storeCreateRequestDTO.getDayOfWeek());
86+
87+
Store store = storeRepository.save(Store.of(owner, storeCreateRequestDTO, dayOfWeekList));
8388

8489
store.setRepresentativeImage(s3Service.uploadImageToS3(image));
8590

@@ -104,7 +109,6 @@ public void createStore(String authentication, StoreCreateRequestDTO storeCreate
104109
}
105110
}
106111
}
107-
108112
}
109113

110114
@Transactional
@@ -206,7 +210,9 @@ public StoreGetResponseDTO getStoreInfo(String authentication) {
206210
throw new DefaultNullPointerException(ErrorCode.INVALID_AUTHENTICATION);
207211
}
208212

209-
return new StoreGetResponseDTO().of(store);
213+
List<MenuResponse> menus = menuRepository.findAllByStore(store);
214+
215+
return new StoreGetResponseDTO().of(store, menus);
210216
}
211217

212218
public List<com.jangburich.domain.store.dto.StoreTeamResponse> getPaymentGroup(String userId) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.jangburich.utils;
2+
3+
import java.time.DayOfWeek;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
import java.util.stream.Collectors;
7+
8+
public class DayOfWeekConverter {
9+
10+
public static DayOfWeek convertKoreanToDayOfWeek(String koreanDay) {
11+
return switch (koreanDay.trim()) {
12+
case "월" -> DayOfWeek.MONDAY;
13+
case "화" -> DayOfWeek.TUESDAY;
14+
case "수" -> DayOfWeek.WEDNESDAY;
15+
case "목" -> DayOfWeek.THURSDAY;
16+
case "금" -> DayOfWeek.FRIDAY;
17+
case "토" -> DayOfWeek.SATURDAY;
18+
case "일" -> DayOfWeek.SUNDAY;
19+
default -> throw new IllegalArgumentException("Invalid day: " + koreanDay);
20+
};
21+
}
22+
23+
public static List<DayOfWeek> convertStringToDayOfWeekList(String daysString) {
24+
return Arrays.stream(daysString.split(","))
25+
.map(DayOfWeekConverter::convertKoreanToDayOfWeek)
26+
.collect(Collectors.toList());
27+
}
28+
}

0 commit comments

Comments
 (0)