From 0d26dd21a3bcfd944c31b2f39d863325e3b65631 Mon Sep 17 00:00:00 2001 From: kim Date: Sun, 24 Jan 2021 21:25:54 +0900 Subject: [PATCH] jpashop : order service --- .../com/example/jpashop/domain/Order.java | 3 + .../com/example/jpashop/domain/OrderItem.java | 3 + .../example/jpashop/service/OrderService.java | 67 +++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 jpashop/src/main/java/com/example/jpashop/service/OrderService.java diff --git a/jpashop/src/main/java/com/example/jpashop/domain/Order.java b/jpashop/src/main/java/com/example/jpashop/domain/Order.java index 43e40c0e..60eaad6d 100644 --- a/jpashop/src/main/java/com/example/jpashop/domain/Order.java +++ b/jpashop/src/main/java/com/example/jpashop/domain/Order.java @@ -1,6 +1,8 @@ package com.example.jpashop.domain; +import lombok.AccessLevel; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence.*; @@ -11,6 +13,7 @@ import java.util.List; @Entity @Table(name = "orders") @Getter @Setter +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue diff --git a/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java b/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java index 4fe4ac93..7d40e6bd 100644 --- a/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java +++ b/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java @@ -1,13 +1,16 @@ package com.example.jpashop.domain; import com.example.jpashop.domain.item.Item; +import lombok.AccessLevel; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence.*; @Entity @Getter @Setter +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class OrderItem { @Id @GeneratedValue diff --git a/jpashop/src/main/java/com/example/jpashop/service/OrderService.java b/jpashop/src/main/java/com/example/jpashop/service/OrderService.java new file mode 100644 index 00000000..e069dc10 --- /dev/null +++ b/jpashop/src/main/java/com/example/jpashop/service/OrderService.java @@ -0,0 +1,67 @@ +package com.example.jpashop.service; + +import com.example.jpashop.domain.Delivery; +import com.example.jpashop.domain.Member; +import com.example.jpashop.domain.Order; +import com.example.jpashop.domain.OrderItem; +import com.example.jpashop.domain.item.Item; +import com.example.jpashop.repository.ItemRepository; +import com.example.jpashop.repository.MemberRepository; +import com.example.jpashop.repository.OrderRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional(readOnly = true) +@RequiredArgsConstructor +public class OrderService { + + private final OrderRepository orderRepository; + private final MemberRepository memberRepository; + private final ItemRepository itemRepository; + + /** + * 주문 + */ + @Transactional + public Long order(Long memberId, Long itemId, int count) { + + // 엔티티 조회 + Member member = memberRepository.findOne(memberId); + Item item = itemRepository.findOne(itemId); + + // 배송정보 생성성 + Delivery delivery = new Delivery(); + delivery.setAddress(member.getAddress()); + + // 주문 상품 생성 + OrderItem orderItem = OrderItem.createOrderItem(item, item.getPrice(), count); + + // 주문 생성 + Order order = Order.createOrder(member, delivery, orderItem); + + // 주문 저장 + orderRepository.save(order); + + return order.getId(); + } + + /** + * 주문 취소 + */ + @Transactional + public void cancelOrder(Long orderId) { + // 주문 엔티티 조회 + Order order = orderRepository.findOne(orderId); + // 주문 취소 + order.cancel(); + } + + // 검색 +/* public List findOrders(OrderSearch orderSearch) { + return orderRepository.findAll(orderSearch); + }*/ +}