728x90
상품 검색 후 등록 버튼을 클릭했을 때 관심 상품이 생성되어야 함
-> 검색 결과에서 제목, 이미지, 링크, 최저가를 가져오면 됨
1st) 제목, 이미지, 링크, 최저가 데이터 가져와서 관심상품 등록
2nd) 내가 원하는 최저가 입력해서 등록한 관심상품 데이터 수정
- Dto 만들기
/*ProductRequestDto.java*/
package com.sparta.week04.models;
...
@Getter
public class ProductRequestDto {
private String title;
private String link;
private String image;
private int lprice;
}
/*ProductMypriceRequestDto.java*/
package com.sparta.week04.models;
...
@Getter
public class ProductMypriceRequestDto {
private int myprice;
}
- Product 클래스에 생성자, update 메소드 만들기
/*Product.java*/
package com.sparta.week04.models;
...
@Getter // get 함수를 일괄적으로 만들어줍니다.
@NoArgsConstructor // 기본 생성자를 만들어줍니다.
@Entity // DB 테이블 역할을 합니다.
public class Product extends Timestamped{
// ID가 자동으로 생성 및 증가합니다.
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
// 반드시 값을 가지도록 합니다.
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String image;
@Column(nullable = false)
private String link;
@Column(nullable = false)
private int lprice;
@Column(nullable = false)
private int myprice;
/*여기서부터 내용 추가*/
// 관심 상품 생성 시 이용합니다.
public Product(ProductRequestDto requestDto) {
this.title = requestDto.getTitle();
this.image = requestDto.getImage();
this.link = requestDto.getLink();
this.lprice = requestDto.getLprice();
//nullable = false로 설정되어있어서 값이 입력되어있어야 함 & 현재가격 < 사용자설정가격 을 벗어나면 노란딱지가 안 뜸
this.myprice = 0;
}
// 관심 가격 변경 시 이용합니다.
public void update(ProductMypriceRequestDto requestDto) {
this.myprice = requestDto.getMyprice();
}
}
package com.sparta.week04.service;
...
@RequiredArgsConstructor //final로 선언된 멤버 변수를 자동으로 생성
@Service //서비스임을 선언
public class ProductService {
private final ProductRepository productRepository;
@Transactional
public Long update(Long id, ProductMypriceRequestDto requestDto) {
Product product = productRepository.findById(id).orElseThrow(
() -> new NullPointerException("아이디가 존재하지 않습니다.")
);
product.update(requestDto);
return product.getId();
}
}
- Controller에 관심 상품 등록 메소드 만들기
/*ProductRestController.java*/
package com.sparta.week04.controller;
...
@RequiredArgsConstructor //final로 선언된 멤버 변수를 자동으로 생성
@RestController //JSON으로 데이터를 주고받음을 선언
public class ProductRestController {
private final ProductRepository productRepository;
//등록된 전체 상품 목록 조회
@GetMapping("/api/products")
public List<Product> readProducts() {
return productRepository.findAll();
}
//신규 상품 등록
@PostMapping("/api/products")
public Product createProduct(@RequestBody ProductRequestDto requestDto) {
Product product = new Product(requestDto);
return productRepository.save(product);
}
}
'Spring Framework' 카테고리의 다른 글
JSONObject, JSONArray (0) | 2021.07.27 |
---|---|
나만의셀렉샵)키워드로 상품 검색하기 - NaverShopSearch 발전시키기 (0) | 2021.07.27 |
나만의셀렉샵) 관심 상품 조회하기 (0) | 2021.07.26 |
자바로 네이버 쇼핑 API 이용하기 (0) | 2021.07.25 |
타임라인서비스) 조회 시간으로부터 24시간 이내 작성한 게시물만 조회 (0) | 2021.07.24 |