msa : monolithic - payment webbook chapter
This commit is contained in:
@@ -1,9 +1,12 @@
|
|||||||
package com.monolithicdemo.controller;
|
package com.monolithicdemo.controller;
|
||||||
|
|
||||||
import com.monolithicdemo.model.dto.WebBookChapterDto;
|
import com.monolithicdemo.model.dto.WebBookChapterDto;
|
||||||
|
import com.monolithicdemo.model.dto.WebBookChapterPaidDto;
|
||||||
import com.monolithicdemo.model.dto.WebBookDto;
|
import com.monolithicdemo.model.dto.WebBookDto;
|
||||||
import com.monolithicdemo.model.form.RegisterReaderForm;
|
import com.monolithicdemo.model.form.RegisterReaderForm;
|
||||||
|
import com.monolithicdemo.model.form.WebBookChapterPaymentForm;
|
||||||
import com.monolithicdemo.service.ReaderService;
|
import com.monolithicdemo.service.ReaderService;
|
||||||
|
import com.monolithicdemo.service.WebBookPaymentService;
|
||||||
import com.monolithicdemo.service.WebBookService;
|
import com.monolithicdemo.service.WebBookService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -18,6 +21,7 @@ public class ReaderController {
|
|||||||
|
|
||||||
private final ReaderService ReaderService;
|
private final ReaderService ReaderService;
|
||||||
private final WebBookService webBookService;
|
private final WebBookService webBookService;
|
||||||
|
private final WebBookPaymentService webBookPaymentService;
|
||||||
|
|
||||||
@PostMapping("/")
|
@PostMapping("/")
|
||||||
public ResponseEntity<Long> registerReader(@RequestBody RegisterReaderForm registerReaderForm){
|
public ResponseEntity<Long> registerReader(@RequestBody RegisterReaderForm registerReaderForm){
|
||||||
@@ -35,4 +39,11 @@ public class ReaderController {
|
|||||||
@PathVariable(value = "webBookId") Long webBookId) {
|
@PathVariable(value = "webBookId") Long webBookId) {
|
||||||
return ResponseEntity.ok().body(webBookService.getWebBookChapterList(readerId, 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 {
|
public class WebBookChapterDto {
|
||||||
private Long webBookChapterId;
|
private Long webBookChapterId;
|
||||||
private String name;
|
private String name;
|
||||||
private String detail;
|
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
private Integer price;
|
private Integer price;
|
||||||
private Boolean isPaid;
|
private Boolean isPaid;
|
||||||
@@ -22,7 +21,6 @@ public class WebBookChapterDto {
|
|||||||
return WebBookChapterDto.builder()
|
return WebBookChapterDto.builder()
|
||||||
.webBookChapterId(webBookChapter.getWebBookChapterId())
|
.webBookChapterId(webBookChapter.getWebBookChapterId())
|
||||||
.name(webBookChapter.getName())
|
.name(webBookChapter.getName())
|
||||||
.detail(webBookChapter.getDetail())
|
|
||||||
.createdAt(webBookChapter.getCreatedAt())
|
.createdAt(webBookChapter.getCreatedAt())
|
||||||
.price(webBookChapter.getPrice())
|
.price(webBookChapter.getPrice())
|
||||||
.build();
|
.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 {
|
public class WebBookChapterPaymentForm {
|
||||||
|
|
||||||
private Long webBookChapterId;
|
private Long webBookChapterId;
|
||||||
|
private Integer price;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,4 +10,6 @@ import java.util.List;
|
|||||||
public interface ReaderWebBookPaymentRepository extends JpaRepository<ReaderWebBookPayment, Long> {
|
public interface ReaderWebBookPaymentRepository extends JpaRepository<ReaderWebBookPayment, Long> {
|
||||||
|
|
||||||
List<ReaderWebBookPayment> findAllByReaderId(Long readerId);
|
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;
|
return webBookChapterDtos;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user