msa : monolithic - payment webbook chapter

This commit is contained in:
haerong22
2021-07-29 17:37:52 +09:00
parent 4f899cca59
commit 207accd8bb
7 changed files with 92 additions and 2 deletions

View File

@@ -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<Long> 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<WebBookChapterPaidDto> paymentWebBookChapter(
@PathVariable(value = "readerId") Long readerId,
@RequestBody WebBookChapterPaymentForm webBookChapterPaymentForm) {
return ResponseEntity.ok().body(webBookPaymentService.payment(readerId, webBookChapterPaymentForm));
}
}

View File

@@ -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();

View File

@@ -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();
}
}

View File

@@ -8,4 +8,5 @@ import lombok.Setter;
public class WebBookChapterPaymentForm {
private Long webBookChapterId;
private Integer price;
}

View File

@@ -10,4 +10,6 @@ import java.util.List;
public interface ReaderWebBookPaymentRepository extends JpaRepository<ReaderWebBookPayment, Long> {
List<ReaderWebBookPayment> findAllByReaderId(Long readerId);
ReaderWebBookPayment findByReaderIdAndWebBookChapterId(Long readerId, Long webBookChapterId);
}

View File

@@ -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);
}
}

View File

@@ -45,4 +45,5 @@ public class WebBookService {
});
return webBookChapterDtos;
}
}