msa : monolithic - payment webbook chapter
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -8,4 +8,5 @@ import lombok.Setter;
|
||||
public class WebBookChapterPaymentForm {
|
||||
|
||||
private Long webBookChapterId;
|
||||
private Integer price;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -45,4 +45,5 @@ public class WebBookService {
|
||||
});
|
||||
return webBookChapterDtos;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user