From e49b38686e1d4d1f6a0cd86ad93a28d50c07bccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Fri, 2 Aug 2024 23:55:39 +0900 Subject: [PATCH] feat: error fix --- .../store/application/StoreInfoUseCase.java | 16 +++++++++-- .../commonmodule/config/WebClientConfig.java | 23 +++++++++++++++ .../VisitList/domain/VisitList.java | 4 +++ .../market/service/MarketQueryService.java | 28 +++++++++++++++++++ .../menu/service/MenuQueryService.java | 3 -- 5 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 common-module/src/main/java/com/likelion/commonmodule/config/WebClientConfig.java diff --git a/api-module/src/main/java/com/likelion/apimodule/store/application/StoreInfoUseCase.java b/api-module/src/main/java/com/likelion/apimodule/store/application/StoreInfoUseCase.java index 674dcd8..9c7feb8 100644 --- a/api-module/src/main/java/com/likelion/apimodule/store/application/StoreInfoUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/store/application/StoreInfoUseCase.java @@ -9,6 +9,9 @@ import com.likelion.coremodule.cart.service.CartQueryService; import com.likelion.coremodule.menu.domain.Menu; import com.likelion.coremodule.menu.service.MenuQueryService; +import com.likelion.coremodule.order.domain.Order; +import com.likelion.coremodule.order.domain.OrderItem; +import com.likelion.coremodule.order.service.OrderQueryService; import com.likelion.coremodule.review.domain.Review; import com.likelion.coremodule.review.service.ReviewQueryService; import com.likelion.coremodule.store.domain.Store; @@ -34,6 +37,7 @@ public class StoreInfoUseCase { private final CartQueryService cartQueryService; private final ReviewQueryService reviewQueryService; private final JwtUtil jwtUtil; + private final OrderQueryService orderQueryService; public List findStoreInfo() { @@ -55,8 +59,16 @@ public List findStoreInfo() { List reviews = new ArrayList<>(); for (Menu m : menus) { - List review = reviewQueryService.findReviewsByMenuId(m.getId()); - reviews.addAll(review); + + List items = orderQueryService.findOrderItemsByMenuId(m.getId()); + for (OrderItem item : items) { + if (orderQueryService.countOrderById(item.getOrder().getId()) > 0) { + Order order = orderQueryService.findOrderById(item.getOrder().getId()); + + List review = reviewQueryService.findAllByOrderId(order.getId()); + reviews.addAll(review); + } + } } final StoreInfo storeInfo = getStoreInfo(store, reviews, menuDetails); diff --git a/common-module/src/main/java/com/likelion/commonmodule/config/WebClientConfig.java b/common-module/src/main/java/com/likelion/commonmodule/config/WebClientConfig.java new file mode 100644 index 0000000..ff9887d --- /dev/null +++ b/common-module/src/main/java/com/likelion/commonmodule/config/WebClientConfig.java @@ -0,0 +1,23 @@ +package com.likelion.commonmodule.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.util.DefaultUriBuilderFactory; + +@Configuration +public class WebClientConfig { + @Bean + public DefaultUriBuilderFactory defaultUriBuilderFactory() { + final DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(); + factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE); + return factory; + } + + @Bean + public WebClient webClient() { + return WebClient.builder() + .uriBuilderFactory(defaultUriBuilderFactory()) + .build(); + } +} diff --git a/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java b/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java index 40cde00..b6503dc 100644 --- a/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java +++ b/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java @@ -32,6 +32,10 @@ public class VisitList extends BaseEntity { private VisitStatus visit_status; + public void updateToPreparing() { + this.visit_status = VisitStatus.PREPARING; + } + public void updateToPrepared() { this.visit_status = VisitStatus.PREPARED; } diff --git a/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java b/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java index a365b24..acd414c 100644 --- a/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java @@ -5,6 +5,7 @@ import com.likelion.coremodule.VisitList.exception.VisitErrorCode; import com.likelion.coremodule.VisitList.exception.VisitException; import com.likelion.coremodule.VisitList.repository.VisitListRepository; +import com.likelion.coremodule.VisitList.service.VisitListQueryService; import com.likelion.coremodule.market.domain.Market; import com.likelion.coremodule.market.domain.MarketQrVisit; import com.likelion.coremodule.market.exception.MarketErrorCode; @@ -17,6 +18,7 @@ import com.likelion.coremodule.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.List; @@ -27,6 +29,7 @@ public class MarketQueryService { private final MarketRepository marketRepository; private final MarketQrVisitRepository marketQrVisitRepository; + private final VisitListQueryService visitListQueryService; private final UserQueryService userQueryService; private final StoreQueryService storeQueryService; private final VisitListRepository visitListRepository; @@ -47,6 +50,31 @@ public Integer findMyMarketVisit(Long marketId, Long userId) { return marketQrVisitRepository.countAllByMarketIdAndUserUserId(marketId, userId); } + @Transactional + public void saveVisitListToPreparing(Long storeId, String email) { + + User user = userQueryService.findByEmail(email); + Store store = storeQueryService.findStoreById(storeId); + + // 현재 날짜 가져오기 + LocalDate today = LocalDate.now(); + + // 오늘 동일한 사용자가 동일한 가게를 방문한 기록이 있는지 확인 + if (visitListRepository.findVisitListByUserUserIdAndStoreIdAndVisitedDate(user.getUserId(), storeId, today) != null) { + VisitList visitList = visitListRepository.findVisitListByUserUserIdAndStoreIdAndVisitedDate(user.getUserId(), storeId, today); + visitList.updateToPreparing(); + } else { + final VisitList visitList = VisitList.builder() + .store(store) + .user(user) + .visit_status(VisitStatus.PREPARING) + .visitedDate(today) + .build(); + visitListRepository.save(visitList); + } + } + + @Transactional public void saveVisitList(Long storeId, String email) { User user = userQueryService.findByEmail(email); diff --git a/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java b/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java index 1d8ce27..d7c9f51 100644 --- a/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java @@ -16,17 +16,14 @@ public class MenuQueryService { private final MenuRepository menuRepository; public List findAllMenus() { - return menuRepository.findAll(); } public Menu findMenuById(Long menuId) { - return menuRepository.findById(menuId).orElseThrow(() -> new MenuException(MenuErrorCode.NO_MENU_INFO)); } public List findMenusByStoreId(Long storeId) { - return menuRepository.findAllByStoreId(storeId); } }