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