From 207accd8bb5a7d3f794a365c41f1ecba661c2388 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Thu, 29 Jul 2021 17:37:52 +0900 Subject: [PATCH] msa : monolithic - payment webbook chapter --- .../controller/ReaderController.java | 11 +++++ .../model/dto/WebBookChapterDto.java | 2 - .../model/dto/WebBookChapterPaidDto.java | 30 ++++++++++++ .../model/form/WebBookChapterPaymentForm.java | 1 + .../ReaderWebBookPaymentRepository.java | 2 + .../service/WebBookPaymentService.java | 47 +++++++++++++++++++ .../service/WebBookService.java | 1 + 7 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/dto/WebBookChapterPaidDto.java create mode 100644 msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookPaymentService.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 783fb57a..06dd903a 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,9 +1,12 @@ package com.monolithicdemo.controller; import com.monolithicdemo.model.dto.WebBookChapterDto; +import com.monolithicdemo.model.dto.WebBookChapterPaidDto; import com.monolithicdemo.model.dto.WebBookDto; import com.monolithicdemo.model.form.RegisterReaderForm; +import com.monolithicdemo.model.form.WebBookChapterPaymentForm; import com.monolithicdemo.service.ReaderService; +import com.monolithicdemo.service.WebBookPaymentService; import com.monolithicdemo.service.WebBookService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -18,6 +21,7 @@ public class ReaderController { private final ReaderService ReaderService; private final WebBookService webBookService; + private final WebBookPaymentService webBookPaymentService; @PostMapping("/") public ResponseEntity registerReader(@RequestBody RegisterReaderForm registerReaderForm){ @@ -35,4 +39,11 @@ public class ReaderController { @PathVariable(value = "webBookId") Long webBookId) { return ResponseEntity.ok().body(webBookService.getWebBookChapterList(readerId, webBookId)); } + + @PostMapping("/{readerId}/payment") + public ResponseEntity paymentWebBookChapter( + @PathVariable(value = "readerId") Long readerId, + @RequestBody WebBookChapterPaymentForm webBookChapterPaymentForm) { + return ResponseEntity.ok().body(webBookPaymentService.payment(readerId, webBookChapterPaymentForm)); + } } 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 3a1ac9a4..92bba487 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 @@ -13,7 +13,6 @@ import java.time.LocalDateTime; public class WebBookChapterDto { private Long webBookChapterId; private String name; - private String detail; private LocalDateTime createdAt; private Integer price; private Boolean isPaid; @@ -22,7 +21,6 @@ public class WebBookChapterDto { 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/dto/WebBookChapterPaidDto.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/dto/WebBookChapterPaidDto.java new file mode 100644 index 00000000..bcbdbbac --- /dev/null +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/dto/WebBookChapterPaidDto.java @@ -0,0 +1,30 @@ +package com.monolithicdemo.model.dto; + +import com.monolithicdemo.model.entity.WebBookChapter; +import lombok.*; + +import java.time.LocalDateTime; + +@Getter +@Setter +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class WebBookChapterPaidDto { + private Long webBookChapterId; + private String name; + private String detail; + private LocalDateTime createdAt; + private Integer price; + private Boolean isPaid; + + public static WebBookChapterPaidDto from(WebBookChapter webBookChapter) { + return WebBookChapterPaidDto.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/form/WebBookChapterPaymentForm.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/form/WebBookChapterPaymentForm.java index c7831c55..540aa9e3 100644 --- a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/form/WebBookChapterPaymentForm.java +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/model/form/WebBookChapterPaymentForm.java @@ -8,4 +8,5 @@ import lombok.Setter; public class WebBookChapterPaymentForm { private Long webBookChapterId; + private Integer price; } 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 index db8ab9a1..e6172a5a 100644 --- a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/repository/ReaderWebBookPaymentRepository.java +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/repository/ReaderWebBookPaymentRepository.java @@ -10,4 +10,6 @@ import java.util.List; public interface ReaderWebBookPaymentRepository extends JpaRepository { List findAllByReaderId(Long readerId); + + ReaderWebBookPayment findByReaderIdAndWebBookChapterId(Long readerId, Long webBookChapterId); } diff --git a/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookPaymentService.java b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookPaymentService.java new file mode 100644 index 00000000..eae2dfef --- /dev/null +++ b/msa_practice/monolithicdemo/src/main/java/com/monolithicdemo/service/WebBookPaymentService.java @@ -0,0 +1,47 @@ +package com.monolithicdemo.service; + +import com.monolithicdemo.model.dto.WebBookChapterPaidDto; +import com.monolithicdemo.model.entity.ReaderWebBookPayment; +import com.monolithicdemo.model.entity.WebBookChapter; +import com.monolithicdemo.model.form.WebBookChapterPaymentForm; +import com.monolithicdemo.repository.ReaderWebBookPaymentRepository; +import com.monolithicdemo.repository.WebBookChapterRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +@Service +@RequiredArgsConstructor +public class WebBookPaymentService { + + private final WebBookChapterRepository webBookChapterRepository; + private final ReaderWebBookPaymentRepository readerWebBookPaymentRepository; + + public WebBookChapterPaidDto payment(Long readerId, WebBookChapterPaymentForm webBookChapterPaymentForm) { + + ReaderWebBookPayment readerWebBookPayment = readerWebBookPaymentRepository.findByReaderIdAndWebBookChapterId(readerId, webBookChapterPaymentForm.getWebBookChapterId()); + + if (readerWebBookPayment != null) { + return null; // 이미 결제 + } + + WebBookChapter webBookChapter = webBookChapterRepository.findById(webBookChapterPaymentForm.getWebBookChapterId()).get(); + + if (!webBookChapter.getPrice().equals(webBookChapterPaymentForm.getPrice())) { + return null; + } + + + readerWebBookPaymentRepository.save( + ReaderWebBookPayment.builder() + .webBookChapterId(webBookChapterPaymentForm.getWebBookChapterId()) + .readerId(readerId) + .paymentAmount(webBookChapterPaymentForm.getPrice()) + .createdAt(LocalDateTime.now()) + .build() + ); + + return WebBookChapterPaidDto.from(webBookChapter); + } +} 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 833f4248..8fbd1c10 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 @@ -45,4 +45,5 @@ public class WebBookService { }); return webBookChapterDtos; } + }