msa : msa - feign client 를 이용하여 모듈간(user, webbok) 연동 : add webbook
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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<Long> registerReader(@RequestBody RegisterReaderForm registerReaderForm){
|
||||
// return ResponseEntity.ok(ReaderService.registerReader(registerReaderForm));
|
||||
// }
|
||||
//
|
||||
// @GetMapping("/webBook")
|
||||
// public ResponseEntity<List<WebBookDto>> getWebBookList() {
|
||||
// return ResponseEntity.ok().body(webBookService.getWebBookList());
|
||||
// }
|
||||
//
|
||||
// @GetMapping("/{readerId}/webBook/{webBookId}/chapter")
|
||||
// public ResponseEntity<List<WebBookChapterDto>> getWebBookChapterList(
|
||||
// @PathVariable(value = "readerId") Long readerId,
|
||||
// @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));
|
||||
// }
|
||||
//}
|
||||
@@ -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<Long> registerWriter(@RequestBody RegisterWriterForm registerWriterForm) {
|
||||
return ResponseEntity.ok().body(writerService.registerWriter(registerWriterForm));
|
||||
}
|
||||
|
||||
@PostMapping("/{writerId}/webBook")
|
||||
public ResponseEntity<Long> registerWebBook(
|
||||
@PathVariable(value = "writerId") Long writerId,
|
||||
@RequestBody RegisterWebBookForm registerWebBookForm) {
|
||||
return ResponseEntity.ok(writerWebBookService.registerWebBook(writerId, registerWebBookForm));
|
||||
}
|
||||
|
||||
// @PostMapping("/{writerId}/webBook/{webBookId}")
|
||||
// public ResponseEntity<Long> registerWebBookChapter(
|
||||
// @PathVariable(value = "writerId") Long writerId,
|
||||
// @PathVariable(value = "webBookId") Long webBookId,
|
||||
// @RequestBody RegisterWebBookChapterForm registerWebBookChapterForm) {
|
||||
// return ResponseEntity.ok(writerWebBookService.registerWebBookChapter(writerId, webBookId, registerWebBookChapterForm));
|
||||
// }
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@@ -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<Long> addWebBook(@RequestBody WebBookRegisterForm webBookRegisterForm) {
|
||||
return ResponseEntity.ok().body(webBookService.addWebBook(webBookRegisterForm));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user