심화프로젝트 판매상품 조회, 등록, 수정

우정·2023년 1월 18일
0

작업한 코드

  • SellerService
@RequiredArgsConstructor
@Service
public class SellerService {
    private final ProductRepository productRepository;

    // 나의 판매상품 등록
    @Transactional
    public void registerProduct(ProductRegisterRequest productRegisterRequest) {
        Product product = new Product(productRegisterRequest.getTitle(), productRegisterRequest.getPrice(), productRegisterRequest.getProductDetail());
        productRepository.save(product);
//        return new SellerProductResponse(product);
    }

    // 나의 전체 판매상품 조회
    @Transactional
    public List<SellerProductResponse> getSellerProductList() {
        List<Product> products = productRepository.findAllByOrderByModifiedAtDesc();
        List<SellerProductResponse> sellerProductResponses = new ArrayList<>();
        for (Product product : products) {
            sellerProductResponses.add(new SellerProductResponse(product));
        }
        return sellerProductResponses;
    }

    // 나의 개별 판매상품 조회
    @Transactional
    public SellerProductDetailResponse getSellerProduct(Long productId) {
        Product product = productRepository.findById(productId).orElseThrow(
                () -> new IllegalArgumentException("id가 존재하지 않습니다.")
        );
        return new SellerProductDetailResponse(product);
    }

    // 나의 판매상품 수정
    @Transactional
    public SellerProductResponse updateSellerProduct(Long productId, ProductUpdateRequest productUpdateRequest, User user) {
        Product product = productRepository.findById(productId).orElseThrow(
                () -> new IllegalArgumentException("id가 존재하지 않습니다.")
        );

        if (product.getSeller().getId() != user.getId()) {
            throw new IllegalArgumentException("판매자가 아닙니다.");
        }

        product.update(productUpdateRequest.getTitle(), productUpdateRequest.getPrice(), productUpdateRequest.getProductDetail());
        productRepository.save(product);
        return new SellerProductResponse(product);
    }
}
  • SellerController
@RestController
@RequiredArgsConstructor
public class SellerController {
    private final SellerService sellerService;

    // 나의 판매상품 등록
    @PostMapping("/sellers/products")
    public ResponseEntity<StatusResponse> registerProduct(@RequestBody ProductRegisterRequest productRegisterRequest) {
        StatusResponse statusResponse = new StatusResponse(HttpStatus.CREATED.value(), "등록 완료");
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(new MediaType("application", "json", StandardCharsets.UTF_8));
        sellerService.registerProduct(productRegisterRequest);
        return new ResponseEntity<>(statusResponse, headers, HttpStatus.CREATED);
    }

    // 나의 전체 판매상품 조회
    @GetMapping("/sellers/products/list")
    public List<SellerProductResponse> getSellerProductList() {
        return sellerService.getSellerProductList();
    }

    // 나의 개별 판매상품 조회
    @GetMapping("/sellers/products/{productId}")
    public SellerProductDetailResponse getSellerProduct(@PathVariable Long productId) {
        return sellerService.getSellerProduct(productId);
    }

    // 나의 판매상품 수정
    @PutMapping("/sellers/products/{productId}")
    public ResponseEntity<StatusResponse> updateSellerProduct(@PathVariable Long productId, @RequestBody ProductUpdateRequest productUpdateRequest) {
//        User user = new User();
        StatusResponse statusResponse = new StatusResponse(HttpStatus.CREATED.value(), "등록 완료");
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(new MediaType("application", "json", StandardCharsets.UTF_8));
        sellerService.updateSellerProduct(productId, productUpdateRequest, user);
        return new ResponseEntity<>(statusResponse, headers, HttpStatus.CREATED);
    }
}

오늘 한 부분은 저번 프로젝트의 Post와 유사하다고 생각을 해서
쉬운 부분은 후딱 하고 다른 부분에 집중하자! 하고
우다다 했는데
다시 봐보니 뭔가 이상하다....?
이렇게 하는 게 아닌 거 같은걸......😨

수정 부분은 다시 해야함 오류 user를 어케 해야할 거 같은데.. 이리저리 만져봐야 함

근데 지금 잠을 못자서 그런가 머리가 넘 깨질 거 같아서,, 아무래도 좀 쉬다가 다시 봐봐야 할 듯ㅜ

0개의 댓글

관련 채용 정보