본문 바로가기

프로젝트_ 커피주문 서비스

Order 조회, Order_Product 등록, 삭제

  • Order 조회
  • OrderService
@Slf4j
@Service
public class OrderService {

    @Autowired
    private OrderRepository orderRepository;

    @Autowired
    private MemberRepository memberRepository;

    @Autowired
    private OrderProductRepository orderProductRepository;

    //전체 주문 조회
    public List<Order> list() {
        return orderRepository.findAll();
    }

    //회원 전화번호 별 주문 조회
    public List<Order> findByPhoneNum(String PhoneNum) {
        return orderRepository.findByPhoneNum(PhoneNum);
    }

    //주문 생성
    @Transactional
    public OrderDto create(Long memberId, OrderDto dto) {
        Member member = memberRepository.findById(memberId)
                .orElseThrow(() -> new IllegalArgumentException("생성 실패, 대상 회원이 없음"));

        Order order = Order.createOrder(dto, member);

        Order created = orderRepository.save(order);

        return OrderDto.createOrderDto(created);
    }
}

 

  • OrderRepository
public interface OrderRepository extends JpaRepository<Order, Long> {

    //회원 전화번호 별 주문 조회
    @Query(value = "SELECT * FROM orders WHERE member_id = " +
            "(SELECT id FROM member WHERE phone_num = :PhoneNum);", nativeQuery = true)
    List<Order> findByPhoneNum(@Param("PhoneNum")String PhoneNum);


}

 

  • OrderAPIController
@RestController
public class OrderAPIController {

    @Autowired
    private OrderService orderService;

    //전체 주문 조회
    @GetMapping("/api/orders")
    public List<Order> list() {
        return orderService.list();
    }

    //회원 전화번호 별 주문 조회
    @GetMapping("/api/orders/{PhoneNum}")
    public List<Order> listByPhone(@PathVariable String PhoneNum) {
        return orderService.findByPhoneNum(PhoneNum);
    }

    //주문 생성
    @PostMapping("/api/orders/{memberId}")
    public ResponseEntity<OrderDto> create(@PathVariable Long memberId, @RequestBody OrderDto dto) {
        OrderDto createdDto = orderService.create(memberId, dto);

        return ResponseEntity.status(HttpStatus.OK).body(createdDto);
    }
}

 

Order 전화번호 별 주문 조회

 

  • Orderproduct 등록
  • OrderProduct
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Getter
@Entity
@Table (name = "OrderProduct")
public class OrderProduct {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "order_id")
    private Order order;

    @ManyToOne
    @JoinColumn(name = "product_id")
    private Product product;

    @Column
    private int Total;

    public static OrderProduct createOrderProduct(OrderProductDto dto, Order order, Product product) {
        return new OrderProduct(
                dto.getId(),
                order,
                product,
                product.getPrice()
        );
    }
}

 

  • OrderProductDto
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
public class OrderProductDto {
    private Long id;

    @JsonProperty("order_id")
    private Long OrderId;

    @JsonProperty("product_id")
    private Long ProductId;

    @JsonProperty("total")
    private int Total;

    public static OrderProductDto createOrderProductDto(OrderProduct created) {
        return new OrderProductDto(
                created.getId(),
                created.getOrder().getId(),
                created.getProduct().getId(),
                created.getTotal()
        );
    }
}

 

  • OrderProductService
@Slf4j
@Service
public class OrderProductService {

    @Autowired
    private OrderProductRepository orderProductRepository;

    @Autowired
    private OrderRepository orderRepository;

    @Autowired
    private ProductRepository productRepository;

    //주문 목록
    public List<OrderProduct> list() {
        return orderProductRepository.findAll();
    }

    //주문 등록
    @Transactional
    public OrderProductDto create(Long OrderId, Long ProductId, OrderProductDto dto) {
        Order order = orderRepository.findById(OrderId)
                .orElseThrow(() -> new IllegalArgumentException("대상 주문이 없음"));
        Product product = productRepository.findById(ProductId)
                .orElseThrow(() -> new IllegalArgumentException("대상 상품이 없음"));

        OrderProduct orderProduct = OrderProduct.createOrderProduct(dto, order, product);

        OrderProduct created = orderProductRepository.save(orderProduct);

        return OrderProductDto.createOrderProductDto(created);
    }
}

 

  • OrderProductAPIController
@Slf4j
@RestController
public class OrderProductAPIController {

    @Autowired
    private OrderProductService orderProductService;

    @GetMapping("/api/orderproducts")
    public List<OrderProduct> list() {
        return orderProductService.list();
    }

    //order_product 등록
    @PostMapping("/api/orderproducts/{orderId}/{productId}")
    public ResponseEntity<OrderProductDto> create(@PathVariable Long orderId, @PathVariable Long productId,
                                                  @RequestBody OrderProductDto dto) {
        OrderProductDto createdDto = orderProductService.create(orderId, productId, dto);

        return ResponseEntity.status(HttpStatus.OK).body(createdDto);
    }
}

 

talendAPI
h2 데이터베이스

 

  • OrderProduct 삭제
  • OrderProductService
@Slf4j
@Service
public class OrderProductService {
				
                .
                .
                .
                .

    //삭제
    @Transactional
    public OrderProduct delete(Long id) {
        OrderProduct target = orderProductRepository.findById(id).orElse(null);

        if (target == null) {
            return null;
        }
        orderProductRepository.delete(target);

        return target;
    }
}

 

  • OrderProductAPIController
@Slf4j
@RestController
public class OrderProductAPIController {


            .
            .
            .
            
    //order_product 삭제
    @DeleteMapping("/api/orderproducts/{id}")
    public ResponseEntity<OrderProduct> delete(@PathVariable Long id) {
        OrderProduct deleted = orderProductService.delete(id);
        return (deleted != null) ?
                ResponseEntity.status(HttpStatus.OK).build() :
                ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
    }
}

 

 

 

GitHub - Pearlmoon997/CoffeeShop: CoffeeShop

CoffeeShop. Contribute to Pearlmoon997/CoffeeShop development by creating an account on GitHub.

github.com

 

'프로젝트_ 커피주문 서비스' 카테고리의 다른 글

Store CRUD  (0) 2022.08.08
Order 삭제  (0) 2022.08.07
OrderProduct_ SELECT 테스트  (0) 2022.07.30
OrderDate 삽입  (0) 2022.06.20
시간 등록을 위한 JPA Auditing 테스트  (0) 2022.06.18