Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🚀 3단계 - 기능 우선 패키지 구성하기 #332

Open
wants to merge 1 commit into
base: jordy-torvalds
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.infra;
package kitchenpos.common.infra;

Comment on lines +1 to 2

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.
├── Application.java
├── common
│   └── infra
│       ├── DefaultPurgomalumClient.java
│       └── PurgomalumClient.java
├── delivery
│   └── infra
│       ├── DefaultKitchenridersClient.java
│       └── KitchenridersClient.java
├── menu
│   ├── api
│   │   └── MenuRestController.java
│   ├── application
│   │   └── MenuService.java
│   ├── domain
│   │   ├── Menu.java
│   │   ├── MenuProduct.java
│   │   └── MenuRepository.java
│   └── infra
│       └── JpaMenuRepository.java
├── menugroup
│   ├── api
│   │   └── MenuGroupRestController.java
│   ├── application
│   │   └── MenuGroupService.java
│   ├── domain
│   │   ├── MenuGroup.java
│   │   └── MenuGroupRepository.java
│   └── infra
│       └── JpaMenuGroupRepository.java
├── order
│   ├── api
│   │   └── OrderRestController.java
│   ├── application
│   │   └── OrderService.java
│   ├── domain
│   │   ├── Order.java
│   │   ├── OrderLineItem.java
│   │   ├── OrderRepository.java
│   │   ├── OrderStatus.java
│   │   └── OrderType.java
│   └── infra
│       └── JpaOrderRepository.java
├── ordertable
│   ├── api
│   │   └── OrderTableRestController.java
│   ├── application
│   │   └── OrderTableService.java
│   ├── domain
│   │   ├── OrderTable.java
│   │   └── OrderTableRepository.java
│   └── infra
│       └── JpaOrderTableRepository.java
└── product
    ├── api
    │   └── ProductRestController.java
    ├── application
    │   └── ProductService.java
    ├── domain
    │   ├── Product.java
    │   └── ProductRepository.java
    └── infra
        └── JpaProductRepository.java

전체적으로 잘 나눠주셨습니다. :)

현재 Order BC가 하나로 합쳐져 있는데요. 나눠보는 것도 고려해 보시면 좋을 것 같습니다.
개인적으로 생각해 봤는데요. 나눴을 때 고려해 볼 부분은 중복되는 부분들은 어떻게 할 것인가? 일 것 같아요.

  • OrderType이 필요한가?
    • 클래스명으로 표현 가능하지 않을까? EatinOrder DeliveryOrder TakeoutOrder
  • 하나의 OrderStatus로 각 주문의 상태들을 파악할 수 있을까?
  • Repository는 Aggregate 하나이니 나눠지는 것이 맞지 않을까?
  • OrderService는 각 주문마다 usecase가 다르니 나눠지는 것이 관리 측면에서 좋지 않을까?

정도로 고민해 봤어요.

  1. KitchenridersClient 는 delivery로 나눠져 있는데요. Order랑 합쳐볼 수 도 있지 않을까요?
  • deliveryOrder 에서만 사용해서요.
  1. menu, menugroup이 별도의 BC로 나누신 원식님 생각을 들어보고 싶어요. 🙂
  2. order, ordertabler 도 별도의 BC라고 봐주신 걸까요?

원식님도 피드백 한번 주시면 좋을 것 같습니다. 🙂

import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.stereotype.Component;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.infra;
package kitchenpos.common.infra;

public interface PurgomalumClient {
boolean containsProfanity(String text);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.infra;
package kitchenpos.delivery.infra;

import org.springframework.stereotype.Component;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.infra;
package kitchenpos.delivery.infra;

import java.math.BigDecimal;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.ui;
package kitchenpos.menu.api;

import kitchenpos.application.MenuService;
import kitchenpos.domain.Menu;
import kitchenpos.menu.application.MenuService;
import kitchenpos.menu.domain.Menu;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package kitchenpos.application;
package kitchenpos.menu.application;

import kitchenpos.domain.*;
import kitchenpos.infra.PurgomalumClient;
import kitchenpos.common.infra.PurgomalumClient;
import kitchenpos.menu.domain.Menu;
import kitchenpos.menu.domain.MenuProduct;
import kitchenpos.menu.domain.MenuRepository;
import kitchenpos.menugroup.domain.MenuGroup;
import kitchenpos.menugroup.domain.MenuGroupRepository;
import kitchenpos.product.domain.Product;
import kitchenpos.product.domain.ProductRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package kitchenpos.domain;
package kitchenpos.menu.domain;

import kitchenpos.menugroup.domain.MenuGroup;

import javax.persistence.*;
import java.math.BigDecimal;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package kitchenpos.domain;
package kitchenpos.menu.domain;

import kitchenpos.product.domain.Product;

import javax.persistence.*;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.menu.domain;

import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package kitchenpos.domain;
package kitchenpos.menu.infra;

import kitchenpos.menu.domain.Menu;
import kitchenpos.menu.domain.MenuRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.ui;
package kitchenpos.menugroup.api;

import kitchenpos.application.MenuGroupService;
import kitchenpos.domain.MenuGroup;
import kitchenpos.menugroup.application.MenuGroupService;
import kitchenpos.menugroup.domain.MenuGroup;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.application;
package kitchenpos.menugroup.application;

import kitchenpos.domain.MenuGroup;
import kitchenpos.domain.MenuGroupRepository;
import kitchenpos.menugroup.domain.MenuGroup;
import kitchenpos.menugroup.domain.MenuGroupRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.menugroup.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.menugroup.domain;

import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package kitchenpos.domain;
package kitchenpos.menugroup.infra;

import kitchenpos.menugroup.domain.MenuGroup;
import kitchenpos.menugroup.domain.MenuGroupRepository;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.ui;
package kitchenpos.order.api;

import kitchenpos.application.OrderService;
import kitchenpos.domain.Order;
import kitchenpos.order.application.OrderService;
import kitchenpos.order.domain.Order;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package kitchenpos.application;
package kitchenpos.order.application;

import kitchenpos.domain.*;
import kitchenpos.infra.KitchenridersClient;
import kitchenpos.delivery.infra.KitchenridersClient;
import kitchenpos.menu.domain.Menu;
import kitchenpos.menu.domain.MenuRepository;
import kitchenpos.order.domain.*;
import kitchenpos.ordertable.domain.OrderTable;
import kitchenpos.ordertable.domain.OrderTableRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package kitchenpos.domain;
package kitchenpos.order.domain;

import kitchenpos.ordertable.domain.OrderTable;

import javax.persistence.*;
import java.time.LocalDateTime;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package kitchenpos.domain;
package kitchenpos.order.domain;

import kitchenpos.menu.domain.Menu;

import javax.persistence.*;
import java.math.BigDecimal;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package kitchenpos.domain;
package kitchenpos.order.domain;

import kitchenpos.ordertable.domain.OrderTable;

import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.order.domain;

public enum OrderStatus {
WAITING, ACCEPTED, SERVED, DELIVERING, DELIVERED, COMPLETED
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.order.domain;

public enum OrderType {
DELIVERY, TAKEOUT, EAT_IN
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package kitchenpos.domain;
package kitchenpos.order.infra;

import kitchenpos.order.domain.Order;
import kitchenpos.order.domain.OrderRepository;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.ui;
package kitchenpos.ordertable.api;

import kitchenpos.application.OrderTableService;
import kitchenpos.domain.OrderTable;
import kitchenpos.ordertable.application.OrderTableService;
import kitchenpos.ordertable.domain.OrderTable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package kitchenpos.application;
package kitchenpos.ordertable.application;

import kitchenpos.domain.OrderRepository;
import kitchenpos.domain.OrderStatus;
import kitchenpos.domain.OrderTable;
import kitchenpos.domain.OrderTableRepository;
import kitchenpos.order.domain.OrderRepository;
import kitchenpos.order.domain.OrderStatus;
import kitchenpos.ordertable.domain.OrderTable;
import kitchenpos.ordertable.domain.OrderTableRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.ordertable.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.ordertable.domain;

import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package kitchenpos.domain;
package kitchenpos.ordertable.infra;

import kitchenpos.ordertable.domain.OrderTable;
import kitchenpos.ordertable.domain.OrderTableRepository;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.ui;
package kitchenpos.product.api;

import kitchenpos.application.ProductService;
import kitchenpos.domain.Product;
import kitchenpos.product.application.ProductService;
import kitchenpos.product.domain.Product;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package kitchenpos.application;
package kitchenpos.product.application;

import kitchenpos.domain.*;
import kitchenpos.infra.PurgomalumClient;
import kitchenpos.common.infra.PurgomalumClient;
import kitchenpos.menu.domain.Menu;
import kitchenpos.menu.domain.MenuProduct;
import kitchenpos.menu.domain.MenuRepository;
import kitchenpos.product.domain.Product;
import kitchenpos.product.domain.ProductRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.product.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kitchenpos.domain;
package kitchenpos.product.domain;

import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package kitchenpos.domain;
package kitchenpos.product.infra;

import kitchenpos.product.domain.Product;
import kitchenpos.product.domain.ProductRepository;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.UUID;
Expand Down
12 changes: 11 additions & 1 deletion src/test/java/kitchenpos/Fixtures.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
package kitchenpos;

import kitchenpos.domain.*;


import kitchenpos.menu.domain.Menu;
import kitchenpos.menu.domain.MenuProduct;
import kitchenpos.menugroup.domain.MenuGroup;
import kitchenpos.order.domain.Order;
import kitchenpos.order.domain.OrderLineItem;
import kitchenpos.order.domain.OrderStatus;
import kitchenpos.order.domain.OrderType;
import kitchenpos.ordertable.domain.OrderTable;
import kitchenpos.product.domain.Product;

import java.math.BigDecimal;
import java.time.LocalDateTime;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
package kitchenpos.application;

import kitchenpos.infra.PurgomalumClient;
package kitchenpos.common.infra;

import java.util.Arrays;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
package kitchenpos.application;

import kitchenpos.infra.KitchenridersClient;
package kitchenpos.delivery.infra;

import java.math.BigDecimal;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
package kitchenpos.application;
package kitchenpos.menu.application;

import kitchenpos.domain.*;
import kitchenpos.infra.PurgomalumClient;
import kitchenpos.common.infra.FakePurgomalumClient;
import kitchenpos.common.infra.PurgomalumClient;
import kitchenpos.menu.domain.Menu;
import kitchenpos.menu.domain.MenuProduct;
import kitchenpos.menu.domain.MenuRepository;
import kitchenpos.menu.infra.InMemoryMenuRepository;
import kitchenpos.menugroup.domain.MenuGroupRepository;
import kitchenpos.menugroup.infra.InMemoryMenuGroupRepository;
import kitchenpos.product.domain.Product;
import kitchenpos.product.domain.ProductRepository;
import kitchenpos.product.infra.InMemoryProductRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.application;
package kitchenpos.menu.infra;

import kitchenpos.domain.Menu;
import kitchenpos.domain.MenuRepository;
import kitchenpos.menu.domain.Menu;
import kitchenpos.menu.domain.MenuRepository;

import java.util.*;
import java.util.stream.Collectors;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package kitchenpos.application;
package kitchenpos.menugroup.application;

import kitchenpos.domain.MenuGroup;
import kitchenpos.domain.MenuGroupRepository;
import kitchenpos.menugroup.domain.MenuGroup;
import kitchenpos.menugroup.domain.MenuGroupRepository;
import kitchenpos.menugroup.infra.InMemoryMenuGroupRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kitchenpos.application;
package kitchenpos.menugroup.infra;

import kitchenpos.domain.MenuGroup;
import kitchenpos.domain.MenuGroupRepository;
import kitchenpos.menugroup.domain.MenuGroup;
import kitchenpos.menugroup.domain.MenuGroupRepository;

import java.util.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
package kitchenpos.application;

import kitchenpos.domain.*;
package kitchenpos.order.application;

import kitchenpos.delivery.infra.FakeKitchenridersClient;
import kitchenpos.menu.domain.MenuRepository;
import kitchenpos.menu.infra.InMemoryMenuRepository;
import kitchenpos.order.domain.*;
import kitchenpos.order.infra.InMemoryOrderRepository;
import kitchenpos.ordertable.domain.OrderTable;
import kitchenpos.ordertable.domain.OrderTableRepository;
import kitchenpos.ordertable.infra.InMemoryOrderTableRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand Down
Loading