From 018ef65bbe2cb231276997b66196d6581dad73b2 Mon Sep 17 00:00:00 2001 From: kang Date: Thu, 22 Feb 2024 05:13:18 +0900 Subject: [PATCH 1/3] feat: add field isRestored --- .../java/zero/eight/donut/dto/donation/DonateGiftRequestDto.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/zero/eight/donut/dto/donation/DonateGiftRequestDto.java b/src/main/java/zero/eight/donut/dto/donation/DonateGiftRequestDto.java index e7716b3..589d53c 100644 --- a/src/main/java/zero/eight/donut/dto/donation/DonateGiftRequestDto.java +++ b/src/main/java/zero/eight/donut/dto/donation/DonateGiftRequestDto.java @@ -19,6 +19,7 @@ public class DonateGiftRequestDto { private Integer price; private LocalDateTime dueDate; private Store store; + private Boolean isRestored; public Gift toEntity(Giver giver, Giftbox giftbox, String imageUrl, String store){ return Gift.builder() From 2de622a11019be3b9686c2c6573c015ef02d11bd Mon Sep 17 00:00:00 2001 From: kang Date: Thu, 22 Feb 2024 05:33:57 +0900 Subject: [PATCH 2/3] feat: add upload image method --- .../donut/service/SerialDonationService.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/zero/eight/donut/service/SerialDonationService.java b/src/main/java/zero/eight/donut/service/SerialDonationService.java index cb499e3..cb87774 100644 --- a/src/main/java/zero/eight/donut/service/SerialDonationService.java +++ b/src/main/java/zero/eight/donut/service/SerialDonationService.java @@ -1,6 +1,7 @@ package zero.eight.donut.service; +import com.google.cloud.storage.BlobInfo; import com.google.cloud.storage.Storage; import lombok.RequiredArgsConstructor; @@ -139,8 +140,8 @@ public ApiResponse donateGift(DonateGiftRequestDto requestDto) throws IOExcep Giftbox defaultGiftbox = giftboxRepository.findById(0L) .orElseThrow(()-> new ApiException(Error.GIFTBOX_NOT_FOUND_EXCEPTION)); - //Send Image to AI - String imageUrl = sendImageToAI(requestDto.getGiftImage()); + //Upload Image to Google Cloud Storage + String imageUrl = uploadImageToGCS(requestDto); //CREATE Gift Gift newGift = requestDto.toEntity(giver, defaultGiftbox, imageUrl, requestDto.getStore().toString()); @@ -152,6 +153,10 @@ public ApiResponse donateGift(DonateGiftRequestDto requestDto) throws IOExcep //기부 통계 업데이트 updateDonateInfo(requestDto); + //Send Image to AI +// if(requestDto.getIsRestored()) +// imageUrl = sendImageToAI(requestDto.getGiftImage()); + return ApiResponse.success(Success.DONATE_GIFT_SUCCESS, Map.of("giftId", newGift.getId())); } @@ -223,6 +228,24 @@ private void updateDonateInfo(DonateGiftRequestDto requestDto){ donationInfo.getSum()+requestDto.getPrice().longValue(), donationInfo.getCount()+1L); } + private String uploadImageToGCS(DonateGiftRequestDto requestDto) throws IOException{ + //이미지명 uuid 변환 + String uuid = UUID.randomUUID().toString(); + //이미지 형식 추출 + String ext = requestDto.getGiftImage().getContentType(); + + // Google Cloud Storage 이미지 업로드 + BlobInfo blobInfo = storage.create( + BlobInfo.newBuilder(BUCKET_NAME, uuid) + .setContentType(ext) + .build(), + requestDto.getGiftImage().getInputStream() + ); + log.info("successfully upload image to gcs"); + + String imgUrl = "https://storage.googleapis.com/" + BUCKET_NAME + "/" + uuid; + return imgUrl; + } private String sendImageToAI(MultipartFile giftImage){ WebClient webClient = WebClient.builder().baseUrl("http://34.64.144.108:8000").build(); From ce19ca929eaa0238b104076a56c1dacfdc1e09aa Mon Sep 17 00:00:00 2001 From: kang Date: Thu, 22 Feb 2024 14:53:01 +0900 Subject: [PATCH 3/3] chore: comment to do --- .../zero/eight/donut/service/SerialDonationService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/zero/eight/donut/service/SerialDonationService.java b/src/main/java/zero/eight/donut/service/SerialDonationService.java index cb87774..7fef061 100644 --- a/src/main/java/zero/eight/donut/service/SerialDonationService.java +++ b/src/main/java/zero/eight/donut/service/SerialDonationService.java @@ -153,6 +153,13 @@ public ApiResponse donateGift(DonateGiftRequestDto requestDto) throws IOExcep //기부 통계 업데이트 updateDonateInfo(requestDto); + /** + * !!!비동기 처리!!! + * 1. 받은 이미지 중 복구 실행해야 하는 것들 복구 + * (복구에 성공했다면) + * -> 기존 imageUrl 객체 삭제 + * -> newGift의 imageUrl 수정 + **/ //Send Image to AI // if(requestDto.getIsRestored()) // imageUrl = sendImageToAI(requestDto.getGiftImage());