장바구니 상품 삭제 1. CartService 장바구니 상품 번호를 파라미터로 받아서 삭제하는 로직 추가 2. CartController 장바구니 상품 삭제 요청을 처리하는 Controller 삭제 요청이므로 DeleteMapping 어노테이션 지정 상품 삭제 요청을 하는 유저와 해당 장바구니 상품의 유저가 일치하는지 검증 3. 장바구니 상품 삭제 요청 장바구니 페이지에서 상품의 X 버튼을 클릭하면 삭제 요청 장바구니 상품 주문 1. CartOrderDto 장바구니 페이지에서 주문할 상품의 데이터를 위한 Dto 자기 자신을 List로 가짐 2. OrderService 장바구니 페이지에서 전달 받은 구매 상품으로 주문을 생성하는 로직 추가 Order.createOrder() 메소드 호출 3. CartSer..
장바구니 조회 1. CartDetailDto 장바구니 조회 페이지에 전달할 Dto 클래스 CartItem 객체와 비슷함. 따라서 List 에 담겨서 전달됨 2. CartItemRepository 장바구니 페이지에 전달할 CartDetailDto 리스트를 쿼리 하나로 조회하는 JPQL 문 지연 로딩이기 때문에 최적화를 위해서 아래 코드와 같이 DTO의 생성자를 이용하여 조회 결과를 DTO 객체로 변환 후 반환할 수 있음 // select 부분에 new 키워드와 해당 DTO의 패키지, 클래스명을 지정 new com.shop.dto.CartDetailDto(ci.id, i.itemNm, i.price, ci.count, im.imgUrl) // 최적화를 위해 한 번에 반환하도록 List 타입 지정 List f..
장바구니 담기 1. CartItemDto 제품 상세 페이지에서 장바구니에 담을 상품 Id 와 수량을 전달 받을 DTO 객체 생성 2. Cart Entity 회원 한 명당 1개의 장바구니를 갖으므로 처음 장바구니에 상품을 담을 때는 해당 회원의 장바구니를 생성해야함 멤버를 파라미터로 받아서 장바구니를 생성하는 static 메소드 추가 3. CartItem Entity 장바구니에 담을 CartItem 객체를 생성하는 메소드 추가 장바구니에 담겨 있는 상품을 또 장바구니로 담았을 경우 수량을 증가시키는 메소드 추가 4. CartRepository 현재 로그인한 유저의 장바구니(Cart)를 찾기 위해서 쿼리 메소드 추가 5. CartItemRepository 상품이 장바구니에 들어있는지 조회하는 쿼리 메소드 추..
주문 취소하기 1. Item Entity 주문 취소 시 상품의 재고를 상품 주문 수량만큼 다시 더해주는 addStock() 메소드를 추가함 2. OrderItem Entity Item.addStock() 메소드를 호출하는 cancel 메소드 추가 주문 상품 수량을 파라미터로 넘김 3. Order Entity 주문 상태를 CANCEL 로 변경 모든 OrderItem 객체의 cancel() 메소드를 수행 4. OrderService 상품을 주문한 유저와 주문 취소를 요청한 유저가 동일한지 검증 orElseThrow 언제 해야되는 지?? 주문 취소 메소드 (변경 감지) 5. OrderController 상품을 주문한 유저가 맞는 지 검증 후 orderService.cancelOrder() 메소드 수행 6. 주..
구매 내역 조회 1. OrderItemDto 주문 상품 정보를 담을 OrderItemDto 객체 생성 주문 상품 정보 (상품, 수량)와 상품의 이미지를 담고 있음 2. OrderHistDto 주문 정보를 담을 OrderHistDto 객체 생성 주문 정보내에 주문 상품 정보 List 존재 3. 구매 내역 조회 리포지토리 @Query 어노테이션을 이용하여 구매 내역을 조회 SQL 문을 여러줄로 작성 시 마지막에 띄어쓰기 " " 필수 4. 상품 대표 이미지 조회 리포지토리 구매 내역 페이지에서 주문 상품의 대표 이미지를 위한 조회 5. OrderService 주문 목록을 조회하는 로직 (메소드) 추가 동작 구조 및 원리 - order, orderItem Entity 객체를 각각 OrderHistDto, Ord..
상품 주문 1. 상품 재고 부족 Exception 상품 주문 수량보다 현재 재고의 수가 적을 때 발생시킬 Exception 정의 에러 메시지를 지정할 수 있는 RuntimeException 클래스 구현 2. 상품 재고 변경 (기존 재고 - 주문 수량 재고) 로 stockNumber 수정 만약 0 보다 작다면 재고가 부족한 것이므로 Exception 발생 3. OrderItem 객체 주문 상품과 주문 수량 정보를 가지고 있는 OrderItem Entity 에 객체 생성 메소드 추가 4. Order 객체 OrderItem 객체를 연결하고 OrderItem 객체에 자신을 연결하는 메소드 추가 OrderItem 객체를 이용하여 주문 객체를 만드는 메소드 추가 각 주문 상품의 TotalPrice 를 구한뒤 모두 ..
제품 상세 페이지 1. ItemController 추가 상품 수정 페이지에서 사용했던 ItemDtl 메소드를 그대로 사용하여 상품 조회 메소드 오버로딩은 파라미터의 순서가 달라도 적용이 됨 2. 제품 상세 페이지 View GitHub 참고 totalPrice 를 계산해서 출력하는 calculateTotalPrice() 메소드 - 처음 화면 출력할 때 수행되고, 그 후에 수량 변동 시 수행됨 3. 제품 상세 페이지 화면
메인화면 1. MainItemDto 메인화면에 출력할 데이터를 위한 DTO 객체 사용자에게 보여질 내용만 포함하고 있음 (등록날짜, 수정날짜, 등록자 등 제외) 2. @QueryProjection Entity 객체를 DTO 객체로 바로 반환하도록 지원하는 어노테이션 @QueryProjection 기능을 사용하기 위해선 QDto 파일 필요 (Maven - compile 수행) 3. 사용자 정의 인터페이스 리포지토리 생성 기존의 ItemRepositoryCustom 클래스에 조회문 추가 ItemRepositoryCustomImpl 클래스에서 getMainItemPage() 메소드 구현 // MainItemDto 객체를 반환 // 멤버변수 초기화는 조회된 결과값에서 MainItemDto 객체 생성자를 통해 지..