사랑하애오
article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 장바구니 상품 삭제 & 주문
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 15:08

장바구니 상품 삭제 1. CartService 장바구니 상품 번호를 파라미터로 받아서 삭제하는 로직 추가 2. CartController 장바구니 상품 삭제 요청을 처리하는 Controller 삭제 요청이므로 DeleteMapping 어노테이션 지정 상품 삭제 요청을 하는 유저와 해당 장바구니 상품의 유저가 일치하는지 검증 3. 장바구니 상품 삭제 요청 장바구니 페이지에서 상품의 X 버튼을 클릭하면 삭제 요청 장바구니 상품 주문 1. CartOrderDto 장바구니 페이지에서 주문할 상품의 데이터를 위한 Dto 자기 자신을 List로 가짐 2. OrderService 장바구니 페이지에서 전달 받은 구매 상품으로 주문을 생성하는 로직 추가 Order.createOrder() 메소드 호출 3. CartSer..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 장바구니 조회
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 15:06

장바구니 조회 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..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 주문 취소하기
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 15:01

주문 취소하기 1. Item Entity 주문 취소 시 상품의 재고를 상품 주문 수량만큼 다시 더해주는 addStock() 메소드를 추가함 2. OrderItem Entity Item.addStock() 메소드를 호출하는 cancel 메소드 추가 주문 상품 수량을 파라미터로 넘김 3. Order Entity 주문 상태를 CANCEL 로 변경 모든 OrderItem 객체의 cancel() 메소드를 수행 4. OrderService 상품을 주문한 유저와 주문 취소를 요청한 유저가 동일한지 검증 orElseThrow 언제 해야되는 지?? 주문 취소 메소드 (변경 감지) 5. OrderController 상품을 주문한 유저가 맞는 지 검증 후 orderService.cancelOrder() 메소드 수행 6. 주..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 상품 주문 기능 구현
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 14:56

상품 주문 1. 상품 재고 부족 Exception 상품 주문 수량보다 현재 재고의 수가 적을 때 발생시킬 Exception 정의 에러 메시지를 지정할 수 있는 RuntimeException 클래스 구현 2. 상품 재고 변경 (기존 재고 - 주문 수량 재고) 로 stockNumber 수정 만약 0 보다 작다면 재고가 부족한 것이므로 Exception 발생 3. OrderItem 객체 주문 상품과 주문 수량 정보를 가지고 있는 OrderItem Entity 에 객체 생성 메소드 추가 4. Order 객체 OrderItem 객체를 연결하고 OrderItem 객체에 자신을 연결하는 메소드 추가 OrderItem 객체를 이용하여 주문 객체를 만드는 메소드 추가 각 주문 상품의 TotalPrice 를 구한뒤 모두 ..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 제품 상세 페이지
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 14:42

제품 상세 페이지 1. ItemController 추가 상품 수정 페이지에서 사용했던 ItemDtl 메소드를 그대로 사용하여 상품 조회 메소드 오버로딩은 파라미터의 순서가 달라도 적용이 됨 2. 제품 상세 페이지 View GitHub 참고 totalPrice 를 계산해서 출력하는 calculateTotalPrice() 메소드 - 처음 화면 출력할 때 수행되고, 그 후에 수량 변동 시 수행됨 3. 제품 상세 페이지 화면

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 상품 관리 - 상품 목록 페이지
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 14:34

상품 목록 페이지 1. 상품 목록 페이지 결과 화면 상품 목록 테이블 부분, 하단 페이지 부분, 검색 조건 부분 존재 2. 상품 목록 페이지 View GitHub 참고 스크립트 부분 "검색" 버튼을 클릭하면 조회할 페이지 번호를 다시 "0"으로 설정해서 조회해야함 페이지 번호를 전달 받아 form에 설정된 검색 조건 값들을 초기화하여 QueryString으로 보내는 page() 함수 // "검색" 버튼이 눌리면 $("#searchBtn").on("click",function(e) // form 태그의 전송을 막음 (페이지 번호가 그대로 넘어갈 수 있음) e.preventDefault(); // 페이지 번호를 0으로 설정한 뒤 page 함수 수행 page(0); 상품 목록 테이블 부분 ${items} 변수..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 상품 관리 - 상품 목록 조회 Querydsl
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 14:33

Querydsl 1. Qdomain 생성 Querydsl 을 사용하기 위해서 Qdomain 생성 Maven의 compile 명령 수행 기존에 존재하던 Entity 객체에 매핑되는 Qdomain 모두 생성 2. 상품 조회 조건 DTO 상품 조회 조건 - 상품 등록일 - 상품 판매 상태 - 상품명 또는 상품 등록자 아이디 상품 조회 조건을 담을 ItemSearchDto 클래스 생성 3. Querydsl & Spring Data Jpa Querydsl 과 Spring Data Jpa 를 함께 사용하기 위해서는 사용자 정의 리포지토리가 필요함 아래와 같은 단계를 거치며 구현하면 됨 ① 사용자 정의 인터페이스 작성 ② 사용자 정의 인터페이스 구현 ③ Spring Data Jpa 리포지토리에서 사용자 정의 인터페이..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 상품 등록하기 - Entity, DTO, View
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 14:28

상품 등록 페이지 1. 상품 이미지 Entity Item (상품) Entity 와 다대일 단방향 관계를 갖는 ItemImg Entity 생성 2. modelmapper 라이브러리 추가 상품 등록 화면으로부터 전달받은 DTO 객체를 Entity 로 변환해야함 상품 조회 결과를 화면에 반환할 때 Entity 를 DTO 객체로 변환해야함 modelmapper 라이브러리를 통해서 서로 다른 클래스의 값을 필드의 이름과 자료형이 같으면 getter, setter 를 통해 값을 복사해서 객체를 반환 org.modelmapper modelmapper 2.3.9 3. 상품 관련 DTO 객체 생성 상품을 등록 및 조회할 때 지정된 필드뿐 아니라 추가적인 데이터들의 이동이 많으므로 여러 DTO 이용 상품 이미지에 대한 D..