728x90

개발 304

Project (7-2) 장바구니 조회, 수정, 삭제

- 이전에 장바구니에 담는 기능을 추가했다면, 이번에는 담은 장바구니를 조회하는 기능에 대해 구현할 것이다. - 장바구니 조회 페이지에 데이터를 전달할 DTO 클래스를 생성한다. - 이번에는 JPQL로 쿼리 작성 시 생성자를 이용해서 DTO로 바로 변환하는 방법을 사용한다. - CartDetailDto.java @Getter @Setter public class CartDetailDto { private Long cartItemId; //장바구니 상품 아이디 private String itemNm; private int price; private int count; private String imgUrl; public CartDetailDto(Long cartItemId, String itemNm, in..

Project (7-1) 장바구니 담기

- 상품 상세 페이지에서 장바구니에 담을 수량을 선택하고 장바구니 담기 버튼을 클릭할 때 상품이 장바구니에 담기는 기능을 구현해야 한다. - 상품 상세 페이지에서 장바구니에 담을 상품의 아이디와 수량을 전달 받을 CartItemDto 클래스를 생성한다. (장바구니에 담을 상품의 최소 수량은 1개 이상으로 제한한다.) - CartItemDto.java @Getter @Setter public class CartItemDto { @NotNull(message = "상품 아이디는 필수 입력 값 입니다.") private Long itemId; @Min(value = 1, message = "최소 1개 이상 담아주세요") private int count; } - 회원 한 명당 1개의 장바구니를 갖어야 한다. 처..

2023.08.16.WED

- ajax $.ajax 함수는 jQuery에서 제공하는 AJAX 호출을 수행하기 위한 함수입니다. 이 함수에 전달되는 옵션들은 HTTP 요청의 구성 요소입니다. 여기서 url, type, contentType 등의 옵션은 HTTP 요청을 정의하고 구성하는데 사용됩니다. url: AJAX 요청을 보낼 서버의 URL을 지정합니다. type: HTTP 요청 방식 (메소드)를 지정합니다. (예: "GET", "POST", "PUT", "DELETE" 등) contentType: 요청 본문의 MIME 타입을 지정합니다. 예를 들어, "application/json"은 요청 본문에 JSON 형식의 데이터가 포함될 것임을 나타냅니다. data: 서버로 전송할 데이터를 지정합니다. 이 데이터는 type 옵션에 따라 ..

개발/TMP 2023.08.16

Project (6-3) 주문 취소하기

- 주문 이력에서 원하지 않는 주문을 취소하는 기능도 필요하다. 주문을 취소할 경우 해당 주문의 상태를 취소 상태로 만들어주고, 주문할 때 상품의 재고를 감소시켰던 만큼 다시 더해주는 로직을 작성하면 된다. - 상품의 재고를 더해주기 위해 Item 클래스에 addStock 메서드를 생성한다. - Item.java // 상품에 재고를 더해주기 위해서 Item 클래스에 addStock 메소드를 생성한다. public void addStock(int stockNumber) { // 1. 상품의 재고를 증가시키는 메소드이다. this.stockNumber += stockNumber; } - addStock을 호출하게 되면 재고를 증가시킨다. - 주문을 취소할 경우 주문 수량만큼 상품의 재고를 증가시키는 메소드를..

Project (6-2) 주문 이력 조회하기

- 주문을 한 다음에는 주문 이력을 조회할 수 있는 페이지를 만들어야 한다. - 조회한 주문 데이터를 화면에 보낼 때 사용할 DTO 클래스를 생성한다. - OrderItemDto.java @Getter @Setter public class OrderItemDto { private String itemNm; //상품명 private int count; //주문 수량 private int orderPrice; //주문 금액 private String imgUrl; //상품 이미지 경로 public OrderItemDto(OrderItem orderItem, String imgUrl) { // OrderItemDto 클래스의 생성자로 orderItem 객체와 이미지 경로를 파라미터로 받아서 멤버 변수 값을 세..

Project (6-1) 주문 기능 구현

- 고객이 상품을 주문하면 현재 상품의 재고에서 주문 수량만큼 재고를 감소시켜야 한다. 1. 주문만큼 재고를 감소 2. 주문 수량보다 재고의 수가 적을 때 발생시킬 exception(RuntimeException) 정의 - 예외 클래스 작성 - OutofStockException.java package com.shop.exception; public class OutOfStockException extends RuntimeException{ // 상품의 주문 수량보다 재고의 수가 적을 때 발생시킬 exception public OutOfStockException(String message) { super(message); } } - 재고 감소 로직 - Item.java ... //남은 재고 수량 확인 p..

2023.08.14.MON

- ResponseEntity - ResponseEntity는 HTTP 응답의 상태 코드, 헤더 및 본문 데이터를 함께 다루기 위해 사용되는 클래스이다. - @ResponseBody 어노테이션을 사용하면 메서드의 반환값이 자동으로 HTTP 응답의 본문으로 사용되므로, ResponseEntity를 사용하지 않아도 된다. ResponseEntity는 상태 코드나 헤더를 더 세밀하게 조작해야 할 때 사용하면 된다. - Principal - principal 객체는 Spring Security 프레임워크에서 현재 사용자의 정보를 나타내는 객체이다. Spring Security는 웹 애플리케이션의 보안을 관리하기 위한 프레임워크로, 사용자 인증(Authentication)과 권한 부여(Authorization)를..

개발/TMP 2023.08.14

Project (5-3) 메인 화면, 상품 상세 페이지 (1) (추가 내용 작성 필요할 듯...)

- 메인 페이지 - 메인 페이지의 경우 상품 관리 메뉴와 비슷하며, Querydsl을 사용하여 페이징 처리 및 네비게이션바에 있는 Search 버튼을 이용하여 상품명으로 검색이 가능하도록 구현하겠다. - 메인페이지의 경우 @QueryProjection을 이용하여 상품 조회 시 DTO 객체로 결과 값을 받는 방법을 사용한다. - @QueryProjection을 이용하면 Item 객체로 값을 받은 후 DTO 클래스로 변환하는 과정 없이 바로 DTO 객체를 뽑아낼 수 있다. - MainItemDto.java @Getter @Setter public class MainItemDto { private Long id; private String itemNm; private String itemDetail; priv..

Project (5-2) 상품 관리 (1)

- 상품의 상세 페이지에 진입하기 위해서 등록된 상품 번호를 직접 URL에 입력하여 상품 상세 페이지에 진입한다. 상품 번호를 모를 경우 상세 페이지로 진입할 수 없으므로 등록된 상품 리스트를 조회할 수 있는 화면을 만들어야 한다. - 조회 조건 1. 상품 등록일 2. 상품 판매 상태 3. 상품명 또는 상품 등록자 아이디 - 복잡한 조회 조건의 경우 Querydsl을 이용해 조건에 맞는 쿼리를 동적으로 쉽게 생성할 수 있다. Querydsl을 사용하면 비슷한 쿼리를 재활용 할 수 있다는 장점이 있다. 또한 쿼리를 JAVA 문법으로 작성하기 때문에 오류를 컴파일 단계에서 찾을 수 있다는 장점이 있다. - ItemSearchDto.java @Getter @Setter public class ItemSearc..

Project (5-1) 상품 등록 및 수정 (2)

- ItemService.java @Transactional(readOnly = true) //상품 데이터를 읽어오는 트랜잭션을 읽기 전용을 설정한다. //JPA가 더티체킹(변경감지)을 수행하지 않아서 성능을 향상 시킬 수 있다. public ItemFormDto getItemDtl(Long itemId) { List itemImgList = itemImgRepository.findByItemIdOrderByIdAsc(itemId); //해당 상품의 이미지를 조회한다. 등록순으로 가지고 오기 위해서 상품 이미지 아이디 오름차순으로 가지고 온다. List itemImgDtoList = new ArrayList(); for (ItemImg itemImg : itemImgList) { //조회한 ItemImg..

728x90