From 25d71d7d858eb1d8621805746c7e09b9ca2a2aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=88=98=EC=A7=80=EB=8B=88?= Date: Sun, 5 Nov 2023 20:25:24 +0900 Subject: [PATCH 1/7] =?UTF-8?q?[test]:=20WalletServiceIntegrationTest=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logs/log | 4 ++++ .../controller/CustomerController.java | 1 + .../service/WalletServiceIntegrationTest.java | 20 +++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 logs/log diff --git a/logs/log b/logs/log new file mode 100644 index 0000000000..bfaa47e8f1 --- /dev/null +++ b/logs/log @@ -0,0 +1,4 @@ +2023-10-30 02:24:32.165 ERROR 99525 --- [main] c.p.v.infra.input.BufferedReaderImpl : input type은 [list, create, exit] 중 하나이어야 합니다. + +2023-10-30 02:24:35.241 ERROR 99525 --- [main] c.p.v.infra.input.BufferedReaderImpl : input type은 [list, create, exit] 중 하나이어야 합니다. + diff --git a/src/main/java/com/prgrms/vouchermanagement/core/customer/controller/CustomerController.java b/src/main/java/com/prgrms/vouchermanagement/core/customer/controller/CustomerController.java index 6d2853b559..3e5015b988 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/customer/controller/CustomerController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/customer/controller/CustomerController.java @@ -40,6 +40,7 @@ public CustomersResponse findAll() { return toCustomersResponse(customerDtoList); } + // 별도의 클래스로 빼서 static 메서드로 관리하면 깔끔할듯 private static CustomersResponse toCustomersResponse(List customerDtoList) { List customerResponses = customerDtoList.stream() .map(it -> new CustomerResponse(it.getId(), it.getName(), it.getEmail())) diff --git a/src/test/java/com/prgrms/vouchermanagement/core/wallet/service/WalletServiceIntegrationTest.java b/src/test/java/com/prgrms/vouchermanagement/core/wallet/service/WalletServiceIntegrationTest.java index 718cce66fc..e851a59fdc 100644 --- a/src/test/java/com/prgrms/vouchermanagement/core/wallet/service/WalletServiceIntegrationTest.java +++ b/src/test/java/com/prgrms/vouchermanagement/core/wallet/service/WalletServiceIntegrationTest.java @@ -217,10 +217,27 @@ void testFindVouchersByCustomerWithNoVoucher() { @Test void testDeleteVouchersByCustomer() { // given + String customerId = UUID.randomUUID().toString(); + Customer customer = new Customer(customerId, "test10", "test10@email.com"); + customerRepository.save(customer); + + String voucherId1 = UUID.randomUUID().toString(); + Voucher voucher1 = new Voucher(voucherId1, "test6", 1000, VoucherType.FIXED); + voucherRepository.save(voucher1); + + String voucherId2 = UUID.randomUUID().toString(); + Voucher voucher2 = new Voucher(voucherId2, "test7", 1000, VoucherType.FIXED); + voucherRepository.save(voucher2); + + walletService.assignVoucher(customerId, voucherId1); + walletService.assignVoucher(customerId, voucherId2); // when + walletService.deleteVouchersByCustomer(customerId); + List voucherDtoList = walletService.findVouchersByCustomer(customerId); // then + assertThat(voucherDtoList.isEmpty()).isTrue(); } // 고객이 존재하지 않는 경우 @@ -228,10 +245,13 @@ void testDeleteVouchersByCustomer() { @Test void testDeleteVouchersByNoExistCustomer() { // given + String customerId = UUID.randomUUID().toString(); // when // then + assertThrows(IllegalArgumentException.class, + () -> walletService.deleteVouchersByCustomer(customerId)); } From 671d7cb571482fe098466be6cc9443b1d917a9f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=88=98=EC=A7=80=EB=8B=88?= Date: Sun, 5 Nov 2023 20:46:25 +0900 Subject: [PATCH 2/7] =?UTF-8?q?[settings]:=20web=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +++ .../voucher/controller/{ => console}/VoucherController.java | 0 .../controller/{ => console}/request/VoucherCreateRequest.java | 0 .../controller/{ => console}/response/VoucherResponse.java | 0 .../controller/{ => console}/response/VouchersResponse.java | 0 5 files changed, 3 insertions(+) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/{ => console}/VoucherController.java (100%) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/{ => console}/request/VoucherCreateRequest.java (100%) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/{ => console}/response/VoucherResponse.java (100%) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/{ => console}/response/VouchersResponse.java (100%) diff --git a/build.gradle b/build.gradle index 3ac4bc45e9..186fbb73d4 100644 --- a/build.gradle +++ b/build.gradle @@ -28,6 +28,9 @@ dependencies { // h2 testImplementation 'com.h2database:h2' + // web + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.7.1' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/VoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/VoucherController.java similarity index 100% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/VoucherController.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/VoucherController.java diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/request/VoucherCreateRequest.java similarity index 100% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/request/VoucherCreateRequest.java diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherResponse.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VoucherResponse.java similarity index 100% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherResponse.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VoucherResponse.java diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VouchersResponse.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VouchersResponse.java similarity index 100% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VouchersResponse.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VouchersResponse.java From c87a8fdb8a6e5666716e0607dccc3e206ea1db3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=88=98=EC=A7=80=EB=8B=88?= Date: Sun, 5 Nov 2023 21:16:04 +0900 Subject: [PATCH 3/7] =?UTF-8?q?[feat]:=20ApiVoucherController=20-=20?= =?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EB=B0=94=EC=9A=B0=EC=B2=98=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/voucher/controller/Mapper.java | 18 +++ .../controller/api/ApiVoucherController.java | 38 +++++ ...ler.java => ConsoleVoucherController.java} | 19 +-- .../request/VoucherCreateRequest.java | 0 .../response/VoucherResponse.java | 27 +++- .../response/VouchersResponse.java | 5 +- .../vouchermanagement/infra/InfraManager.java | 131 +++++++++--------- src/main/resources/application-common.yml | 2 +- 8 files changed, 156 insertions(+), 84 deletions(-) create mode 100644 src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java create mode 100644 src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/{VoucherController.java => ConsoleVoucherController.java} (65%) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/{console => }/request/VoucherCreateRequest.java (100%) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/{console => }/response/VoucherResponse.java (62%) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/{console => }/response/VouchersResponse.java (79%) diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java new file mode 100644 index 0000000000..86016383ee --- /dev/null +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java @@ -0,0 +1,18 @@ +package com.prgrms.vouchermanagement.core.voucher.controller; + +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; +import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; + +import java.util.List; +import java.util.stream.Collectors; + +public class Mapper { + + public static VouchersResponse toVouchersResponse(List voucherDtoList) { + List voucherResponseList = voucherDtoList.stream() + .map(it -> new VoucherResponse(it.getId(), it.getName(), it.getAmount(), it.getVoucherType())) + .collect(Collectors.toList()); + return new VouchersResponse(voucherResponseList); + } +} diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java new file mode 100644 index 0000000000..47dd5a6b1c --- /dev/null +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java @@ -0,0 +1,38 @@ +package com.prgrms.vouchermanagement.core.voucher.controller.api; + +import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; +import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; +import com.prgrms.vouchermanagement.core.voucher.service.VoucherService; +import org.springframework.context.annotation.Profile; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +import static com.prgrms.vouchermanagement.core.voucher.controller.Mapper.toVouchersResponse; + +@Profile("prod") +@RestController +@RequestMapping("/api/vouchers") +public class ApiVoucherController { + + private final VoucherService voucherService; + + public ApiVoucherController(VoucherService voucherService) { + this.voucherService = voucherService; + } + + /** + * 전체 바우처 조회 + * + * @return + */ + @GetMapping + public ResponseEntity getAllVouchers() { + List voucherDtoList = voucherService.findAll(); + return ResponseEntity.ok(toVouchersResponse(voucherDtoList)); + } + +} diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/VoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java similarity index 65% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/VoucherController.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java index 891825b9b9..737242d46b 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/VoucherController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java @@ -1,24 +1,26 @@ -package com.prgrms.vouchermanagement.core.voucher.controller; +package com.prgrms.vouchermanagement.core.voucher.controller.console; import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; -import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.domain.VoucherType; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; import com.prgrms.vouchermanagement.core.voucher.service.VoucherService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Controller; import java.util.List; -import java.util.stream.Collectors; +import static com.prgrms.vouchermanagement.core.voucher.controller.Mapper.toVouchersResponse; + +@Profile("dev") @Controller -public class VoucherController { +public class ConsoleVoucherController { private final VoucherService voucherService; @Autowired - public VoucherController(VoucherService voucherService) { + public ConsoleVoucherController(VoucherService voucherService) { this.voucherService = voucherService; } @@ -39,11 +41,4 @@ public VouchersResponse getAllVoucher() { List voucherDtoList = voucherService.findAll(); return toVouchersResponse(voucherDtoList); } - - private static VouchersResponse toVouchersResponse(List voucherDtoList) { - List voucherResponseList = voucherDtoList.stream() - .map(it -> new VoucherResponse(it.getId(), it.getName(), it.getAmount(), it.getVoucherType())) - .collect(Collectors.toList()); - return new VouchersResponse(voucherResponseList); - } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/request/VoucherCreateRequest.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java similarity index 100% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/request/VoucherCreateRequest.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VoucherResponse.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherResponse.java similarity index 62% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VoucherResponse.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherResponse.java index bc94028ad0..f4d67bcd71 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VoucherResponse.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherResponse.java @@ -4,10 +4,13 @@ public class VoucherResponse { - private final String id; - private final String name; - private final long amount; - private final VoucherType voucherType; + private String id; + private String name; + private long amount; + private VoucherType voucherType; + + public VoucherResponse() { + } public VoucherResponse(String id, String name, long amount, VoucherType voucherType) { this.id = id; @@ -16,6 +19,22 @@ public VoucherResponse(String id, String name, long amount, VoucherType voucherT this.voucherType = voucherType; } + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public long getAmount() { + return amount; + } + + public VoucherType getVoucherType() { + return voucherType; + } + @Override public String toString() { return "Voucher = {" + diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VouchersResponse.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VouchersResponse.java similarity index 79% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VouchersResponse.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VouchersResponse.java index 5b26296d99..3a54a3cbb5 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/response/VouchersResponse.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VouchersResponse.java @@ -4,7 +4,10 @@ public class VouchersResponse { - private final List voucherResponses; + private List voucherResponses; + + public VouchersResponse() { + } public VouchersResponse(List voucherResponses) { this.voucherResponses = voucherResponses; diff --git a/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java b/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java index 05cf641819..9f38a9f17b 100644 --- a/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java +++ b/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java @@ -1,66 +1,65 @@ -package com.prgrms.vouchermanagement.infra; - -import com.prgrms.vouchermanagement.core.voucher.controller.VoucherController; -import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; -import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; -import com.prgrms.vouchermanagement.infra.input.InputProvider; -import com.prgrms.vouchermanagement.infra.utils.OutputMessage; -import com.prgrms.vouchermanagement.infra.output.OutputProvider; -import com.prgrms.vouchermanagement.infra.utils.MenuType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.stereotype.Component; - -import java.io.IOException; - -@Component -public class InfraManager implements CommandLineRunner { - - private final InputProvider inputProvider; - private final OutputProvider outputProvider; - private final VoucherController voucherController; - - @Autowired - public InfraManager(InputProvider inputProvider, OutputProvider outputProvider, VoucherController voucherController) { - this.inputProvider = inputProvider; - this.outputProvider = outputProvider; - this.voucherController = voucherController; - } - - @Override - public void run(String... args) throws Exception { - boolean isRunning = true; - - while (isRunning) { - outputProvider.printMessage(OutputMessage.MENU_TYPES); - MenuType menuType = inputProvider.inputMenuType(); - - switch(menuType) { - case LIST: - list(); - break; - case CREATE: - create(); - break; - case EXIT: - isRunning = false; - break; - } - } - } - - private void list() { - VouchersResponse vouchersResponse = voucherController.getAllVoucher(); - outputProvider.printMessage(vouchersResponse); - } - - private void create() throws IOException { - outputProvider.printMessage(OutputMessage.VOUCHER_NAME); - String name = inputProvider.inputVoucherName(); - outputProvider.printMessage(OutputMessage.VOUCHER_TYPES); - String voucherType = inputProvider.inputVoucherType(); - outputProvider.printVoucherTypeMessage(voucherType); - int amount = inputProvider.inputVoucherAmount(); - voucherController.createVoucher(new VoucherCreateRequest(name, voucherType, amount)); - } -} +//package com.prgrms.vouchermanagement.infra; +// +//import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; +//import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; +//import com.prgrms.vouchermanagement.infra.input.InputProvider; +//import com.prgrms.vouchermanagement.infra.utils.OutputMessage; +//import com.prgrms.vouchermanagement.infra.output.OutputProvider; +//import com.prgrms.vouchermanagement.infra.utils.MenuType; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.CommandLineRunner; +//import org.springframework.stereotype.Component; +// +//import java.io.IOException; +// +//@Component +//public class InfraManager implements CommandLineRunner { +// +// private final InputProvider inputProvider; +// private final OutputProvider outputProvider; +// private final VoucherController voucherController; +// +// @Autowired +// public InfraManager(InputProvider inputProvider, OutputProvider outputProvider, VoucherController voucherController) { +// this.inputProvider = inputProvider; +// this.outputProvider = outputProvider; +// this.VoucherController = voucherController; +// } +// +// @Override +// public void run(String... args) throws Exception { +// boolean isRunning = true; +// +// while (isRunning) { +// outputProvider.printMessage(OutputMessage.MENU_TYPES); +// MenuType menuType = inputProvider.inputMenuType(); +// +// switch(menuType) { +// case LIST: +// list(); +// break; +// case CREATE: +// create(); +// break; +// case EXIT: +// isRunning = false; +// break; +// } +// } +// } +// +// private void list() { +// VouchersResponse vouchersResponse = voucherController.getAllVoucher(); +// outputProvider.printMessage(vouchersResponse); +// } +// +// private void create() throws IOException { +// outputProvider.printMessage(OutputMessage.VOUCHER_NAME); +// String name = inputProvider.inputVoucherName(); +// outputProvider.printMessage(OutputMessage.VOUCHER_TYPES); +// String voucherType = inputProvider.inputVoucherType(); +// outputProvider.printVoucherTypeMessage(voucherType); +// int amount = inputProvider.inputVoucherAmount(); +// voucherController.createVoucher(new VoucherCreateRequest(name, voucherType, amount)); +// } +//} diff --git a/src/main/resources/application-common.yml b/src/main/resources/application-common.yml index 0f322a062f..dc6aed311b 100644 --- a/src/main/resources/application-common.yml +++ b/src/main/resources/application-common.yml @@ -4,6 +4,6 @@ voucher: logging: level: - root: warn + root: info file: name: logs/log \ No newline at end of file From 3a84925b7c8349031454b360600dda390fbec1ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=88=98=EC=A7=80=EB=8B=88?= Date: Sun, 5 Nov 2023 21:34:11 +0900 Subject: [PATCH 4/7] =?UTF-8?q?[feat]:=20ApiVoucherController=20-=20?= =?UTF-8?q?=EB=B0=94=EC=9A=B0=EC=B2=98=20=EC=B6=94=EA=B0=80=20API=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/voucher/controller/Mapper.java | 10 ++++++ .../controller/api/ApiVoucherController.java | 21 ++++++++--- .../console/ConsoleVoucherController.java | 8 ++--- ...quest.java => VoucherCreationRequest.java} | 4 +-- .../response/VoucherCreationResponse.java | 35 +++++++++++++++++++ .../core/voucher/dto/VoucherDto.java | 6 ++++ .../core/voucher/service/VoucherService.java | 5 +-- .../vouchermanagement/infra/InfraManager.java | 4 +-- 8 files changed, 79 insertions(+), 14 deletions(-) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/{VoucherCreateRequest.java => VoucherCreationRequest.java} (79%) create mode 100644 src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreationResponse.java diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java index 86016383ee..cb7f7eac3f 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java @@ -1,5 +1,7 @@ package com.prgrms.vouchermanagement.core.voucher.controller; +import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreationResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; @@ -15,4 +17,12 @@ public static VouchersResponse toVouchersResponse(List voucherDtoLis .collect(Collectors.toList()); return new VouchersResponse(voucherResponseList); } + + public static VoucherCreationResponse toVoucherCreationResponse(VoucherDto voucherDto) { + return new VoucherCreationResponse(voucherDto.getId(), voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType().toString()); + } + + public static VoucherDto toVoucherDto(VoucherCreationRequest voucherCreationRequest) { + return new VoucherDto(voucherCreationRequest.getName(), voucherCreationRequest.getAmount(), voucherCreationRequest.getVoucherType()); + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java index 47dd5a6b1c..75ea3da63f 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java @@ -1,17 +1,18 @@ package com.prgrms.vouchermanagement.core.voucher.controller.api; +import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreationResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; import com.prgrms.vouchermanagement.core.voucher.service.VoucherService; import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; -import static com.prgrms.vouchermanagement.core.voucher.controller.Mapper.toVouchersResponse; +import static com.prgrms.vouchermanagement.core.voucher.controller.Mapper.*; + @Profile("prod") @RestController @@ -35,4 +36,16 @@ public ResponseEntity getAllVouchers() { return ResponseEntity.ok(toVouchersResponse(voucherDtoList)); } + /** + * 바우처 추가 + * + * @param voucherCreationRequest + * @return + */ + @PostMapping + public ResponseEntity create(@RequestBody VoucherCreationRequest voucherCreationRequest) { + VoucherDto voucherDto = voucherService.create(toVoucherDto(voucherCreationRequest)); + return ResponseEntity.ok(toVoucherCreationResponse(voucherDto)); + } + } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java index 737242d46b..dc365e728a 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java @@ -1,6 +1,6 @@ package com.prgrms.vouchermanagement.core.voucher.controller.console; -import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; +import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.domain.VoucherType; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; @@ -26,10 +26,10 @@ public ConsoleVoucherController(VoucherService voucherService) { /** * 바우처 등록 - * @param voucherCreateRequest + * @param voucherCreationRequest */ - public void createVoucher(VoucherCreateRequest voucherCreateRequest) { - VoucherDto voucherDto = new VoucherDto(voucherCreateRequest.getName(), voucherCreateRequest.getAmount(), VoucherType.getType(voucherCreateRequest.getVoucherType())); + public void createVoucher(VoucherCreationRequest voucherCreationRequest) { + VoucherDto voucherDto = new VoucherDto(voucherCreationRequest.getName(), voucherCreationRequest.getAmount(), VoucherType.getType(voucherCreationRequest.getVoucherType())); voucherService.create(voucherDto); } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreationRequest.java similarity index 79% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreationRequest.java index 55047bd0a8..643f171188 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreationRequest.java @@ -1,12 +1,12 @@ package com.prgrms.vouchermanagement.core.voucher.controller.request; -public class VoucherCreateRequest { +public class VoucherCreationRequest { private final String name; private final String voucherType; private final long amount; - public VoucherCreateRequest(String name, String voucherType, long amount) { + public VoucherCreationRequest(String name, String voucherType, long amount) { this.name = name; this.voucherType = voucherType; this.amount = amount; diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreationResponse.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreationResponse.java new file mode 100644 index 0000000000..8418e42736 --- /dev/null +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreationResponse.java @@ -0,0 +1,35 @@ +package com.prgrms.vouchermanagement.core.voucher.controller.response; + +public class VoucherCreationResponse { + + private String id; + private String name; + private long amount; + private String voucherType; + + public VoucherCreationResponse() { + } + + public VoucherCreationResponse(String id, String name, long amount, String voucherType) { + this.id = id; + this.name = name; + this.amount = amount; + this.voucherType = voucherType; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public long getAmount() { + return amount; + } + + public String getVoucherType() { + return voucherType; + } +} diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/dto/VoucherDto.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/dto/VoucherDto.java index 037c9d2764..83da4c72d9 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/dto/VoucherDto.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/dto/VoucherDto.java @@ -22,6 +22,12 @@ public VoucherDto(String name, long amount, VoucherType voucherType) { this.voucherType = voucherType; } + public VoucherDto(String name, long amount, String voucherType) { + this.name = name; + this.amount = amount; + this.voucherType = VoucherType.getType(voucherType); + } + public String getId() { return id; } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java index 4531370268..561dd702d9 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java @@ -20,8 +20,9 @@ public VoucherService(VoucherRepository voucherRepository) { this.voucherRepository = voucherRepository; } - public void create(VoucherDto voucherDto) { - voucherRepository.save(Mapper.toVoucher(voucherDto)); + public VoucherDto create(VoucherDto voucherDto) { + Voucher voucher = voucherRepository.save(Mapper.toVoucher(voucherDto)); + return new VoucherDto(voucher.getId(), voucher.getName(), voucher.getAmount(), voucher.getVoucherType()); } public List findAll() { diff --git a/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java b/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java index 9f38a9f17b..5d03b015c7 100644 --- a/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java +++ b/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java @@ -1,6 +1,6 @@ //package com.prgrms.vouchermanagement.infra; // -//import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; +//import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; //import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; //import com.prgrms.vouchermanagement.infra.input.InputProvider; //import com.prgrms.vouchermanagement.infra.utils.OutputMessage; @@ -60,6 +60,6 @@ // String voucherType = inputProvider.inputVoucherType(); // outputProvider.printVoucherTypeMessage(voucherType); // int amount = inputProvider.inputVoucherAmount(); -// voucherController.createVoucher(new VoucherCreateRequest(name, voucherType, amount)); +// voucherController.createVoucher(new VoucherCreationRequest(name, voucherType, amount)); // } //} From ad2a718be64d1f122e7e6560093b81a53c04171b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=88=98=EC=A7=80=EB=8B=88?= Date: Sun, 5 Nov 2023 21:44:03 +0900 Subject: [PATCH 5/7] =?UTF-8?q?[feat]:=20ApiVoucherController=20-=20?= =?UTF-8?q?=EB=B0=94=EC=9A=B0=EC=B2=98=20=EB=8B=A8=EC=9D=BC=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/voucher/controller/Mapper.java | 4 ++++ .../controller/api/ApiVoucherController.java | 17 +++++++++++++++-- .../core/voucher/service/VoucherService.java | 15 +++++++++++++-- .../core/voucher/utils/mapper/Mapper.java | 4 ++++ 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java index cb7f7eac3f..50fbf9e93c 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java @@ -25,4 +25,8 @@ public static VoucherCreationResponse toVoucherCreationResponse(VoucherDto vouch public static VoucherDto toVoucherDto(VoucherCreationRequest voucherCreationRequest) { return new VoucherDto(voucherCreationRequest.getName(), voucherCreationRequest.getAmount(), voucherCreationRequest.getVoucherType()); } + + public static VoucherResponse toVoucherResponse(VoucherDto voucherDto) { + return new VoucherResponse(voucherDto.getId(),voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType()); + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java index 75ea3da63f..e0318fdcdf 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java @@ -2,6 +2,7 @@ import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreationResponse; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; import com.prgrms.vouchermanagement.core.voucher.service.VoucherService; @@ -26,7 +27,7 @@ public ApiVoucherController(VoucherService voucherService) { } /** - * 전체 바우처 조회 + * 바우처 전체 조회 * * @return */ @@ -47,5 +48,17 @@ public ResponseEntity create(@RequestBody VoucherCreati VoucherDto voucherDto = voucherService.create(toVoucherDto(voucherCreationRequest)); return ResponseEntity.ok(toVoucherCreationResponse(voucherDto)); } - + + /** + * 바우처 단일 조회 + * + * @param voucherId + * @return + */ + @GetMapping("/{voucherId}") + public ResponseEntity getVoucher(@PathVariable String voucherId) { + VoucherDto voucherDto = voucherService.getVoucher(voucherId); + return ResponseEntity.ok(toVoucherResponse(voucherDto)); + } + } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java index 561dd702d9..dc4481bf06 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java @@ -3,13 +3,16 @@ import com.prgrms.vouchermanagement.core.voucher.domain.Voucher; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; import com.prgrms.vouchermanagement.core.voucher.repository.VoucherRepository; -import com.prgrms.vouchermanagement.core.voucher.utils.mapper.Mapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; +import static com.prgrms.vouchermanagement.core.voucher.utils.mapper.Mapper.toVoucher; +import static com.prgrms.vouchermanagement.core.voucher.utils.mapper.Mapper.toVoucherDto; + @Service public class VoucherService { @@ -21,7 +24,7 @@ public VoucherService(VoucherRepository voucherRepository) { } public VoucherDto create(VoucherDto voucherDto) { - Voucher voucher = voucherRepository.save(Mapper.toVoucher(voucherDto)); + Voucher voucher = voucherRepository.save(toVoucher(voucherDto)); return new VoucherDto(voucher.getId(), voucher.getName(), voucher.getAmount(), voucher.getVoucherType()); } @@ -31,4 +34,12 @@ public List findAll() { .map(it -> new VoucherDto(it.getId(), it.getName(), it.getAmount(), it.getVoucherType())) .collect(Collectors.toList()); } + + public VoucherDto getVoucher(String voucherId) { + Optional optionalVoucher = voucherRepository.findById(voucherId); + if (optionalVoucher.isEmpty()) { + throw new IllegalArgumentException("존재하지 않는 바우처 id 입니다."); + } + return toVoucherDto(optionalVoucher.get()); + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/utils/mapper/Mapper.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/utils/mapper/Mapper.java index c9951f318b..7b65f5eb8f 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/utils/mapper/Mapper.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/utils/mapper/Mapper.java @@ -9,4 +9,8 @@ public static Voucher toVoucher(VoucherDto voucherDto) { return new Voucher(voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType().toString()); } + public static VoucherDto toVoucherDto(Voucher voucher) { + return new VoucherDto(voucher.getId(), voucher.getName(), voucher.getAmount(), voucher.getVoucherType()); + } + } From 9d9e91577df47470f30c8d19b78aef150a7a82c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=88=98=EC=A7=80=EB=8B=88?= Date: Sun, 5 Nov 2023 21:55:08 +0900 Subject: [PATCH 6/7] =?UTF-8?q?[feat]:=20ApiVoucherController=20-=20?= =?UTF-8?q?=EB=B0=94=EC=9A=B0=EC=B2=98=20=EC=82=AD=EC=A0=9C=20API=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/voucher/controller/Mapper.java | 17 +++++++++----- .../controller/api/ApiVoucherController.java | 23 +++++++++++++++---- .../console/ConsoleVoucherController.java | 8 +++---- ...Request.java => VoucherCreateRequest.java} | 4 ++-- ...sponse.java => VoucherCreateResponse.java} | 6 ++--- .../response/VoucherDeleteResponse.java | 17 ++++++++++++++ .../voucher/repository/VoucherRepository.java | 2 ++ .../repository/file/FileRepository.java | 4 ++++ .../jdbc/JdbcVoucherRepository.java | 8 +++++++ .../memory/MemoryVoucherRepository.java | 4 ++++ .../core/voucher/service/VoucherService.java | 6 +++++ .../vouchermanagement/infra/InfraManager.java | 4 ++-- 12 files changed, 81 insertions(+), 22 deletions(-) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/{VoucherCreationRequest.java => VoucherCreateRequest.java} (79%) rename src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/{VoucherCreationResponse.java => VoucherCreateResponse.java} (76%) create mode 100644 src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherDeleteResponse.java diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java index 50fbf9e93c..4ac0594dfd 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/Mapper.java @@ -1,7 +1,8 @@ package com.prgrms.vouchermanagement.core.voucher.controller; -import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; -import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreationResponse; +import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreateResponse; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherDeleteResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; @@ -18,15 +19,19 @@ public static VouchersResponse toVouchersResponse(List voucherDtoLis return new VouchersResponse(voucherResponseList); } - public static VoucherCreationResponse toVoucherCreationResponse(VoucherDto voucherDto) { - return new VoucherCreationResponse(voucherDto.getId(), voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType().toString()); + public static VoucherCreateResponse toVoucherCreationResponse(VoucherDto voucherDto) { + return new VoucherCreateResponse(voucherDto.getId(), voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType().toString()); } - public static VoucherDto toVoucherDto(VoucherCreationRequest voucherCreationRequest) { - return new VoucherDto(voucherCreationRequest.getName(), voucherCreationRequest.getAmount(), voucherCreationRequest.getVoucherType()); + public static VoucherDto toVoucherDto(VoucherCreateRequest voucherCreateRequest) { + return new VoucherDto(voucherCreateRequest.getName(), voucherCreateRequest.getAmount(), voucherCreateRequest.getVoucherType()); } public static VoucherResponse toVoucherResponse(VoucherDto voucherDto) { return new VoucherResponse(voucherDto.getId(),voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType()); } + + public static VoucherDeleteResponse toVoucherDeleteResponse(String id) { + return new VoucherDeleteResponse(id); + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java index e0318fdcdf..1640bc7c39 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java @@ -1,7 +1,8 @@ package com.prgrms.vouchermanagement.core.voucher.controller.api; -import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; -import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreationResponse; +import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreateResponse; +import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherDeleteResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; @@ -40,12 +41,12 @@ public ResponseEntity getAllVouchers() { /** * 바우처 추가 * - * @param voucherCreationRequest + * @param voucherCreateRequest * @return */ @PostMapping - public ResponseEntity create(@RequestBody VoucherCreationRequest voucherCreationRequest) { - VoucherDto voucherDto = voucherService.create(toVoucherDto(voucherCreationRequest)); + public ResponseEntity create(@RequestBody VoucherCreateRequest voucherCreateRequest) { + VoucherDto voucherDto = voucherService.create(toVoucherDto(voucherCreateRequest)); return ResponseEntity.ok(toVoucherCreationResponse(voucherDto)); } @@ -61,4 +62,16 @@ public ResponseEntity getVoucher(@PathVariable String voucherId return ResponseEntity.ok(toVoucherResponse(voucherDto)); } + /** + * 바우처 삭제 + * + * @param voucherId + * @return + */ + @DeleteMapping("/{voucherId}") + public ResponseEntity deleteVoucher(@PathVariable String voucherId) { + String id = voucherService.deleteById(voucherId); + return ResponseEntity.ok(toVoucherDeleteResponse(id)); + } + } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java index dc365e728a..737242d46b 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/console/ConsoleVoucherController.java @@ -1,6 +1,6 @@ package com.prgrms.vouchermanagement.core.voucher.controller.console; -import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; +import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; import com.prgrms.vouchermanagement.core.voucher.domain.VoucherType; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; @@ -26,10 +26,10 @@ public ConsoleVoucherController(VoucherService voucherService) { /** * 바우처 등록 - * @param voucherCreationRequest + * @param voucherCreateRequest */ - public void createVoucher(VoucherCreationRequest voucherCreationRequest) { - VoucherDto voucherDto = new VoucherDto(voucherCreationRequest.getName(), voucherCreationRequest.getAmount(), VoucherType.getType(voucherCreationRequest.getVoucherType())); + public void createVoucher(VoucherCreateRequest voucherCreateRequest) { + VoucherDto voucherDto = new VoucherDto(voucherCreateRequest.getName(), voucherCreateRequest.getAmount(), VoucherType.getType(voucherCreateRequest.getVoucherType())); voucherService.create(voucherDto); } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreationRequest.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java similarity index 79% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreationRequest.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java index 643f171188..55047bd0a8 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreationRequest.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/request/VoucherCreateRequest.java @@ -1,12 +1,12 @@ package com.prgrms.vouchermanagement.core.voucher.controller.request; -public class VoucherCreationRequest { +public class VoucherCreateRequest { private final String name; private final String voucherType; private final long amount; - public VoucherCreationRequest(String name, String voucherType, long amount) { + public VoucherCreateRequest(String name, String voucherType, long amount) { this.name = name; this.voucherType = voucherType; this.amount = amount; diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreationResponse.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreateResponse.java similarity index 76% rename from src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreationResponse.java rename to src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreateResponse.java index 8418e42736..6ab1bb4e57 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreationResponse.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherCreateResponse.java @@ -1,16 +1,16 @@ package com.prgrms.vouchermanagement.core.voucher.controller.response; -public class VoucherCreationResponse { +public class VoucherCreateResponse { private String id; private String name; private long amount; private String voucherType; - public VoucherCreationResponse() { + public VoucherCreateResponse() { } - public VoucherCreationResponse(String id, String name, long amount, String voucherType) { + public VoucherCreateResponse(String id, String name, long amount, String voucherType) { this.id = id; this.name = name; this.amount = amount; diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherDeleteResponse.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherDeleteResponse.java new file mode 100644 index 0000000000..2fd9ab0ef2 --- /dev/null +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/response/VoucherDeleteResponse.java @@ -0,0 +1,17 @@ +package com.prgrms.vouchermanagement.core.voucher.controller.response; + +public class VoucherDeleteResponse { + + private String id; + + public VoucherDeleteResponse() { + } + + public VoucherDeleteResponse(String id) { + this.id = id; + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/VoucherRepository.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/VoucherRepository.java index f1bff0bf25..03b8a57454 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/VoucherRepository.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/VoucherRepository.java @@ -16,4 +16,6 @@ public interface VoucherRepository { Optional findById(String id); List findAllByIds(List idList); + + void deleteById(String id); } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/file/FileRepository.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/file/FileRepository.java index 7f182c9f0c..46fd80eb69 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/file/FileRepository.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/file/FileRepository.java @@ -49,4 +49,8 @@ public Optional findById(String id) { public List findAllByIds(List idList) { return null; } + + @Override + public void deleteById(String id) { + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/jdbc/JdbcVoucherRepository.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/jdbc/JdbcVoucherRepository.java index af37cc0678..72ec48329a 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/jdbc/JdbcVoucherRepository.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/jdbc/JdbcVoucherRepository.java @@ -77,4 +77,12 @@ public List findAllByIds(List idList) { return jdbcTemplate.query(sql, idList.toArray(), voucherRowMapper); } + + @Override + public void deleteById(String id) { + int update = jdbcTemplate.update("DELETE FROM vouchers WHERE id = ?", id); + if (update != 1) { + throw new RuntimeException("Failed to delete the voucher with ID: " + id); + } + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/memory/MemoryVoucherRepository.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/memory/MemoryVoucherRepository.java index 7f2573e9cc..e6679daade 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/memory/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/repository/memory/MemoryVoucherRepository.java @@ -40,4 +40,8 @@ public Optional findById(String id) { public List findAllByIds(List idList) { return null; } + + @Override + public void deleteById(String id) { + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java index dc4481bf06..c889509d82 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java @@ -42,4 +42,10 @@ public VoucherDto getVoucher(String voucherId) { } return toVoucherDto(optionalVoucher.get()); } + + + public String deleteById(String voucherId) { + voucherRepository.deleteById(voucherId); + return voucherId; + } } diff --git a/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java b/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java index 5d03b015c7..9f38a9f17b 100644 --- a/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java +++ b/src/main/java/com/prgrms/vouchermanagement/infra/InfraManager.java @@ -1,6 +1,6 @@ //package com.prgrms.vouchermanagement.infra; // -//import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreationRequest; +//import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest; //import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse; //import com.prgrms.vouchermanagement.infra.input.InputProvider; //import com.prgrms.vouchermanagement.infra.utils.OutputMessage; @@ -60,6 +60,6 @@ // String voucherType = inputProvider.inputVoucherType(); // outputProvider.printVoucherTypeMessage(voucherType); // int amount = inputProvider.inputVoucherAmount(); -// voucherController.createVoucher(new VoucherCreationRequest(name, voucherType, amount)); +// voucherController.createVoucher(new VoucherCreateRequest(name, voucherType, amount)); // } //} From 3a0cc4d31067d4cc8be1ec6a8fbc9fc661bc59ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=88=98=EC=A7=80=EB=8B=88?= Date: Sun, 5 Nov 2023 22:41:04 +0900 Subject: [PATCH 7/7] =?UTF-8?q?[feat]:=20ApiVoucherController=20-=20?= =?UTF-8?q?=EB=B0=94=EC=9A=B0=EC=B2=98=20=ED=95=84=ED=84=B0=EB=A7=81=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/ApiVoucherController.java | 10 +++++++--- .../core/voucher/service/VoucherService.java | 13 +++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java index 1640bc7c39..d41f1eca7b 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/controller/api/ApiVoucherController.java @@ -28,13 +28,17 @@ public ApiVoucherController(VoucherService voucherService) { } /** - * 바우처 전체 조회 + * 바우처 전체 조회 + 타입 별 필터링 * * @return */ @GetMapping - public ResponseEntity getAllVouchers() { - List voucherDtoList = voucherService.findAll(); + public ResponseEntity getVouchers(@RequestParam(name = "voucherType", defaultValue = "all") String voucherType) { + if (voucherType.equals("all")) { + List voucherDtoList = voucherService.findAll(); + return ResponseEntity.ok(toVouchersResponse(voucherDtoList)); + } + List voucherDtoList = voucherService.findByVoucherType(voucherType); return ResponseEntity.ok(toVouchersResponse(voucherDtoList)); } diff --git a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java index c889509d82..2462b156c0 100644 --- a/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java +++ b/src/main/java/com/prgrms/vouchermanagement/core/voucher/service/VoucherService.java @@ -3,6 +3,8 @@ import com.prgrms.vouchermanagement.core.voucher.domain.Voucher; import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto; import com.prgrms.vouchermanagement.core.voucher.repository.VoucherRepository; +import com.prgrms.vouchermanagement.infra.exception.InvalidFormatException; +import com.prgrms.vouchermanagement.infra.utils.MenuPatternUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -48,4 +50,15 @@ public String deleteById(String voucherId) { voucherRepository.deleteById(voucherId); return voucherId; } + + public List findByVoucherType(String voucherType) { + if (!MenuPatternUtils.VOUCHER_TYPE.matcher(voucherType).matches()) { + throw new InvalidFormatException("voucherType은 [fixed, rate] 중 하나이어야 합니다."); + } + List voucherList = voucherRepository.findAll(); + return voucherList.stream() + .filter(it -> it.getVoucherType().getValue().equals(voucherType)) + .map(it -> new VoucherDto(it.getId(), it.getName(), it.getAmount(), it.getVoucherType())) + .collect(Collectors.toList()); + } }