From a4b3ea5689e75182c83a0f5e5095e422df544485 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Sat, 31 Jul 2021 18:09:35 +0900 Subject: [PATCH] =?UTF-8?q?msa=20:=20msa=20-=20feign=20client=20=EB=A5=BC?= =?UTF-8?q?=20=EC=9D=B4=EC=9A=A9=ED=95=98=EC=97=AC=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EA=B0=84(user,=20webbok)=20=EC=97=B0=EB=8F=99=20:=20add=20webb?= =?UTF-8?q?ook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/userdemo/client/WebBookClient.java | 5 ++ .../client/form/WebBookRegisterForm.java | 23 +++++++++ .../userdemo/controller/ReaderController.java | 49 +++++++++++++++++++ .../userdemo/controller/WriterController.java | 38 ++++++++++++++ .../model/form/RegisterReaderForm.java | 15 ++++++ .../form/RegisterWebBookChapterForm.java | 22 +++++++++ .../model/form/RegisterWebBookForm.java | 19 +++++++ .../model/form/RegisterWriterForm.java | 15 ++++++ .../model/form/WebBookChapterPaymentForm.java | 11 +++++ .../com/userdemo/service/ReaderService.java | 28 +++++++++++ .../com/userdemo/service/WriterService.java | 30 ++++++++++++ .../service/WriterWebBookService.java | 48 ++++++++++++++++++ .../controller/WebBookController.java | 24 +++++++++ .../model/form/WebBookRegisterForm.java | 23 +++++++++ .../webbookdemo/service/WebBookService.java | 28 +++++++++++ 15 files changed, 378 insertions(+) create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/form/WebBookRegisterForm.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/controller/ReaderController.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/controller/WriterController.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterReaderForm.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookChapterForm.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookForm.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWriterForm.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/WebBookChapterPaymentForm.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/ReaderService.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterService.java create mode 100644 msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterWebBookService.java create mode 100644 msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/controller/WebBookController.java create mode 100644 msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/model/form/WebBookRegisterForm.java create mode 100644 msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/service/WebBookService.java diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/WebBookClient.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/WebBookClient.java index 480ff4bb..8947e9cf 100644 --- a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/WebBookClient.java +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/WebBookClient.java @@ -1,8 +1,13 @@ package com.userdemo.client; +import com.userdemo.client.form.WebBookRegisterForm; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; @FeignClient(value = "webBook", url = "${external-api.webBook.url}") public interface WebBookClient { + @PostMapping("") + Long addBook(@RequestBody WebBookRegisterForm registerWebBookForm); } diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/form/WebBookRegisterForm.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/form/WebBookRegisterForm.java new file mode 100644 index 00000000..29356301 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/client/form/WebBookRegisterForm.java @@ -0,0 +1,23 @@ +package com.userdemo.client.form; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +@Setter +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel +public class WebBookRegisterForm { + + private Long writerId; + + @ApiModelProperty(value = "웹소설 제목", example = "MSA 실습") + private String name; + + @ApiModelProperty(value = "웹소설 설명", example = "Monolithic 에서 MSA 로 실습을 해 봅시다.") + private String description; + +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/controller/ReaderController.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/controller/ReaderController.java new file mode 100644 index 00000000..a23fdf4c --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/controller/ReaderController.java @@ -0,0 +1,49 @@ +//package com.userdemo.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; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.List; +// +//@RestController +//@RequestMapping("/reader") +//@RequiredArgsConstructor +//public class ReaderController { +// +// private final ReaderService ReaderService; +// private final WebBookService webBookService; +// private final WebBookPaymentService webBookPaymentService; +// +// @PostMapping("/") +// public ResponseEntity registerReader(@RequestBody RegisterReaderForm registerReaderForm){ +// return ResponseEntity.ok(ReaderService.registerReader(registerReaderForm)); +// } +// +// @GetMapping("/webBook") +// 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)); +// } +// +// @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/msatest/userdemo/src/main/java/com/userdemo/controller/WriterController.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/controller/WriterController.java new file mode 100644 index 00000000..c93469c6 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/controller/WriterController.java @@ -0,0 +1,38 @@ +package com.userdemo.controller; + +import com.userdemo.model.form.RegisterWebBookForm; +import com.userdemo.model.form.RegisterWriterForm; +import com.userdemo.service.WriterService; +import com.userdemo.service.WriterWebBookService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/writer") +@RequiredArgsConstructor +public class WriterController { + + private final WriterService writerService; + private final WriterWebBookService writerWebBookService; + + @PostMapping("/") + public ResponseEntity registerWriter(@RequestBody RegisterWriterForm registerWriterForm) { + return ResponseEntity.ok().body(writerService.registerWriter(registerWriterForm)); + } + + @PostMapping("/{writerId}/webBook") + public ResponseEntity registerWebBook( + @PathVariable(value = "writerId") Long writerId, + @RequestBody RegisterWebBookForm registerWebBookForm) { + return ResponseEntity.ok(writerWebBookService.registerWebBook(writerId, registerWebBookForm)); + } + +// @PostMapping("/{writerId}/webBook/{webBookId}") +// public ResponseEntity registerWebBookChapter( +// @PathVariable(value = "writerId") Long writerId, +// @PathVariable(value = "webBookId") Long webBookId, +// @RequestBody RegisterWebBookChapterForm registerWebBookChapterForm) { +// return ResponseEntity.ok(writerWebBookService.registerWebBookChapter(writerId, webBookId, registerWebBookChapterForm)); +// } +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterReaderForm.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterReaderForm.java new file mode 100644 index 00000000..45e10599 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterReaderForm.java @@ -0,0 +1,15 @@ +package com.userdemo.model.form; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +@ApiModel +public class RegisterReaderForm { + + @ApiModelProperty(value = "작가의 이름", example = "홍길동") + private String name; +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookChapterForm.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookChapterForm.java new file mode 100644 index 00000000..dd6fc173 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookChapterForm.java @@ -0,0 +1,22 @@ +package com.userdemo.model.form; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +@ApiModel +public class RegisterWebBookChapterForm { + + @ApiModelProperty(value = "웹소설 제목", example = "MSA 실습") + private String name; + + @ApiModelProperty(value = "웹소설 설명", example = "blah, blah ~~~") + private String detail; + + @ApiModelProperty(value = "웹소설 가격", example = "100") + private Integer price; + +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookForm.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookForm.java new file mode 100644 index 00000000..9a9a9855 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWebBookForm.java @@ -0,0 +1,19 @@ +package com.userdemo.model.form; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +@ApiModel +public class RegisterWebBookForm { + + @ApiModelProperty(value = "웹소설 제목", example = "MSA 실습") + private String name; + + @ApiModelProperty(value = "웹소설 설명", example = "Monolithic 에서 MSA 로 실습을 해 봅시다.") + private String description; + +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWriterForm.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWriterForm.java new file mode 100644 index 00000000..45b22722 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/RegisterWriterForm.java @@ -0,0 +1,15 @@ +package com.userdemo.model.form; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +@ApiModel +public class RegisterWriterForm { + + @ApiModelProperty(value = "작가의 이름", example = "홍길동") + private String name; +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/WebBookChapterPaymentForm.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/WebBookChapterPaymentForm.java new file mode 100644 index 00000000..ea9dc8bb --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/model/form/WebBookChapterPaymentForm.java @@ -0,0 +1,11 @@ +package com.userdemo.model.form; + +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class WebBookChapterPaymentForm { + private Long webBookChapterId; + private Integer price; +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/ReaderService.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/ReaderService.java new file mode 100644 index 00000000..d2200730 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/ReaderService.java @@ -0,0 +1,28 @@ +package com.userdemo.service; + +import com.userdemo.model.entity.Reader; +import com.userdemo.model.entity.repository.ReaderRepository; +import com.userdemo.model.form.RegisterReaderForm; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +@Service +/** + * Reader에 대한 CRUD + */ +@RequiredArgsConstructor +public class ReaderService { + + private final ReaderRepository ReaderRepository; + + public Long registerReader(RegisterReaderForm registerReaderForm) { + + return ReaderRepository.save( + Reader.builder() + .name(registerReaderForm.getName()) + .createdAt(LocalDateTime.now()).build() + ).getReaderId(); + } +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterService.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterService.java new file mode 100644 index 00000000..8a370d3f --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterService.java @@ -0,0 +1,30 @@ +package com.userdemo.service; + + +import com.userdemo.model.entity.Writer; +import com.userdemo.model.entity.repository.WriterRepository; +import com.userdemo.model.form.RegisterWriterForm; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +@Service +/** + * writer에 대한 CRUD + */ +@RequiredArgsConstructor +public class WriterService { + + private final WriterRepository writerRepository; + + public Long registerWriter(RegisterWriterForm registerWriterForm) { + + return writerRepository.save( + Writer.builder() + .name(registerWriterForm.getName()) + .createdAt(LocalDateTime.now()).build() + ).getWriterId(); + + } +} diff --git a/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterWebBookService.java b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterWebBookService.java new file mode 100644 index 00000000..249c4dd5 --- /dev/null +++ b/msa_practice/msatest/userdemo/src/main/java/com/userdemo/service/WriterWebBookService.java @@ -0,0 +1,48 @@ +package com.userdemo.service; + +import com.userdemo.client.WebBookClient; +import com.userdemo.client.form.WebBookRegisterForm; +import com.userdemo.model.entity.repository.WriterRepository; +import com.userdemo.model.form.RegisterWebBookForm; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +@Service +@RequiredArgsConstructor +public class WriterWebBookService { + + private final WriterRepository writerRepository; + private final WebBookClient webBookClient; + + public Long registerWebBook(Long writerId, RegisterWebBookForm registerWebBookForm) { + + if (writerRepository.existsById(writerId)) { + WebBookRegisterForm webBookRegisterForm = WebBookRegisterForm.builder() + .writerId(writerId) + .name(registerWebBookForm.getName()) + .description(registerWebBookForm.getDescription()) + .build(); + + return webBookClient.addBook(webBookRegisterForm); + } else { + return null; + } + } + +// public Long registerWebBookChapter(Long writerId, Long webBookId, RegisterWebBookChapterForm registerWebBookChapterForm) { +// if (writerRepository.existsById(writerId) && webBookRepository.existsById(webBookId)) { +// return webBookChapterRepository.save( +// WebBookChapter.builder() +// .name(registerWebBookChapterForm.getName()) +// .detail(registerWebBookChapterForm.getDetail()) +// .createdAt(LocalDateTime.now()) +// .price(registerWebBookChapterForm.getPrice()) +// .build()) +// .getWebBookChapterId(); +// } else { +// return null; +// } +// } +} diff --git a/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/controller/WebBookController.java b/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/controller/WebBookController.java new file mode 100644 index 00000000..a870b918 --- /dev/null +++ b/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/controller/WebBookController.java @@ -0,0 +1,24 @@ +package com.webbookdemo.controller; + +import com.webbookdemo.model.form.WebBookRegisterForm; +import com.webbookdemo.service.WebBookService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("") +@RequiredArgsConstructor +public class WebBookController { + + private final WebBookService webBookService; + + @PostMapping + public ResponseEntity addWebBook(@RequestBody WebBookRegisterForm webBookRegisterForm) { + return ResponseEntity.ok().body(webBookService.addWebBook(webBookRegisterForm)); + } + +} diff --git a/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/model/form/WebBookRegisterForm.java b/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/model/form/WebBookRegisterForm.java new file mode 100644 index 00000000..9c7e4386 --- /dev/null +++ b/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/model/form/WebBookRegisterForm.java @@ -0,0 +1,23 @@ +package com.webbookdemo.model.form; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +@Setter +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel +public class WebBookRegisterForm { + + private Long writerId; + + @ApiModelProperty(value = "웹소설 제목", example = "MSA 실습") + private String name; + + @ApiModelProperty(value = "웹소설 설명", example = "Monolithic 에서 MSA 로 실습을 해 봅시다.") + private String description; + +} diff --git a/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/service/WebBookService.java b/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/service/WebBookService.java new file mode 100644 index 00000000..039584fb --- /dev/null +++ b/msa_practice/msatest/webbookdemo/src/main/java/com/webbookdemo/service/WebBookService.java @@ -0,0 +1,28 @@ +package com.webbookdemo.service; + +import com.webbookdemo.model.entity.WebBook; +import com.webbookdemo.model.entity.repository.WebBookRepository; +import com.webbookdemo.model.form.WebBookRegisterForm; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +@Service +@RequiredArgsConstructor +public class WebBookService { + + private final WebBookRepository webBookRepository; + + public Long addWebBook(WebBookRegisterForm webBookRegisterForm) { + + return webBookRepository.save( + WebBook.builder() + .writerId(webBookRegisterForm.getWriterId()) + .name(webBookRegisterForm.getName()) + .description(webBookRegisterForm.getDescription()) + .createdAt(LocalDateTime.now()) + .build() + ).getWebBookId(); + } +}