본문 바로가기
스프링 (Spring)/SelectShop Project

SelectShop - 관심상품 등록하기

by 후닝훈 2021. 8. 2.
반응형

요구사항

- 상품을 검색한 후, 등록 버튼을 눌렀을 때 관심 상품이 생성.

- 검색 결과에서 제목, 이미지, 링크, 최저가를 가져온다.

 

Dto 클래스 생성

@Getter
public class ProductMypriceRequestDto {
    private int myprice;
}

 

@Getter
public class ProductRequestDto {
    // title, link, image, lprice
    private String title;
    private String link;
    private String image;
    private int lprice;
}

 

Product 클래스 수정

    // 관심 상품 생성 시 이용
    public Product(ProductRequestDto requestDto) {
        this.title = requestDto.getTitle();
        this.image = requestDto.getImage();
        this.link = requestDto.getLink();
        this.lprice = requestDto.getLprice();
        this.myprice = 0;
    }

    // 관심 가격 변경 시 이용
    public void update(ProductMypriceRequestDto requestDto) {
        this.myprice = requestDto.getMyprice();
    }

 

ProductService 생성

@RequiredArgsConstructor // final로 선언된 멤버 변수를 자동으로 생성
@Service // 서비스임을 선언
public class ProductService {

    private final ProductRepository productRepository;

    @Transactional // 메소드 동작이 SQL 쿼리문임을 선언
    public Long update(Long id, ProductMypriceRequestDto requestDto) {
        Product product = productRepository.findById(id).orElseThrow(
                () -> new NullPointerException("해당 아이디가 존재하지 않습니다.")
        );
        product.update(requestDto);
        return id;
    }
}

 

ProductRestController 수정

    // 신규 상품 등록
    @PostMapping("/api/products")
    public Product createProduct(@RequestBody ProductRequestDto requestDto) {
        Product product = new Product(requestDto);
        productRepository.save(product);
        return product;
    }

 

반응형

댓글