심화프로젝트 판매상품 수정, 삭제, 고객요청 조회, 수락

우정·2023년 1월 19일
0

작업한 코드

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

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

        product.update(productUpdateRequest.getTitle(), productUpdateRequest.getPrice(), productUpdateRequest.getProductDetail());
        productRepository.save(product);
//        return new SellerProductResponse(product);
    }

    // 나의 판매상품 삭제
    @Transactional
    public void deleteSellerProduct(Long productId, User user) {
        Product product = productRepository.findById(productId).orElseThrow(
                () -> new IllegalArgumentException("게시물이 존재하지 않습니다.")
        );

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

        productRepository.delete(product);
    }

    // 전체상품 고객(구매)요청 목록 조회
    @Transactional
    public List<ProductPurchasePermissionResponse> getPurchasePermissionList() {
        List<Product> products = productRepository.findAllByOrderByModifiedAtDesc();
        List<ProductPurchasePermissionResponse> productPurchasePermissionResponses = new ArrayList<>();

        for (Product product : products) {
            List<PurchasePermission> purchasePermissions = purchasePermissionRepository.findPurchasePermissionBy();
            List<PurchasePermissionResponse> purchasePermissionResponses = new ArrayList<>();
            User user = new User();  // ??
            for (PurchasePermission purchasePermission : purchasePermissions) {
                purchasePermissionResponses.add(new PurchasePermissionResponse(user,purchasePermission));
            }
            productPurchasePermissionResponses.add(new ProductPurchasePermissionResponse(product));
        }
        return productPurchasePermissionResponses;
    }

    // 고객(거래)요청 수락&완료
    @Transactional
    public void updatePurchasePermission(Long permissionId, User username) {
        PurchasePermission purchasePermission = purchasePermissionRepository.findById(permissionId).orElseThrow(
                () -> new IllegalArgumentException("구매 요청이 존재하지 않습니다.")
        );

        if (!purchasePermission.getBidder().equals(username)) {
            throw new IllegalArgumentException("경매자만 수정할 수 있습니다.");
        }

//        PurchasePermission purchasePermission1 = purchasePermissionRepository.findByTransactionStatus(TransactionStatusEnum.WAITING).orElseThrow(
//                () -> new IllegalArgumentException("진행 중이 아닙니다.")
//        );

        purchasePermissionRepository.save(
                new PurchasePermission(TransactionStatusEnum.ACCEPTANCE)
        );

        // 거부...
//        purchasePermissionRepository.save(
//                new PurchasePermission(TransactionStatusEnum.REFUSAL)
//        );
    }
  • SellerController
// 나의 판매상품 수정
    @PutMapping("/sellers/products/{productId}")
    public ResponseEntity<StatusResponse> updateSellerProduct(@PathVariable Long productId, @RequestBody ProductUpdateRequest productUpdateRequest, User 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);
    }

    // 전체상품 고객(구매)요청 목록 조회
    @GetMapping("/sellers/purchase-permission")
    public List<ProductPurchasePermissionResponse> getPurchasePermissionList() {
        return sellerService.getPurchasePermissionList();
    }

    // 고객(거래)요청 수락&완료
    @PutMapping("/sellers/purchase-permission/{permissionId}")
    public ResponseEntity<StatusResponse> updatePurchasePermission(@PathVariable Long permissionId, @AuthenticationPrincipal UserDetailsImpl userDetails, User username) {
        sellerService.updatePurchasePermission(permissionId, username);
        return ResponseEntity.accepted().body(new StatusResponse(HttpStatus.ACCEPTED.value(), "구매 요청 허락"));
//        return ResponseEntity.accepted().body(new StatusResponse(HttpStatus.ACCEPTED.value(), "구매 요청 거부"));
    }
  • 고객요청 수락은 된 거 같은데 거부는.. 어떻게 하는 건지 생각해봐야함(새 api를 만들어야하나? 아니면 if문으로 설정할 수가 있나..? 잘 모르겠당 내일 찾아봐야지)

팀원들과 합쳤을 때 실행에 문제 없고, 콘솔 잘 작동하는 거 확인 완료! 내일까지 최대한 빨리 기능 구현 마무리 하고 리펙토링 해야 함
이제 여기서 문제 많이 발생할 거 같은데..... 그래도 우선 실행창에서 오류가 안 뜬다는 것만 해도 행복함,,

0개의 댓글

관련 채용 정보