diff --git a/src/main/java/library/BookRentalSystem.java b/src/main/java/library/BookRentalSystem.java index 5b73941..49ce0b5 100644 --- a/src/main/java/library/BookRentalSystem.java +++ b/src/main/java/library/BookRentalSystem.java @@ -8,40 +8,60 @@ import java.util.List; @Table(name="BookRentalSystem_table") public class BookRentalSystem { + @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String bookName; private String bookStatus; - @PostPersist - public void onPostPersist(){ - Reserved reserved = new Reserved(); - BeanUtils.copyProperties(this, reserved); - reserved.publish(); - //Following code causes dependency to external APIs - // it is NOT A GOOD PRACTICE. instead, Event-Policy mapping is recommended. - - library.external.PointSystem pointSystem = new library.external.PointSystem(); - // mappings goes here - Application.applicationContext.getBean(library.external.PointSystemService.class) - .usePoints(pointSystem); - - - ReservationCanceled reservationCanceled = new ReservationCanceled(); - BeanUtils.copyProperties(this, reservationCanceled); - reservationCanceled.publish(); - - - } + //책을 예약함 +// @PostPersist +// public void bookReserved(){ +// Reserved reserved = new Reserved(); +// BeanUtils.copyProperties(this, reserved); +// reserved.publish(); +// +// //Following code causes dependency to external APIs +// // it is NOT A GOOD PRACTICE. instead, Event-Policy mapping is recommended. +// +// library.external.PointSystem pointSystem = new library.external.PointSystem(); +// // mappings goes here +// Application.applicationContext.getBean(library.external.PointSystemService.class) +// .usePoints(pointSystem); +// +// +// +// +// +// } @PostUpdate - public void onPostUpdate(){ - Returned returned = new Returned(); - BeanUtils.copyProperties(this, returned); - returned.publish(); + public void bookStatusUpdate(){ + if(this.getBookStatus().equals("Returned")){ + Returned returned = new Returned(this); + BeanUtils.copyProperties(this, returned); + returned.publish(); + }else if(this.getBookStatus().equals("Canceled")){ + + ReservationCanceled reservationCanceled = new ReservationCanceled(this); + BeanUtils.copyProperties(this, reservationCanceled); + reservationCanceled.publish(); + }else if(this.getBookStatus().equals("Reserved Complete")){ + Reserved reserved = new Reserved(this); + BeanUtils.copyProperties(this, reserved); + reserved.publish(); + } } +// @PostUpdate +// public void onPostUpdate(){ +// Returned returned = new Returned(); +// BeanUtils.copyProperties(this, returned); +// returned.publish(); +// +// +// } public Long getId() { diff --git a/src/main/java/library/BookRentalSystemController.java b/src/main/java/library/BookRentalSystemController.java index 24834df..05da505 100644 --- a/src/main/java/library/BookRentalSystemController.java +++ b/src/main/java/library/BookRentalSystemController.java @@ -1,17 +1,49 @@ package library; +import library.external.PointSystem; +import library.external.PointSystemService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; @RestController public class BookRentalSystemController { + @Autowired + private BookRentalSystemRepository bookRentalSystemRepository; + + @Autowired + private PointSystemService pointSystemService; + + @PutMapping("/bookRentalSystems/returned/{id}") + public void bookReturned(@PathVariable(value = "id") Long id){ + BookRentalSystem bookRentalSystem = bookRentalSystemRepository.findById(id).get(); + bookRentalSystem.setBookStatus("Returned"); + bookRentalSystemRepository.save(bookRentalSystem); + + + } + + @PostMapping("/bookRentalSystems/reserveCanceled/{id}") + public void bookReserveCanceled(@PathVariable(value = "id")Long id){ + BookRentalSystem bookRentalSystem = bookRentalSystemRepository.findById(id).get(); + bookRentalSystem.setBookStatus("Canceled"); + bookRentalSystemRepository.save(bookRentalSystem); + + } + + @PostMapping("/bookRentalSystems/reserve/{id}") + public void bookReserve(@PathVariable(value="id")Long id){ + PointSystem pointSystem = new PointSystem(); + pointSystem.setBookId(id); + PointSystemService pointSystemService = Application.applicationContext. + getBean(library.external.PointSystemService.class); + pointSystemService.usePoints(pointSystem); + } } diff --git a/src/main/java/library/PointUsed.java b/src/main/java/library/PointUsed.java index 5312a73..39e27dc 100644 --- a/src/main/java/library/PointUsed.java +++ b/src/main/java/library/PointUsed.java @@ -4,12 +4,21 @@ package library; public class PointUsed extends AbstractEvent { private Long id; + private Long bookId; private Long pointQty; public Long getId() { return id; } + public Long getBookId() { + return bookId; + } + + public void setBookId(Long bookId) { + this.bookId = bookId; + } + public void setId(Long id) { this.id = id; } @@ -20,4 +29,4 @@ public class PointUsed extends AbstractEvent { public void setPointQty(Long pointQty) { this.pointQty = pointQty; } -} +} \ No newline at end of file diff --git a/src/main/java/library/PolicyHandler.java b/src/main/java/library/PolicyHandler.java index e6f879a..34e4425 100644 --- a/src/main/java/library/PolicyHandler.java +++ b/src/main/java/library/PolicyHandler.java @@ -8,22 +8,43 @@ import org.springframework.cloud.stream.annotation.StreamListener; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.stereotype.Service; +import java.awt.print.Book; + @Service public class PolicyHandler{ - - @StreamListener(KafkaProcessor.INPUT) - public void wheneverPointUsed_ChangeStatus(@Payload PointUsed pointUsed){ - if(pointUsed.isMe()){ - System.out.println("##### listener ChangeStatus : " + pointUsed.toJson()); + @Autowired + BookRentalSystemRepository bookRentalSystemRepository; + + @StreamListener(KafkaProcessor.INPUT) //포인트 결제 완료시 + public void wheneverPointUsed_ChangeStatus(@Payload PointUsed pointUsed){ + try { + if (pointUsed.isMe()) { + System.out.println("##### point use completed : " + pointUsed.toJson()); + BookRentalSystem bookRentalSystem = bookRentalSystemRepository.findById(pointUsed.getBookId()).get(); + bookRentalSystem.setBookStatus("Reserved Complete"); + bookRentalSystemRepository.save(bookRentalSystem); + } + }catch (Exception e){ + e.printStackTrace(); } } - @StreamListener(KafkaProcessor.INPUT) + @StreamListener(KafkaProcessor.INPUT) //관리자가 도서 신규 등록 시 public void wheneverRegistered_ChangeStatus(@Payload Registered registered){ + try{ + if(registered.isMe()){ + System.out.print("####book registered: " + registered.toJson()); + BookRentalSystem bookRentalSystem = new BookRentalSystem(); + bookRentalSystem.setId(registered.getId()); + bookRentalSystem.setBookName(registered.getBookName()); + bookRentalSystem.setBookStatus(Registered.class.getSimpleName()); + bookRentalSystemRepository.save(bookRentalSystem); - if(registered.isMe()){ - System.out.println("##### listener ChangeStatus : " + registered.toJson()); + } + }catch (Exception e){ + e.printStackTrace(); } + } } diff --git a/src/main/java/library/ReservationCanceled.java b/src/main/java/library/ReservationCanceled.java index 2209df3..6dfab34 100644 --- a/src/main/java/library/ReservationCanceled.java +++ b/src/main/java/library/ReservationCanceled.java @@ -6,6 +6,13 @@ public class ReservationCanceled extends AbstractEvent { private String bookName; private String bookStatus; + public ReservationCanceled(BookRentalSystem bookRentalSystem){ + this(); + this.setId(bookRentalSystem.getId()); + this.setBookName(bookRentalSystem.getBookName()); + this.setBookStatus(bookRentalSystem.getBookStatus()); + + } public ReservationCanceled(){ super(); } diff --git a/src/main/java/library/Reserved.java b/src/main/java/library/Reserved.java index 3a6d07c..ab7822f 100644 --- a/src/main/java/library/Reserved.java +++ b/src/main/java/library/Reserved.java @@ -6,6 +6,13 @@ public class Reserved extends AbstractEvent { private String bookName; private String bookStatus; + public Reserved(BookRentalSystem bookRentalSystem){ + this(); + this.setId(bookRentalSystem.getId()); + this.setBookName(bookRentalSystem.getBookName()); + this.setBookStatus(bookRentalSystem.getBookStatus()); + } + public Reserved(){ super(); } diff --git a/src/main/java/library/Returned.java b/src/main/java/library/Returned.java index a396868..e75a7f6 100644 --- a/src/main/java/library/Returned.java +++ b/src/main/java/library/Returned.java @@ -10,6 +10,13 @@ public class Returned extends AbstractEvent { super(); } + + public Returned(BookRentalSystem bookRentalSystem){ + this(); + this.setId(bookRentalSystem.getId()); + this.setBookStatus(bookRentalSystem.getBookStatus()); + this.setBookName(bookRentalSystem.getBookName()); + } public Long getId() { return id; } diff --git a/src/main/java/library/external/PointSystem.java b/src/main/java/library/external/PointSystem.java index bc4cdbf..bae6c44 100644 --- a/src/main/java/library/external/PointSystem.java +++ b/src/main/java/library/external/PointSystem.java @@ -3,12 +3,21 @@ package library.external; public class PointSystem { private Long id; + private Long bookId; public Long getId() { return id; } + public Long getBookId() { + return bookId; + } + + public void setBookId(Long bookId) { + this.bookId = bookId; + } + public void setId(Long id) { this.id = id; } diff --git a/src/main/java/library/external/PointSystemService.java b/src/main/java/library/external/PointSystemService.java index 99d401b..96da91d 100644 --- a/src/main/java/library/external/PointSystemService.java +++ b/src/main/java/library/external/PointSystemService.java @@ -12,10 +12,10 @@ import java.util.Date; * Created by uengine on 2018. 11. 21.. */ -@FeignClient(name="point", url="http://point:8080") +@FeignClient(name="point", url="http://localhost:8084") public interface PointSystemService { - @RequestMapping(method= RequestMethod.POST, path="/pointSystems") + @RequestMapping(method= RequestMethod.POST, path="/pointSystems", consumes = "application/json") public void usePoints(@RequestBody PointSystem pointSystem); } \ No newline at end of file diff --git a/target/classes/library/BookRentalSystem.class b/target/classes/library/BookRentalSystem.class index de9bef8..20d5244 100644 Binary files a/target/classes/library/BookRentalSystem.class and b/target/classes/library/BookRentalSystem.class differ diff --git a/target/classes/library/BookRentalSystemController.class b/target/classes/library/BookRentalSystemController.class index 9636354..3925141 100644 Binary files a/target/classes/library/BookRentalSystemController.class and b/target/classes/library/BookRentalSystemController.class differ diff --git a/target/classes/library/PointUsed.class b/target/classes/library/PointUsed.class index 623036f..f5fc44c 100644 Binary files a/target/classes/library/PointUsed.class and b/target/classes/library/PointUsed.class differ diff --git a/target/classes/library/PolicyHandler.class b/target/classes/library/PolicyHandler.class index 10d964b..15c0336 100644 Binary files a/target/classes/library/PolicyHandler.class and b/target/classes/library/PolicyHandler.class differ diff --git a/target/classes/library/ReservationCanceled.class b/target/classes/library/ReservationCanceled.class index ef95061..07a66f6 100644 Binary files a/target/classes/library/ReservationCanceled.class and b/target/classes/library/ReservationCanceled.class differ diff --git a/target/classes/library/Reserved.class b/target/classes/library/Reserved.class index 421fa50..734ac0b 100644 Binary files a/target/classes/library/Reserved.class and b/target/classes/library/Reserved.class differ diff --git a/target/classes/library/Returned.class b/target/classes/library/Returned.class index ef72649..9d15a3a 100644 Binary files a/target/classes/library/Returned.class and b/target/classes/library/Returned.class differ diff --git a/target/classes/library/external/PointSystem.class b/target/classes/library/external/PointSystem.class index daaa31a..f2c60d7 100644 Binary files a/target/classes/library/external/PointSystem.class and b/target/classes/library/external/PointSystem.class differ diff --git a/target/classes/library/external/PointSystemService.class b/target/classes/library/external/PointSystemService.class index 8c95ddc..d59ca8e 100644 Binary files a/target/classes/library/external/PointSystemService.class and b/target/classes/library/external/PointSystemService.class differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..4e97723 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,14 @@ +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\BookRentalSystemRepository.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\ReservationCanceled.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\Application.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\config\kafka\KafkaProcessor.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\AbstractEvent.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\external\PointSystem.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\BookRentalSystem.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\external\PointSystemService.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\PolicyHandler.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\Reserved.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\BookRentalSystemController.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\Returned.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\PointUsed.java +C:\Users\SKCC\Desktop\library\bookRental\src\main\java\library\Registered.java