From 4f899cca5971c7506876ae4439d96da49621707a Mon Sep 17 00:00:00 2001 From: haerong22 Date: Thu, 29 Jul 2021 16:59:16 +0900 Subject: [PATCH] msa : monolithic - get webook chapter list --- .../controller/ReaderController.java | 8 ++++++ .../model/dto/WebBookChapterDto.java | 13 ++++++++-- .../model/entity/ReaderWebBookPayment.java | 2 ++ .../ReaderWebBookPaymentRepository.java | 13 ++++++++++ .../service/WebBookService.java | 26 +++++++++++++++++++ 5 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/repository/ReaderWebBookPaymentRepository.java diff --git a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/controller/ReaderController.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/controller/ReaderController.java index 295b7fd1..783fb57a 100644 --- a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/controller/ReaderController.java +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/controller/ReaderController.java @@ -1,5 +1,6 @@ package com.monolithicdemo.controller; +import com.monolithicdemo.model.dto.WebBookChapterDto; import com.monolithicdemo.model.dto.WebBookDto; import com.monolithicdemo.model.form.RegisterReaderForm; import com.monolithicdemo.service.ReaderService; @@ -27,4 +28,11 @@ public class ReaderController { public ResponseEntity> getWebBookList() { return ResponseEntity.ok().body(webBookService.getWebBookList()); } + + @GetMapping("/{readerId}/webBook/{webBookId}/chapter") + public ResponseEntity> getWebBookChapterList( + @PathVariable(value = "readerId") Long readerId, + @PathVariable(value = "webBookId") Long webBookId) { + return ResponseEntity.ok().body(webBookService.getWebBookChapterList(readerId, webBookId)); + } } diff --git a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/dto/WebBookChapterDto.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/dto/WebBookChapterDto.java index a1a5367f..3a1ac9a4 100644 --- a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/dto/WebBookChapterDto.java +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/dto/WebBookChapterDto.java @@ -1,5 +1,6 @@ package com.monolithicdemo.model.dto; +import com.monolithicdemo.model.entity.WebBookChapter; import lombok.*; import java.time.LocalDateTime; @@ -11,11 +12,19 @@ import java.time.LocalDateTime; @NoArgsConstructor public class WebBookChapterDto { private Long webBookChapterId; - private Long webBookId; private String name; private String detail; private LocalDateTime createdAt; private Integer price; + private Boolean isPaid; - + public static WebBookChapterDto from(WebBookChapter webBookChapter) { + return WebBookChapterDto.builder() + .webBookChapterId(webBookChapter.getWebBookChapterId()) + .name(webBookChapter.getName()) + .detail(webBookChapter.getDetail()) + .createdAt(webBookChapter.getCreatedAt()) + .price(webBookChapter.getPrice()) + .build(); + } } diff --git a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/entity/ReaderWebBookPayment.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/entity/ReaderWebBookPayment.java index eeb88507..947fcfad 100644 --- a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/entity/ReaderWebBookPayment.java +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/entity/ReaderWebBookPayment.java @@ -20,6 +20,8 @@ public class ReaderWebBookPayment { private Long webBookChapterId; + private Long readerId; + private Integer paymentAmount; private LocalDateTime createdAt; diff --git a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/repository/ReaderWebBookPaymentRepository.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/repository/ReaderWebBookPaymentRepository.java new file mode 100644 index 00000000..db8ab9a1 --- /dev/null +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/repository/ReaderWebBookPaymentRepository.java @@ -0,0 +1,13 @@ +package com.monolithicdemo.repository; + +import com.monolithicdemo.model.entity.ReaderWebBookPayment; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ReaderWebBookPaymentRepository extends JpaRepository { + + List findAllByReaderId(Long readerId); +} diff --git a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookService.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookService.java index c2d5f7ac..833f4248 100644 --- a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookService.java +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookService.java @@ -1,6 +1,10 @@ package com.monolithicdemo.service; +import com.monolithicdemo.model.dto.WebBookChapterDto; import com.monolithicdemo.model.dto.WebBookDto; +import com.monolithicdemo.model.entity.ReaderWebBookPayment; +import com.monolithicdemo.repository.ReaderWebBookPaymentRepository; +import com.monolithicdemo.repository.WebBookChapterRepository; import com.monolithicdemo.repository.WebBookRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -13,10 +17,32 @@ import java.util.stream.Collectors; public class WebBookService { private final WebBookRepository webBookRepository; + private final WebBookChapterRepository webBookChapterRepository; + private final ReaderWebBookPaymentRepository readerWebBookPaymentRepository; public List getWebBookList() { return webBookRepository.findAll().stream() .map(webBook -> WebBookDto.from(webBook)) .collect(Collectors.toList()); } + + public List getWebBookChapterList(Long readerId, Long webBookId) { + + List readerWebBookPayments = readerWebBookPaymentRepository.findAllByReaderId(readerId); + + List webBookChapterDtos = webBookChapterRepository.findAllById(List.of(webBookId)).stream() + .map(WebBookChapterDto::from) + .collect(Collectors.toList()); + + readerWebBookPayments.forEach(readerWebBookPayment -> { + WebBookChapterDto webBookChapterDto = webBookChapterDtos.stream().filter(dto -> dto.getWebBookChapterId() + .equals(readerWebBookPayment.getWebBookChapterId())).findFirst().get(); + if (webBookChapterDto != null) { + webBookChapterDto.setIsPaid(true); + } else { + webBookChapterDto.setIsPaid(false); + } + }); + return webBookChapterDtos; + } }