From ada3fd214629c81a5f89694291f541640bdb2e2a Mon Sep 17 00:00:00 2001 From: young970 Date: Wed, 19 Jul 2023 17:16:26 +0900 Subject: [PATCH 01/18] =?UTF-8?q?refactor:=20=EB=AA=A8=EB=93=A0=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=EC=97=90=EC=84=9C=20=EC=BB=A8?= =?UTF-8?q?=ED=8A=B8=EB=A1=A4=EB=9F=AC=EC=9D=98=20dto=EC=97=90=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 각각의 컨트롤러와 서비스 레이어에 각자의 dto와 컨버터를 두어 서비스 레이어에 있던 컨트롤러의 dto에 대한 의존성을 제거함. --- build.gradle | 7 +- .../mapper/ControllerMemberMapperImpl.java | 33 ++++++++++ .../mapper/ServiceMemberMapperImpl.java | 36 ++++++++++ .../mapper/ControllerVoucherMapperImpl.java | 33 ++++++++++ .../mapper/ServiceVoucherMapperImpl.java | 36 ++++++++++ .../mapper/ControllerWalletMapperImpl.java | 35 ++++++++++ .../org/prgrms/kdt/CommendLineRunner.java | 5 +- .../java/org/prgrms/kdt/HomeController.java | 13 ++++ src/main/java/org/prgrms/kdt/ViewManager.java | 14 ++-- .../org/prgrms/kdt/commendLine/Console.java | 6 +- .../member/controller/MemberController.java | 13 ++-- .../dto/ControllerCreateMemberRequest.java | 6 ++ .../mapper/ControllerMemberMapper.java | 10 +++ .../org/prgrms/kdt/member/domain/Member.java | 6 -- .../kdt/member/dto/CreateMemberRequest.java | 6 -- .../kdt/member/service/MemberService.java | 15 +++-- .../{ => service}/dto/MemberResponse.java | 2 +- .../{ => service}/dto/MemberResponses.java | 2 +- .../dto/ServiceCreateMemberRequest.java | 6 ++ .../service/mapper/ServiceMemberMapper.java | 18 +++++ src/main/java/org/prgrms/kdt/util/Menu.java | 4 +- .../voucher/controller/VoucherController.java | 13 ++-- .../controller/VoucherViewController.java | 66 ++++++++++--------- .../dto/ControllerCreateVoucherRequest.java | 6 ++ .../mapper/ControllerVoucherMapper.java | 10 +++ .../voucher/dao/JdbcVoucherRepository.java | 2 +- .../prgrms/kdt/voucher/domain/Voucher.java | 6 -- .../kdt/voucher/dto/CreateVoucherRequest.java | 6 -- .../kdt/voucher/service/VoucherService.java | 19 +++--- .../dto/ServiceCreateVoucherRequest.java | 6 ++ .../{ => service}/dto/VoucherResponse.java | 2 +- .../{ => service}/dto/VoucherResponses.java | 2 +- .../service/mapper/ServiceVoucherMapper.java | 26 ++++++++ .../wallet/controller/WalletController.java | 13 ++-- .../dto/ControllerCreateWalletRequest.java | 9 +++ .../mapper/ControllerWalletMapper.java | 10 +++ .../dto/request/CreateWalletRequest.java | 9 --- .../kdt/wallet/service/WalletService.java | 8 +-- .../dto}/JoinedWalletResponse.java | 2 +- .../dto}/JoinedWalletResponses.java | 2 +- .../dto/ServiceCreateWalletRequest.java | 6 ++ .../dto}/WalletResponse.java | 2 +- src/main/resources/templates/home.html | 14 ++++ .../resources/templates/voucher/vouchers.html | 18 ++--- src/test/TestVoucher.csv | 9 +-- .../kdt/member/service/MemberServiceTest.java | 17 +++-- .../org/prgrms/kdt/util/ConverterTest.java | 2 +- .../dao/FileVoucherRepositoryTest.java | 6 +- .../dao/MemoryVoucherRepositoryTest.java | 14 ++-- .../kdt/voucher/dao/VoucherLoaderTest.java | 4 +- .../voucher/service/VoucherServiceTest.java | 18 ++--- .../kdt/wallet/service/WalletServiceTest.java | 21 +++--- src/test/test_customer_blacklist.csv | 9 +-- 53 files changed, 475 insertions(+), 188 deletions(-) create mode 100644 src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java create mode 100644 src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java create mode 100644 src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java create mode 100644 src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java create mode 100644 src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java create mode 100644 src/main/java/org/prgrms/kdt/HomeController.java create mode 100644 src/main/java/org/prgrms/kdt/member/controller/dto/ControllerCreateMemberRequest.java create mode 100644 src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java delete mode 100644 src/main/java/org/prgrms/kdt/member/dto/CreateMemberRequest.java rename src/main/java/org/prgrms/kdt/member/{ => service}/dto/MemberResponse.java (87%) rename src/main/java/org/prgrms/kdt/member/{ => service}/dto/MemberResponses.java (92%) create mode 100644 src/main/java/org/prgrms/kdt/member/service/dto/ServiceCreateMemberRequest.java create mode 100644 src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java create mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/dto/ControllerCreateVoucherRequest.java create mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java delete mode 100644 src/main/java/org/prgrms/kdt/voucher/dto/CreateVoucherRequest.java create mode 100644 src/main/java/org/prgrms/kdt/voucher/service/dto/ServiceCreateVoucherRequest.java rename src/main/java/org/prgrms/kdt/voucher/{ => service}/dto/VoucherResponse.java (88%) rename src/main/java/org/prgrms/kdt/voucher/{ => service}/dto/VoucherResponses.java (92%) create mode 100644 src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java create mode 100644 src/main/java/org/prgrms/kdt/wallet/controller/dto/ControllerCreateWalletRequest.java create mode 100644 src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java delete mode 100644 src/main/java/org/prgrms/kdt/wallet/dto/request/CreateWalletRequest.java rename src/main/java/org/prgrms/kdt/wallet/{dto/response => service/dto}/JoinedWalletResponse.java (92%) rename src/main/java/org/prgrms/kdt/wallet/{dto/response => service/dto}/JoinedWalletResponses.java (92%) create mode 100644 src/main/java/org/prgrms/kdt/wallet/service/dto/ServiceCreateWalletRequest.java rename src/main/java/org/prgrms/kdt/wallet/{dto/response => service/dto}/WalletResponse.java (86%) create mode 100644 src/main/resources/templates/home.html diff --git a/build.gradle b/build.gradle index fdc90722a8..30a51b0e4b 100644 --- a/build.gradle +++ b/build.gradle @@ -22,10 +22,13 @@ dependencies { testImplementation "org.mockito:mockito-core:3.+" //JdbcTemplate 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' - + //web implementation 'org.springframework.boot:spring-boot-starter-web' - + //타입리프 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' + //mapStruct + implementation 'org.mapstruct:mapstruct:1.5.5.Final' + annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final' //DB설정 runtimeOnly 'mysql:mysql-connector-java:8.0.32' } diff --git a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java new file mode 100644 index 0000000000..3e71ef009c --- /dev/null +++ b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java @@ -0,0 +1,33 @@ +package org.prgrms.kdt.member.controller.mapper; + +import javax.annotation.processing.Generated; +import org.prgrms.kdt.member.controller.dto.ControllerCreateMemberRequest; +import org.prgrms.kdt.member.domain.MemberStatus; +import org.prgrms.kdt.member.service.dto.ServiceCreateMemberRequest; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-07-19T16:34:16+0900", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" +) +@Component +public class ControllerMemberMapperImpl implements ControllerMemberMapper { + + @Override + public ServiceCreateMemberRequest controllerRequestToServiceRequest(ControllerCreateMemberRequest request) { + if ( request == null ) { + return null; + } + + String name = null; + MemberStatus status = null; + + name = request.name(); + status = request.status(); + + ServiceCreateMemberRequest serviceCreateMemberRequest = new ServiceCreateMemberRequest( name, status ); + + return serviceCreateMemberRequest; + } +} diff --git a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java new file mode 100644 index 0000000000..605ed4bfaa --- /dev/null +++ b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java @@ -0,0 +1,36 @@ +package org.prgrms.kdt.member.service.mapper; + +import java.util.UUID; +import javax.annotation.processing.Generated; +import org.prgrms.kdt.member.domain.Member; +import org.prgrms.kdt.member.domain.MemberStatus; +import org.prgrms.kdt.member.service.dto.ServiceCreateMemberRequest; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-07-19T16:34:16+0900", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" +) +@Component +public class ServiceMemberMapperImpl implements ServiceMemberMapper { + + @Override + public Member serviceRequestToMember(ServiceCreateMemberRequest request) { + if ( request == null ) { + return null; + } + + String name = null; + MemberStatus status = null; + + name = request.name(); + status = request.status(); + + UUID memberId = createUUID(); + + Member member = new Member( memberId, name, status ); + + return member; + } +} diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java new file mode 100644 index 0000000000..233d3bc3d6 --- /dev/null +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -0,0 +1,33 @@ +package org.prgrms.kdt.voucher.controller.mapper; + +import javax.annotation.processing.Generated; +import org.prgrms.kdt.voucher.controller.dto.ControllerCreateVoucherRequest; +import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-07-19T16:34:16+0900", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" +) +@Component +public class ControllerVoucherMapperImpl implements ControllerVoucherMapper { + + @Override + public ServiceCreateVoucherRequest controllerDtoToServiceDto(ControllerCreateVoucherRequest controllerCreateVoucherRequest) { + if ( controllerCreateVoucherRequest == null ) { + return null; + } + + VoucherType voucherType = null; + double discountAmount = 0.0d; + + voucherType = controllerCreateVoucherRequest.voucherType(); + discountAmount = controllerCreateVoucherRequest.discountAmount(); + + ServiceCreateVoucherRequest serviceCreateVoucherRequest = new ServiceCreateVoucherRequest( voucherType, discountAmount ); + + return serviceCreateVoucherRequest; + } +} diff --git a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java new file mode 100644 index 0000000000..38843085cc --- /dev/null +++ b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java @@ -0,0 +1,36 @@ +package org.prgrms.kdt.voucher.service.mapper; + +import java.util.UUID; +import javax.annotation.processing.Generated; +import org.prgrms.kdt.voucher.domain.DiscountPolicy; +import org.prgrms.kdt.voucher.domain.Voucher; +import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-07-19T16:34:16+0900", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" +) +@Component +public class ServiceVoucherMapperImpl implements ServiceVoucherMapper { + + @Override + public Voucher serviceDtoToVoucher(ServiceCreateVoucherRequest request) { + if ( request == null ) { + return null; + } + + VoucherType voucherType = null; + + voucherType = request.voucherType(); + + UUID voucherId = createUUID(); + DiscountPolicy discountPolicy = createDiscountPolicy(request.voucherType(), request.discountAmount()); + + Voucher voucher = new Voucher( voucherId, voucherType, discountPolicy ); + + return voucher; + } +} diff --git a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java new file mode 100644 index 0000000000..ee1f94cfa4 --- /dev/null +++ b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java @@ -0,0 +1,35 @@ +package org.prgrms.kdt.wallet.controller.mapper; + +import java.util.UUID; +import javax.annotation.processing.Generated; +import org.prgrms.kdt.wallet.controller.dto.ControllerCreateWalletRequest; +import org.prgrms.kdt.wallet.service.dto.ServiceCreateWalletRequest; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-07-19T17:04:24+0900", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" +) +@Component +public class ControllerWalletMapperImpl implements ControllerWalletMapper { + + @Override + public ServiceCreateWalletRequest controllerRequestToServiceRequest(ControllerCreateWalletRequest request) { + if ( request == null ) { + return null; + } + + UUID walletId = null; + UUID memberId = null; + UUID voucherId = null; + + walletId = request.walletId(); + memberId = request.memberId(); + voucherId = request.voucherId(); + + ServiceCreateWalletRequest serviceCreateWalletRequest = new ServiceCreateWalletRequest( walletId, memberId, voucherId ); + + return serviceCreateWalletRequest; + } +} diff --git a/src/main/java/org/prgrms/kdt/CommendLineRunner.java b/src/main/java/org/prgrms/kdt/CommendLineRunner.java index bfed8d1145..f5c7fbd2f0 100644 --- a/src/main/java/org/prgrms/kdt/CommendLineRunner.java +++ b/src/main/java/org/prgrms/kdt/CommendLineRunner.java @@ -27,13 +27,12 @@ public CommendLineRunner(ViewManager viewManager, Console console) { @Override public void run(String... args) { - boolean isRunning = true; - while (isRunning) { + while (true) { try { console.printMenu(); int getUserMenu = Integer.parseInt(console.getUserMenu()); Menu menu = Menu.getMenu(getUserMenu); - isRunning = menu.isNotExit(); + if (menu.isExit()) break; executeAction(menu); } catch (InvalidInputException e) { diff --git a/src/main/java/org/prgrms/kdt/HomeController.java b/src/main/java/org/prgrms/kdt/HomeController.java new file mode 100644 index 0000000000..d5deb98364 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/HomeController.java @@ -0,0 +1,13 @@ +package org.prgrms.kdt; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class HomeController { + + @GetMapping("/") + public String home(){ + return "home"; + } +} diff --git a/src/main/java/org/prgrms/kdt/ViewManager.java b/src/main/java/org/prgrms/kdt/ViewManager.java index 039acc99bc..5b03418e94 100644 --- a/src/main/java/org/prgrms/kdt/ViewManager.java +++ b/src/main/java/org/prgrms/kdt/ViewManager.java @@ -3,13 +3,13 @@ import org.prgrms.kdt.commendLine.Console; import org.prgrms.kdt.member.controller.MemberController; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.dto.CreateMemberRequest; +import org.prgrms.kdt.member.controller.dto.ControllerCreateMemberRequest; import org.prgrms.kdt.voucher.controller.VoucherController; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.dto.CreateVoucherRequest; +import org.prgrms.kdt.voucher.controller.dto.ControllerCreateVoucherRequest; import org.prgrms.kdt.wallet.controller.WalletController; -import org.prgrms.kdt.wallet.dto.request.CreateWalletRequest; -import org.prgrms.kdt.wallet.dto.response.JoinedWalletResponses; +import org.prgrms.kdt.wallet.controller.dto.ControllerCreateWalletRequest; +import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.springframework.stereotype.Component; import java.io.IOException; @@ -32,7 +32,7 @@ public ViewManager(VoucherController voucherController, MemberController memberC public void createVoucher() throws IOException { VoucherType voucherType = VoucherType.getTypeByNum(console.getVoucherTypes()); double discountAmount = Double.parseDouble(console.getDiscountAmount()); - voucherController.create(new CreateVoucherRequest(voucherType, discountAmount)); + voucherController.create(new ControllerCreateVoucherRequest(voucherType, discountAmount)); } public void findAllVoucher() { @@ -45,7 +45,7 @@ public void findAllBlackMember() { public void createMember() throws IOException { String memberName = console.getMemberName(); - memberController.createMember(new CreateMemberRequest(memberName, MemberStatus.COMMON)); + memberController.createMember(new ControllerCreateMemberRequest(memberName, MemberStatus.COMMON)); } public void findAllMember() { @@ -55,7 +55,7 @@ public void findAllMember() { public void assignVoucher() throws IOException { UUID memberUuid = console.getMemberId(); UUID voucherUuid = console.getVoucherId(); - walletController.createWallet(new CreateWalletRequest(memberUuid, voucherUuid)); + walletController.createWallet(new ControllerCreateWalletRequest(memberUuid, voucherUuid)); } public void findVouchersByMember() throws IOException { diff --git a/src/main/java/org/prgrms/kdt/commendLine/Console.java b/src/main/java/org/prgrms/kdt/commendLine/Console.java index 20eb6cc04c..edda56c303 100644 --- a/src/main/java/org/prgrms/kdt/commendLine/Console.java +++ b/src/main/java/org/prgrms/kdt/commendLine/Console.java @@ -1,8 +1,8 @@ package org.prgrms.kdt.commendLine; -import org.prgrms.kdt.member.dto.MemberResponses; -import org.prgrms.kdt.voucher.dto.VoucherResponses; -import org.prgrms.kdt.wallet.dto.response.JoinedWalletResponses; +import org.prgrms.kdt.member.service.dto.MemberResponses; +import org.prgrms.kdt.voucher.service.dto.VoucherResponses; +import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.springframework.stereotype.Component; import java.io.BufferedReader; diff --git a/src/main/java/org/prgrms/kdt/member/controller/MemberController.java b/src/main/java/org/prgrms/kdt/member/controller/MemberController.java index 4688a63a50..0b47b80f31 100644 --- a/src/main/java/org/prgrms/kdt/member/controller/MemberController.java +++ b/src/main/java/org/prgrms/kdt/member/controller/MemberController.java @@ -1,20 +1,23 @@ package org.prgrms.kdt.member.controller; -import org.prgrms.kdt.member.dto.CreateMemberRequest; -import org.prgrms.kdt.member.dto.MemberResponses; +import org.prgrms.kdt.member.controller.dto.ControllerCreateMemberRequest; +import org.prgrms.kdt.member.controller.mapper.ControllerMemberMapper; +import org.prgrms.kdt.member.service.dto.MemberResponses; import org.prgrms.kdt.member.service.MemberService; import org.springframework.stereotype.Component; @Component public class MemberController { private final MemberService memberService; + private final ControllerMemberMapper mapper; - public MemberController(MemberService memberService) { + public MemberController(MemberService memberService, ControllerMemberMapper mapper) { this.memberService = memberService; + this.mapper = mapper; } - public void createMember(CreateMemberRequest request) { - memberService.createMember(request); + public void createMember(ControllerCreateMemberRequest request) { + memberService.createMember(mapper.controllerRequestToServiceRequest(request)); } public MemberResponses findAllMember() { diff --git a/src/main/java/org/prgrms/kdt/member/controller/dto/ControllerCreateMemberRequest.java b/src/main/java/org/prgrms/kdt/member/controller/dto/ControllerCreateMemberRequest.java new file mode 100644 index 0000000000..e2f8be8d94 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/member/controller/dto/ControllerCreateMemberRequest.java @@ -0,0 +1,6 @@ +package org.prgrms.kdt.member.controller.dto; + +import org.prgrms.kdt.member.domain.MemberStatus; + +public record ControllerCreateMemberRequest(String name, MemberStatus status) { +} diff --git a/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java b/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java new file mode 100644 index 0000000000..93f2b70275 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java @@ -0,0 +1,10 @@ +package org.prgrms.kdt.member.controller.mapper; + +import org.mapstruct.Mapper; +import org.prgrms.kdt.member.controller.dto.ControllerCreateMemberRequest; +import org.prgrms.kdt.member.service.dto.ServiceCreateMemberRequest; + +@Mapper(componentModel = "spring") +public interface ControllerMemberMapper { + ServiceCreateMemberRequest controllerRequestToServiceRequest(ControllerCreateMemberRequest request); +} diff --git a/src/main/java/org/prgrms/kdt/member/domain/Member.java b/src/main/java/org/prgrms/kdt/member/domain/Member.java index 6a3fe12c5c..37a96d4970 100644 --- a/src/main/java/org/prgrms/kdt/member/domain/Member.java +++ b/src/main/java/org/prgrms/kdt/member/domain/Member.java @@ -13,12 +13,6 @@ public Member(UUID memberId, String name, MemberStatus status) { this.status = status; } - public Member(String name, MemberStatus status) { - this.memberId = UUID.randomUUID(); - this.name = new MemberName(name); - this.status = status; - } - public UUID getMemberId() { return memberId; } diff --git a/src/main/java/org/prgrms/kdt/member/dto/CreateMemberRequest.java b/src/main/java/org/prgrms/kdt/member/dto/CreateMemberRequest.java deleted file mode 100644 index 89a5ebc823..0000000000 --- a/src/main/java/org/prgrms/kdt/member/dto/CreateMemberRequest.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.prgrms.kdt.member.dto; - -import org.prgrms.kdt.member.domain.MemberStatus; - -public record CreateMemberRequest(String name, MemberStatus status) { -} diff --git a/src/main/java/org/prgrms/kdt/member/service/MemberService.java b/src/main/java/org/prgrms/kdt/member/service/MemberService.java index 361f702b93..a8134f3287 100644 --- a/src/main/java/org/prgrms/kdt/member/service/MemberService.java +++ b/src/main/java/org/prgrms/kdt/member/service/MemberService.java @@ -3,21 +3,24 @@ import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.dao.MemberRepository; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.dto.CreateMemberRequest; -import org.prgrms.kdt.member.dto.MemberResponse; -import org.prgrms.kdt.member.dto.MemberResponses; +import org.prgrms.kdt.member.service.dto.MemberResponse; +import org.prgrms.kdt.member.service.dto.MemberResponses; +import org.prgrms.kdt.member.service.dto.ServiceCreateMemberRequest; +import org.prgrms.kdt.member.service.mapper.ServiceMemberMapper; import org.springframework.stereotype.Service; @Service public class MemberService { private final MemberRepository memberRepository; + private final ServiceMemberMapper mapper; - public MemberService(MemberRepository memberRepository) { + public MemberService(MemberRepository memberRepository, ServiceMemberMapper mapper) { this.memberRepository = memberRepository; + this.mapper = mapper; } - public MemberResponse createMember(CreateMemberRequest request) { - Member member = new Member(request.name(), request.status()); + public MemberResponse createMember(ServiceCreateMemberRequest request) { + Member member = mapper.serviceRequestToMember(request); return new MemberResponse(memberRepository.insert(member)); } diff --git a/src/main/java/org/prgrms/kdt/member/dto/MemberResponse.java b/src/main/java/org/prgrms/kdt/member/service/dto/MemberResponse.java similarity index 87% rename from src/main/java/org/prgrms/kdt/member/dto/MemberResponse.java rename to src/main/java/org/prgrms/kdt/member/service/dto/MemberResponse.java index f6f8059b5e..eea2c58892 100644 --- a/src/main/java/org/prgrms/kdt/member/dto/MemberResponse.java +++ b/src/main/java/org/prgrms/kdt/member/service/dto/MemberResponse.java @@ -1,4 +1,4 @@ -package org.prgrms.kdt.member.dto; +package org.prgrms.kdt.member.service.dto; import org.prgrms.kdt.member.domain.Member; diff --git a/src/main/java/org/prgrms/kdt/member/dto/MemberResponses.java b/src/main/java/org/prgrms/kdt/member/service/dto/MemberResponses.java similarity index 92% rename from src/main/java/org/prgrms/kdt/member/dto/MemberResponses.java rename to src/main/java/org/prgrms/kdt/member/service/dto/MemberResponses.java index 0d3ef35d01..524a21fc35 100644 --- a/src/main/java/org/prgrms/kdt/member/dto/MemberResponses.java +++ b/src/main/java/org/prgrms/kdt/member/service/dto/MemberResponses.java @@ -1,4 +1,4 @@ -package org.prgrms.kdt.member.dto; +package org.prgrms.kdt.member.service.dto; import org.prgrms.kdt.member.domain.Member; diff --git a/src/main/java/org/prgrms/kdt/member/service/dto/ServiceCreateMemberRequest.java b/src/main/java/org/prgrms/kdt/member/service/dto/ServiceCreateMemberRequest.java new file mode 100644 index 0000000000..73076a513f --- /dev/null +++ b/src/main/java/org/prgrms/kdt/member/service/dto/ServiceCreateMemberRequest.java @@ -0,0 +1,6 @@ +package org.prgrms.kdt.member.service.dto; + +import org.prgrms.kdt.member.domain.MemberStatus; + +public record ServiceCreateMemberRequest(String name, MemberStatus status) { +} diff --git a/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java b/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java new file mode 100644 index 0000000000..1f9ecc050a --- /dev/null +++ b/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java @@ -0,0 +1,18 @@ +package org.prgrms.kdt.member.service.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.prgrms.kdt.member.domain.Member; +import org.prgrms.kdt.member.service.dto.ServiceCreateMemberRequest; + +import java.util.UUID; + +@Mapper(componentModel = "spring") +public interface ServiceMemberMapper { + @Mapping(target = "memberId", expression = "java(createUUID())") + Member serviceRequestToMember(ServiceCreateMemberRequest request); + + default UUID createUUID(){ + return UUID.randomUUID(); + } +} diff --git a/src/main/java/org/prgrms/kdt/util/Menu.java b/src/main/java/org/prgrms/kdt/util/Menu.java index 9ca7ed0807..6263811aee 100644 --- a/src/main/java/org/prgrms/kdt/util/Menu.java +++ b/src/main/java/org/prgrms/kdt/util/Menu.java @@ -30,7 +30,7 @@ public static Menu getMenu(int num) { .orElseThrow(() -> new InvalidInputException("잘못된 입력입니다.")); } - public boolean isNotExit() { - return this != EXIT; + public boolean isExit() { + return this == EXIT; } } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java index 3f80b98794..dbba17b4cc 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java @@ -1,20 +1,23 @@ package org.prgrms.kdt.voucher.controller; -import org.prgrms.kdt.voucher.dto.CreateVoucherRequest; -import org.prgrms.kdt.voucher.dto.VoucherResponses; +import org.prgrms.kdt.voucher.controller.dto.ControllerCreateVoucherRequest; +import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; +import org.prgrms.kdt.voucher.service.dto.VoucherResponses; import org.prgrms.kdt.voucher.service.VoucherService; import org.springframework.stereotype.Component; @Component public class VoucherController { private final VoucherService voucherService; + private final ControllerVoucherMapper mapper; - public VoucherController(VoucherService voucherService) { + public VoucherController(VoucherService voucherService, ControllerVoucherMapper mapper) { this.voucherService = voucherService; + this.mapper = mapper; } - public void create(CreateVoucherRequest request) { - voucherService.createVoucher(request); + public void create(ControllerCreateVoucherRequest request) { + voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); } public VoucherResponses findAll() { diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index ae1da5ffa5..792b225f38 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -1,32 +1,34 @@ -package org.prgrms.kdt.voucher.controller; - -import org.prgrms.kdt.voucher.dto.CreateVoucherRequest; -import org.prgrms.kdt.voucher.dto.VoucherResponses; -import org.prgrms.kdt.voucher.service.VoucherService; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; - -@RequestMapping("/voucher") -public class VoucherViewController { - private final VoucherService voucherService; - - public VoucherViewController(VoucherService voucherService) { - this.voucherService = voucherService; - } - - @PostMapping - public String create(@RequestBody CreateVoucherRequest request) { - voucherService.createVoucher(request); - return "redirect:/voucher"; - } - - @GetMapping - public String findAll(Model model) { - VoucherResponses response = voucherService.findAll(); - model.addAttribute("vouchers", response); - return "voucher/vouchers"; - } -} +//package org.prgrms.kdt.voucher.controller; +// +//import org.prgrms.kdt.voucher.controller.dto.CreateVoucherRequest; +//import org.prgrms.kdt.voucher.service.dto.VoucherResponses; +//import org.prgrms.kdt.voucher.service.VoucherService; +//import org.springframework.stereotype.Controller; +//import org.springframework.ui.Model; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestBody; +//import org.springframework.web.bind.annotation.RequestMapping; +// +//@Controller +//@RequestMapping("/voucher") +//public class VoucherViewController { +// private final VoucherService voucherService; +// +// public VoucherViewController(VoucherService voucherService) { +// this.voucherService = voucherService; +// } +// +// @PostMapping +// public String create(@RequestBody CreateVoucherRequest request) { +// voucherService.createVoucher(request); +// return "redirect:/voucher"; +// } +// +// @GetMapping +// public String findAll(Model model) { +// VoucherResponses response = voucherService.findAll(); +// model.addAttribute("vouchers", response); +// return "voucher/vouchers"; +// } +//} diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/dto/ControllerCreateVoucherRequest.java b/src/main/java/org/prgrms/kdt/voucher/controller/dto/ControllerCreateVoucherRequest.java new file mode 100644 index 0000000000..88f2997e12 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/controller/dto/ControllerCreateVoucherRequest.java @@ -0,0 +1,6 @@ +package org.prgrms.kdt.voucher.controller.dto; + +import org.prgrms.kdt.voucher.domain.VoucherType; + +public record ControllerCreateVoucherRequest(VoucherType voucherType, double discountAmount) { +} \ No newline at end of file diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java new file mode 100644 index 0000000000..e3c2e76ccb --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java @@ -0,0 +1,10 @@ +package org.prgrms.kdt.voucher.controller.mapper; + +import org.mapstruct.Mapper; +import org.prgrms.kdt.voucher.controller.dto.ControllerCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; + +@Mapper(componentModel = "spring") +public interface ControllerVoucherMapper { + ServiceCreateVoucherRequest controllerDtoToServiceDto(ControllerCreateVoucherRequest controllerCreateVoucherRequest); +} diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java index deff41022d..376a5f4581 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java @@ -16,7 +16,7 @@ import java.util.UUID; -@Profile({"default", "test"}) +@Profile({"default", "test", "web"}) @Repository public class JdbcVoucherRepository implements VoucherRepository { private final RowMapper voucherRowMapper = (resultSet, i) -> { diff --git a/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java b/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java index 8c42e67dc4..1214c6d4c2 100644 --- a/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java +++ b/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java @@ -7,12 +7,6 @@ public class Voucher { private final VoucherType voucherType; private final DiscountPolicy discountPolicy; - public Voucher(VoucherType voucherType, DiscountPolicy discountPolicy) { - this.voucherId = UUID.randomUUID(); - this.voucherType = voucherType; - this.discountPolicy = discountPolicy; - } - public Voucher(UUID voucherId, VoucherType voucherType, DiscountPolicy discountPolicy) { this.voucherId = voucherId; this.voucherType = voucherType; diff --git a/src/main/java/org/prgrms/kdt/voucher/dto/CreateVoucherRequest.java b/src/main/java/org/prgrms/kdt/voucher/dto/CreateVoucherRequest.java deleted file mode 100644 index 008e51d78a..0000000000 --- a/src/main/java/org/prgrms/kdt/voucher/dto/CreateVoucherRequest.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.prgrms.kdt.voucher.dto; - -import org.prgrms.kdt.voucher.domain.VoucherType; - -public record CreateVoucherRequest(VoucherType voucherType, double discountAmount) { -} \ No newline at end of file diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index 23af375c33..0e8dfcacc2 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -2,25 +2,24 @@ import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.dao.VoucherRepository; -import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.dto.CreateVoucherRequest; -import org.prgrms.kdt.voucher.dto.VoucherResponse; -import org.prgrms.kdt.voucher.dto.VoucherResponses; +import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.VoucherResponse; +import org.prgrms.kdt.voucher.service.dto.VoucherResponses; +import org.prgrms.kdt.voucher.service.mapper.ServiceVoucherMapper; import org.springframework.stereotype.Service; @Service public class VoucherService { private final VoucherRepository voucherRepository; + private final ServiceVoucherMapper mapper; - public VoucherService(VoucherRepository voucherRepository) { + public VoucherService(VoucherRepository voucherRepository, ServiceVoucherMapper mapper) { this.voucherRepository = voucherRepository; + this.mapper = mapper; } - public VoucherResponse createVoucher(CreateVoucherRequest request) { - VoucherType voucherType = request.voucherType(); - double discountAmount = request.discountAmount(); - - Voucher voucher = voucherRepository.insert(new Voucher(voucherType, voucherType.createPolicy(discountAmount))); + public VoucherResponse createVoucher(ServiceCreateVoucherRequest request) { + Voucher voucher = voucherRepository.insert(mapper.serviceDtoToVoucher(request)); return new VoucherResponse(voucher); } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/dto/ServiceCreateVoucherRequest.java b/src/main/java/org/prgrms/kdt/voucher/service/dto/ServiceCreateVoucherRequest.java new file mode 100644 index 0000000000..986655eab9 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/service/dto/ServiceCreateVoucherRequest.java @@ -0,0 +1,6 @@ +package org.prgrms.kdt.voucher.service.dto; + +import org.prgrms.kdt.voucher.domain.VoucherType; + +public record ServiceCreateVoucherRequest(VoucherType voucherType, double discountAmount) { +} diff --git a/src/main/java/org/prgrms/kdt/voucher/dto/VoucherResponse.java b/src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherResponse.java similarity index 88% rename from src/main/java/org/prgrms/kdt/voucher/dto/VoucherResponse.java rename to src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherResponse.java index da90e48fc4..581e1d9f29 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dto/VoucherResponse.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherResponse.java @@ -1,4 +1,4 @@ -package org.prgrms.kdt.voucher.dto; +package org.prgrms.kdt.voucher.service.dto; import org.prgrms.kdt.voucher.domain.Voucher; diff --git a/src/main/java/org/prgrms/kdt/voucher/dto/VoucherResponses.java b/src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherResponses.java similarity index 92% rename from src/main/java/org/prgrms/kdt/voucher/dto/VoucherResponses.java rename to src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherResponses.java index 1c13d985b3..9991b94878 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dto/VoucherResponses.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherResponses.java @@ -1,4 +1,4 @@ -package org.prgrms.kdt.voucher.dto; +package org.prgrms.kdt.voucher.service.dto; import org.prgrms.kdt.voucher.domain.Voucher; diff --git a/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java new file mode 100644 index 0000000000..eae7c4c504 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java @@ -0,0 +1,26 @@ +package org.prgrms.kdt.voucher.service.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.prgrms.kdt.voucher.domain.DiscountPolicy; +import org.prgrms.kdt.voucher.domain.Voucher; +import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; + +import java.util.UUID; + +@Mapper(componentModel = "spring") +public interface ServiceVoucherMapper { + @Mapping(target = "voucherId", expression = "java(createUUID())") + @Mapping(source = "voucherType", target = "voucherType") + @Mapping(target = "discountPolicy", expression = "java(createDiscountPolicy(request.voucherType(), request.discountAmount()))") + Voucher serviceDtoToVoucher(ServiceCreateVoucherRequest request); + + default UUID createUUID(){ + return UUID.randomUUID(); + } + + default DiscountPolicy createDiscountPolicy(VoucherType voucherType, double discountAmount){ + return voucherType.createPolicy(discountAmount); + } +} diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java b/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java index 5aa4aebb09..767a5a1280 100644 --- a/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java +++ b/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java @@ -1,7 +1,8 @@ package org.prgrms.kdt.wallet.controller; -import org.prgrms.kdt.wallet.dto.request.CreateWalletRequest; -import org.prgrms.kdt.wallet.dto.response.JoinedWalletResponses; +import org.prgrms.kdt.wallet.controller.dto.ControllerCreateWalletRequest; +import org.prgrms.kdt.wallet.controller.mapper.ControllerWalletMapper; +import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.prgrms.kdt.wallet.service.WalletService; import org.springframework.stereotype.Component; @@ -10,13 +11,15 @@ @Component public class WalletController { private final WalletService walletService; + private final ControllerWalletMapper mapper; - public WalletController(WalletService walletService) { + public WalletController(WalletService walletService, ControllerWalletMapper mapper) { this.walletService = walletService; + this.mapper = mapper; } - public void createWallet(CreateWalletRequest request) { - walletService.assignVoucherToCustomer(request); + public void createWallet(ControllerCreateWalletRequest request) { + walletService.assignVoucherToCustomer(mapper.controllerRequestToServiceRequest(request)); } public JoinedWalletResponses findVouchersByMemberId(UUID memberId) { diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/dto/ControllerCreateWalletRequest.java b/src/main/java/org/prgrms/kdt/wallet/controller/dto/ControllerCreateWalletRequest.java new file mode 100644 index 0000000000..58b82552b8 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/controller/dto/ControllerCreateWalletRequest.java @@ -0,0 +1,9 @@ +package org.prgrms.kdt.wallet.controller.dto; + +import java.util.UUID; + +public record ControllerCreateWalletRequest(UUID walletId, UUID memberId, UUID voucherId) { + public ControllerCreateWalletRequest(UUID memberId, UUID voucherId) { + this(UUID.randomUUID(), memberId, voucherId); + } +} diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java b/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java new file mode 100644 index 0000000000..d6e85ff232 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java @@ -0,0 +1,10 @@ +package org.prgrms.kdt.wallet.controller.mapper; + +import org.mapstruct.Mapper; +import org.prgrms.kdt.wallet.controller.dto.ControllerCreateWalletRequest; +import org.prgrms.kdt.wallet.service.dto.ServiceCreateWalletRequest; + +@Mapper(componentModel = "spring") +public interface ControllerWalletMapper { + ServiceCreateWalletRequest controllerRequestToServiceRequest(ControllerCreateWalletRequest request); +} diff --git a/src/main/java/org/prgrms/kdt/wallet/dto/request/CreateWalletRequest.java b/src/main/java/org/prgrms/kdt/wallet/dto/request/CreateWalletRequest.java deleted file mode 100644 index 0727c5b7b9..0000000000 --- a/src/main/java/org/prgrms/kdt/wallet/dto/request/CreateWalletRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prgrms.kdt.wallet.dto.request; - -import java.util.UUID; - -public record CreateWalletRequest(UUID walletId, UUID memberId, UUID voucherId) { - public CreateWalletRequest(UUID memberId, UUID voucherId) { - this(UUID.randomUUID(), memberId, voucherId); - } -} diff --git a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java index 2a5118fb6c..cb50540ad8 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java @@ -6,9 +6,9 @@ import org.prgrms.kdt.wallet.dao.WalletRepository; import org.prgrms.kdt.wallet.domain.JoinedWallet; import org.prgrms.kdt.wallet.domain.Wallet; -import org.prgrms.kdt.wallet.dto.request.CreateWalletRequest; -import org.prgrms.kdt.wallet.dto.response.JoinedWalletResponses; -import org.prgrms.kdt.wallet.dto.response.WalletResponse; +import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; +import org.prgrms.kdt.wallet.service.dto.ServiceCreateWalletRequest; +import org.prgrms.kdt.wallet.service.dto.WalletResponse; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -28,7 +28,7 @@ public WalletService(MemberRepository memberRepository, VoucherRepository vouche } @Transactional - public WalletResponse assignVoucherToCustomer(CreateWalletRequest request) { + public WalletResponse assignVoucherToCustomer(ServiceCreateWalletRequest request) { memberRepository.findById(request.memberId()) .orElseThrow(() -> new EntityNotFoundException("존재하지 않는 바우처 입니다.")); voucherRepository.findById(request.voucherId()) diff --git a/src/main/java/org/prgrms/kdt/wallet/dto/response/JoinedWalletResponse.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponse.java similarity index 92% rename from src/main/java/org/prgrms/kdt/wallet/dto/response/JoinedWalletResponse.java rename to src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponse.java index c7c1b1be8d..bc3109ffe9 100644 --- a/src/main/java/org/prgrms/kdt/wallet/dto/response/JoinedWalletResponse.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponse.java @@ -1,4 +1,4 @@ -package org.prgrms.kdt.wallet.dto.response; +package org.prgrms.kdt.wallet.service.dto; import org.prgrms.kdt.wallet.domain.JoinedWallet; diff --git a/src/main/java/org/prgrms/kdt/wallet/dto/response/JoinedWalletResponses.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponses.java similarity index 92% rename from src/main/java/org/prgrms/kdt/wallet/dto/response/JoinedWalletResponses.java rename to src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponses.java index 15556f14b8..bf687b2580 100644 --- a/src/main/java/org/prgrms/kdt/wallet/dto/response/JoinedWalletResponses.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponses.java @@ -1,4 +1,4 @@ -package org.prgrms.kdt.wallet.dto.response; +package org.prgrms.kdt.wallet.service.dto; import org.prgrms.kdt.wallet.domain.JoinedWallet; diff --git a/src/main/java/org/prgrms/kdt/wallet/service/dto/ServiceCreateWalletRequest.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/ServiceCreateWalletRequest.java new file mode 100644 index 0000000000..6bcc130703 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/ServiceCreateWalletRequest.java @@ -0,0 +1,6 @@ +package org.prgrms.kdt.wallet.service.dto; + +import java.util.UUID; + +public record ServiceCreateWalletRequest(UUID walletId, UUID memberId, UUID voucherId) { +} diff --git a/src/main/java/org/prgrms/kdt/wallet/dto/response/WalletResponse.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/WalletResponse.java similarity index 86% rename from src/main/java/org/prgrms/kdt/wallet/dto/response/WalletResponse.java rename to src/main/java/org/prgrms/kdt/wallet/service/dto/WalletResponse.java index f1b5be5fd8..31334ad32a 100644 --- a/src/main/java/org/prgrms/kdt/wallet/dto/response/WalletResponse.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/WalletResponse.java @@ -1,4 +1,4 @@ -package org.prgrms.kdt.wallet.dto.response; +package org.prgrms.kdt.wallet.service.dto; import org.prgrms.kdt.wallet.domain.Wallet; diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html new file mode 100644 index 0000000000..52cf6e9ce7 --- /dev/null +++ b/src/main/resources/templates/home.html @@ -0,0 +1,14 @@ + + + + + + Voucher service + + +

Voucher Service

+ Show All Voucher + + \ No newline at end of file diff --git a/src/main/resources/templates/voucher/vouchers.html b/src/main/resources/templates/voucher/vouchers.html index fbb6c77502..b330472814 100644 --- a/src/main/resources/templates/voucher/vouchers.html +++ b/src/main/resources/templates/voucher/vouchers.html @@ -17,20 +17,16 @@

All Voucher

- - - - - + + + - - - - - - + + + +
IDNameEmailCreatedAtLastLoginAtVoucherIdVoucherTypeAmount
diff --git a/src/test/TestVoucher.csv b/src/test/TestVoucher.csv index 6eccc6613c..b9c41f6c03 100644 --- a/src/test/TestVoucher.csv +++ b/src/test/TestVoucher.csv @@ -1,7 +1,2 @@ -<<<<<<< HEAD -4d35aa02-3076-4bee-beba-51fdc5efc1ed,FIXED,30 -73e57be5-5ab3-4f2d-b297-62b88ad7b418,FIXED,30 -======= -53e6c2e0-a9ae-4138-8f10-939f1b7ac1e6,FIXED,30 -c1005d6d-c035-4f60-80b2-e51e8d23bf8f,FIXED,30 ->>>>>>> part.2 +5fe938d4-80d7-4dea-a698-91d485dc3fc0,FIXED,30 +a1ef94ec-cea4-4971-9409-d1dda3910251,FIXED,30 diff --git a/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java b/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java index 55534ab902..3295cd1225 100644 --- a/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java +++ b/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java @@ -4,15 +4,18 @@ import org.prgrms.kdt.member.dao.JdbcMemberRepository; import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.dto.CreateMemberRequest; -import org.prgrms.kdt.member.dto.MemberResponse; -import org.prgrms.kdt.member.dto.MemberResponses; +import org.prgrms.kdt.member.controller.dto.ControllerCreateMemberRequest; +import org.prgrms.kdt.member.service.dto.MemberResponse; +import org.prgrms.kdt.member.service.dto.MemberResponses; +import org.prgrms.kdt.member.service.dto.ServiceCreateMemberRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; +import java.util.UUID; + import static org.assertj.core.api.Assertions.assertThat; @ActiveProfiles("test") @@ -28,16 +31,16 @@ class MemberServiceTest { @BeforeEach void setup(){ - jdbcMemberRepository.insert(new Member("lala", MemberStatus.BLACK)); - jdbcMemberRepository.insert(new Member("pipo", MemberStatus.BLACK)); - jdbcMemberRepository.insert(new Member("pipo", MemberStatus.COMMON)); + jdbcMemberRepository.insert(new Member(UUID.randomUUID(), "lala", MemberStatus.BLACK)); + jdbcMemberRepository.insert(new Member(UUID.randomUUID(), "pipo", MemberStatus.BLACK)); + jdbcMemberRepository.insert(new Member(UUID.randomUUID(), "pipo", MemberStatus.COMMON)); } @Test @DisplayName("멤버를 저장하고 제대로 멤버를 반환하는지 확인") void createMember_correctRequest_correctMemberName() { //given - CreateMemberRequest request = new CreateMemberRequest("james", MemberStatus.COMMON); + ServiceCreateMemberRequest request = new ServiceCreateMemberRequest("james", MemberStatus.COMMON); //when MemberResponse result = memberService.createMember(request); diff --git a/src/test/java/org/prgrms/kdt/util/ConverterTest.java b/src/test/java/org/prgrms/kdt/util/ConverterTest.java index 095f5d22f7..8bec2f3db7 100644 --- a/src/test/java/org/prgrms/kdt/util/ConverterTest.java +++ b/src/test/java/org/prgrms/kdt/util/ConverterTest.java @@ -21,7 +21,7 @@ class ConverterTest { @DisplayName("바우처 객체를 스트링으로 변환") void voucherToString() { //given - Voucher voucher = new Voucher(VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(30.0)); + Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(30.0)); UUID uuid = voucher.getVoucherId(); //when diff --git a/src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java b/src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java index 30463da923..c3491b362e 100644 --- a/src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java @@ -91,7 +91,7 @@ void findByNonExistId(List voucherList) { @DisplayName("바우처 저장 후 성공적으로 저장 되었는지 확인") void insert() { //given - Voucher insertVoucher = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher insertVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); //when fileVoucherRepository.insert(insertVoucher); @@ -129,8 +129,8 @@ void fileWrite() { static Stream voucherSource() { List voucherList = new ArrayList<>(); - voucherList.add(new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); - voucherList.add(new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); + voucherList.add(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); + voucherList.add(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); return Stream.of(Arguments.of(voucherList)); } } \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java b/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java index a8380d4015..457410bc1a 100644 --- a/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java @@ -30,7 +30,7 @@ void setup() { @DisplayName("존재하는 바우처Id로 바우처 찾기") void findByExistId() { //given - Voucher savedVoucher = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher savedVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); memoryVoucherRepository.insert(savedVoucher); UUID existVoucherId = savedVoucher.getVoucherId(); @@ -45,7 +45,7 @@ void findByExistId() { @DisplayName("존재하지 않는 바우처Id로 바우처 찾기") void findByNonExistId() { //given - Voucher savedVoucher = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher savedVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); memoryVoucherRepository.insert(savedVoucher); UUID notExistVoucherId = UUID.randomUUID(); @@ -62,7 +62,7 @@ void findByNonExistId() { @DisplayName("바우처 저장 후 성공적으로 저장 되었는지 확인") void insert() { //given - Voucher insertVoucher = new Voucher(VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(30.0)); + Voucher insertVoucher = new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(30.0)); //when memoryVoucherRepository.insert(insertVoucher); @@ -77,8 +77,8 @@ void insert() { @DisplayName("바우처 전체 조회 테스트") void findAll() { //given - Voucher savedVoucher1 = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - Voucher savedVoucher2 = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher savedVoucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher savedVoucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); memoryVoucherRepository.insert(savedVoucher1); memoryVoucherRepository.insert(savedVoucher2); @@ -90,8 +90,8 @@ void findAll() { } static Stream voucherSource() { - Voucher voucher1 = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - Voucher voucher2 = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher voucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher voucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); return Stream.of(new Voucher[][]{{voucher1, voucher2}}); } } \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java b/src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java index 156a53b4ce..40e0bbc899 100644 --- a/src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java @@ -41,8 +41,8 @@ void saveMemoryVoucherToFile(Voucher voucher1, Voucher voucher2) { } static Stream voucherSource() { - Voucher voucher1 = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - Voucher voucher2 = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher voucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher voucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); return Stream.of(new Voucher[][]{{voucher1, voucher2}}); } } \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java index 8337bc5eeb..9c0c523c70 100644 --- a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java @@ -6,14 +6,16 @@ import org.prgrms.kdt.voucher.dao.JdbcVoucherRepository; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.dto.CreateVoucherRequest; -import org.prgrms.kdt.voucher.dto.VoucherResponse; -import org.prgrms.kdt.voucher.dto.VoucherResponses; +import org.prgrms.kdt.voucher.service.dto.VoucherResponse; +import org.prgrms.kdt.voucher.service.dto.VoucherResponses; +import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; +import java.util.UUID; + import static org.assertj.core.api.Assertions.assertThat; @@ -30,19 +32,19 @@ class VoucherServiceTest { @BeforeEach void setup() { - jdbcVoucherRepository.insert(new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); - jdbcVoucherRepository.insert(new Voucher(VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(35.0))); - jdbcVoucherRepository.insert(new Voucher(VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0))); + jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); + jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(35.0))); + jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0))); } @Test @DisplayName("바우처 생성 후 반환된 바우처의 amount 확인") void createVoucher_correctRequest_correctAmount() { //given - CreateVoucherRequest createVoucherRequest = new CreateVoucherRequest(VoucherType.FIXED, 50.0); + ServiceCreateVoucherRequest request = new ServiceCreateVoucherRequest(VoucherType.FIXED, 50.0); //when - VoucherResponse voucher = voucherService.createVoucher(createVoucherRequest); + VoucherResponse voucher = voucherService.createVoucher(request); //then double resultAmount = voucher.amount(); diff --git a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java index 5622cd35f8..19539a21d9 100644 --- a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java +++ b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java @@ -13,9 +13,10 @@ import org.prgrms.kdt.wallet.dao.WalletRepository; import org.prgrms.kdt.wallet.domain.JoinedWallet; import org.prgrms.kdt.wallet.domain.Wallet; -import org.prgrms.kdt.wallet.dto.request.CreateWalletRequest; -import org.prgrms.kdt.wallet.dto.response.JoinedWalletResponses; -import org.prgrms.kdt.wallet.dto.response.WalletResponse; +import org.prgrms.kdt.wallet.controller.dto.ControllerCreateWalletRequest; +import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; +import org.prgrms.kdt.wallet.service.dto.ServiceCreateWalletRequest; +import org.prgrms.kdt.wallet.service.dto.WalletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -57,11 +58,11 @@ void assignVoucherToCustomer_correctRequest_correctWalletResponse() { //given UUID expectMemberId = UUID.fromString("9a3d5b3e-2d12-4958-9ef3-52d424485895"); Member member = memberRepository.insert(new Member(expectMemberId, "giho", MemberStatus.COMMON)); - Voucher voucher = voucherRepository.insert(new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(35.0))); - CreateWalletRequest createWalletRequest = new CreateWalletRequest(member.getMemberId(), voucher.getVoucherId()); + Voucher voucher = voucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(35.0))); + ServiceCreateWalletRequest request = new ServiceCreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when - WalletResponse resultWallet = walletService.assignVoucherToCustomer(createWalletRequest); + WalletResponse resultWallet = walletService.assignVoucherToCustomer(request); //then UUID resultMemberId = resultWallet.memberId(); @@ -72,12 +73,12 @@ void assignVoucherToCustomer_correctRequest_correctWalletResponse() { @DisplayName("존재하지 않는 바우처가 담긴 request객체를 통해 월렛 할당 시 EntityNotFoundException 확인") void assignVoucherToCustomer_incorrectRequest_EntityNotFoundException() { //given - Member member = memberRepository.insert(new Member("giho", MemberStatus.COMMON)); - Voucher voucher = new Voucher(VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - CreateWalletRequest createWalletRequest = new CreateWalletRequest(member.getMemberId(), voucher.getVoucherId()); + Member member = memberRepository.insert(new Member(UUID.randomUUID(), "giho", MemberStatus.COMMON)); + Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + ServiceCreateWalletRequest request = new ServiceCreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when - Exception exception = catchException(() -> walletService.assignVoucherToCustomer(createWalletRequest)); + Exception exception = catchException(() -> walletService.assignVoucherToCustomer(request)); //then assertThat(exception).isInstanceOf(EntityNotFoundException.class); diff --git a/src/test/test_customer_blacklist.csv b/src/test/test_customer_blacklist.csv index 4d54d3feb1..c6c0226816 100644 --- a/src/test/test_customer_blacklist.csv +++ b/src/test/test_customer_blacklist.csv @@ -1,7 +1,2 @@ -<<<<<<< HEAD -1f1862fc-a3ee-42d3-b497-4376aaed41f6,haha -11d857ad-c517-4dce-ba78-7ae6088d78c3,hoho -======= -593fddea-bf77-45cf-beed-6810a83bf61c,hoho -ed92d041-722d-4044-8522-19ee97249c09,haha ->>>>>>> part.2 +523784ab-cc5c-4623-900e-5d666fe440f8,hoho +20936656-976a-4641-ac1a-b0463c34632a,haha From 27388b32973e6f2a943a60ebb3728c792d2391f1 Mon Sep 17 00:00:00 2001 From: young970 Date: Thu, 20 Jul 2023 02:54:47 +0900 Subject: [PATCH 02/18] =?UTF-8?q?feat:=20=EB=B0=94=EC=9A=B0=EC=B2=98=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=EA=B0=92=20createAt=20=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?=EC=9B=B9=EC=9C=BC=EB=A1=9C=20=EB=8F=99=EC=9E=91=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=B0=94=EC=9A=B0=EC=B2=98=20=EC=A0=84=EC=B2=B4=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C,=20=EC=83=9D=EC=84=B1,=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 바우처 도메인 객체의 필드에 createAt 추가, VoucherViewController 바우처 전체조회, 생성, 상세조회 구현, 타임리프 구현 --- .../mapper/ControllerMemberMapperImpl.java | 2 +- .../mapper/ServiceMemberMapperImpl.java | 2 +- .../mapper/ControllerVoucherMapperImpl.java | 2 +- .../mapper/ServiceVoucherMapperImpl.java | 6 +- .../mapper/ControllerWalletMapperImpl.java | 2 +- .../org/prgrms/kdt/CommendLineRunner.java | 2 +- .../java/org/prgrms/kdt/util/Converter.java | 10 ++- .../controller/VoucherViewController.java | 84 +++++++++++-------- .../voucher/dao/JdbcVoucherRepository.java | 14 ++-- .../prgrms/kdt/voucher/domain/Voucher.java | 9 +- .../kdt/voucher/service/VoucherService.java | 8 ++ .../service/dto/VoucherDetailResponse.java | 12 +++ .../service/mapper/ServiceVoucherMapper.java | 7 +- .../kdt/wallet/dao/JdbcWalletRepository.java | 10 ++- .../templates/voucher/voucher_create.html | 35 ++++++++ .../templates/voucher/voucher_detail.html | 34 ++++++++ .../resources/templates/voucher/vouchers.html | 6 +- 17 files changed, 189 insertions(+), 56 deletions(-) create mode 100644 src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherDetailResponse.java create mode 100644 src/main/resources/templates/voucher/voucher_create.html create mode 100644 src/main/resources/templates/voucher/voucher_detail.html diff --git a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java index 3e71ef009c..00054c909c 100644 --- a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T16:34:16+0900", + date = "2023-07-19T22:27:06+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java index 605ed4bfaa..423f5c815f 100644 --- a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java @@ -9,7 +9,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T16:34:16+0900", + date = "2023-07-19T22:27:07+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java index 233d3bc3d6..3c0ae995fb 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T16:34:16+0900", + date = "2023-07-19T22:27:07+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java index 38843085cc..d72e655304 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java @@ -1,5 +1,6 @@ package org.prgrms.kdt.voucher.service.mapper; +import java.time.LocalDateTime; import java.util.UUID; import javax.annotation.processing.Generated; import org.prgrms.kdt.voucher.domain.DiscountPolicy; @@ -10,7 +11,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T16:34:16+0900", + date = "2023-07-20T02:49:14+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component @@ -28,8 +29,9 @@ public Voucher serviceDtoToVoucher(ServiceCreateVoucherRequest request) { UUID voucherId = createUUID(); DiscountPolicy discountPolicy = createDiscountPolicy(request.voucherType(), request.discountAmount()); + LocalDateTime createdAt = createLocalDateTime(); - Voucher voucher = new Voucher( voucherId, voucherType, discountPolicy ); + Voucher voucher = new Voucher( voucherId, voucherType, discountPolicy, createdAt ); return voucher; } diff --git a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java index ee1f94cfa4..eabeb733c5 100644 --- a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T17:04:24+0900", + date = "2023-07-19T22:27:07+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/java/org/prgrms/kdt/CommendLineRunner.java b/src/main/java/org/prgrms/kdt/CommendLineRunner.java index f5c7fbd2f0..5a827060d6 100644 --- a/src/main/java/org/prgrms/kdt/CommendLineRunner.java +++ b/src/main/java/org/prgrms/kdt/CommendLineRunner.java @@ -12,7 +12,7 @@ import java.io.IOException; -@Profile("!test") +@Profile("!web") @Component public class CommendLineRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(CommendLineRunner.class); diff --git a/src/main/java/org/prgrms/kdt/util/Converter.java b/src/main/java/org/prgrms/kdt/util/Converter.java index c86ae557f4..f05c11d68b 100644 --- a/src/main/java/org/prgrms/kdt/util/Converter.java +++ b/src/main/java/org/prgrms/kdt/util/Converter.java @@ -10,6 +10,8 @@ import org.prgrms.kdt.voucher.domain.VoucherType; import java.text.MessageFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.UUID; public final class Converter { @@ -36,10 +38,10 @@ public static String[] stringToArray(String originalString, String delimiter) { public static Voucher stringToVoucher(String str) { String[] stringArr = str.split(","); if (stringArr[1].equals("FIXED")) { - return new Voucher(UUID.fromString(stringArr[0]), VoucherType.FIXED, new FixedDiscountPolicy(Double.parseDouble(stringArr[2]))); + return new Voucher(UUID.fromString(stringArr[0]), VoucherType.FIXED, new FixedDiscountPolicy(Double.parseDouble(stringArr[2])), LocalDateTime.parse(stringArr[3], dateTimeFormatter())); } if (stringArr[1].equals("PERCENT")) { - return new Voucher(UUID.fromString(stringArr[0]), VoucherType.PERCENT, new PercentDiscountPolicy(Double.parseDouble(stringArr[2]))); + return new Voucher(UUID.fromString(stringArr[0]), VoucherType.PERCENT, new PercentDiscountPolicy(Double.parseDouble(stringArr[2])), LocalDateTime.parse(stringArr[3], dateTimeFormatter())); } throw new InvalidInputException(); } @@ -48,4 +50,8 @@ public static Member stringToMember(String str, MemberStatus status) { String[] stringArr = str.split(","); return new Member(UUID.fromString(stringArr[0]), stringArr[1], status); } + + private static DateTimeFormatter dateTimeFormatter() { + return DateTimeFormatter.ofPattern("YYYY-MM-DD HH:MI:SS"); + } } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index 792b225f38..bffe8e3080 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -1,34 +1,50 @@ -//package org.prgrms.kdt.voucher.controller; -// -//import org.prgrms.kdt.voucher.controller.dto.CreateVoucherRequest; -//import org.prgrms.kdt.voucher.service.dto.VoucherResponses; -//import org.prgrms.kdt.voucher.service.VoucherService; -//import org.springframework.stereotype.Controller; -//import org.springframework.ui.Model; -//import org.springframework.web.bind.annotation.GetMapping; -//import org.springframework.web.bind.annotation.PostMapping; -//import org.springframework.web.bind.annotation.RequestBody; -//import org.springframework.web.bind.annotation.RequestMapping; -// -//@Controller -//@RequestMapping("/voucher") -//public class VoucherViewController { -// private final VoucherService voucherService; -// -// public VoucherViewController(VoucherService voucherService) { -// this.voucherService = voucherService; -// } -// -// @PostMapping -// public String create(@RequestBody CreateVoucherRequest request) { -// voucherService.createVoucher(request); -// return "redirect:/voucher"; -// } -// -// @GetMapping -// public String findAll(Model model) { -// VoucherResponses response = voucherService.findAll(); -// model.addAttribute("vouchers", response); -// return "voucher/vouchers"; -// } -//} +package org.prgrms.kdt.voucher.controller; + +import org.prgrms.kdt.voucher.controller.dto.ControllerCreateVoucherRequest; +import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; +import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; +import org.prgrms.kdt.voucher.service.dto.VoucherResponses; +import org.prgrms.kdt.voucher.service.VoucherService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import java.util.UUID; + +@Controller +@RequestMapping("/voucher") +public class VoucherViewController { + private final VoucherService voucherService; + private final ControllerVoucherMapper mapper; + + public VoucherViewController(VoucherService voucherService, ControllerVoucherMapper mapper) { + this.voucherService = voucherService; + this.mapper = mapper; + } + + @GetMapping("/new") + public String save(){ + return "voucher/voucher_create"; + } + + @PostMapping("/new") + public String create(ControllerCreateVoucherRequest request) { + voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); + return "redirect:/voucher"; + } + + @GetMapping("/{id}") + public String findById(@PathVariable UUID id, Model model){ + VoucherDetailResponse response = voucherService.findById(id); + model.addAttribute("voucher", response); + return "voucher/voucher_detail"; + } + + @GetMapping + public String findAll(Model model) { + VoucherResponses response = voucherService.findAll(); + model.addAttribute("vouchers", response); + return "voucher/vouchers"; + } +} diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java index 376a5f4581..d4af8de0f0 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java @@ -11,6 +11,8 @@ import org.springframework.stereotype.Repository; import javax.sql.DataSource; +import java.sql.Timestamp; +import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -23,7 +25,8 @@ public class JdbcVoucherRepository implements VoucherRepository { UUID voucherId = UUID.fromString(resultSet.getString("id")); VoucherType voucherType = VoucherType.getTypeByStr(resultSet.getString("type")); DiscountPolicy discountPolicy = voucherType.createPolicy(resultSet.getDouble("amount")); - return new Voucher(voucherId, voucherType, discountPolicy); + LocalDateTime createdAt = resultSet.getTimestamp("created_at").toLocalDateTime(); + return new Voucher(voucherId, voucherType, discountPolicy, createdAt); }; private final JdbcTemplate jdbcTemplate; @@ -34,7 +37,7 @@ public JdbcVoucherRepository(DataSource dataSource) { @Override public Optional findById(UUID voucherId) { - String sql = "select id, type, amount from voucher WHERE id = ?"; + String sql = "select id, type, amount, created_at from voucher WHERE id = ?"; try { return Optional.ofNullable(jdbcTemplate.queryForObject(sql, voucherRowMapper, @@ -46,11 +49,12 @@ public Optional findById(UUID voucherId) { @Override public Voucher insert(Voucher voucher) { - String sql = "INSERT INTO voucher(id, type, amount) VALUES (?, ?, ?)"; + String sql = "INSERT INTO voucher(id, type, amount, created_at) VALUES (?, ?, ?, ?)"; int update = jdbcTemplate.update(sql, voucher.getVoucherId().toString(), voucher.getVoucherType().getDescripton(), - voucher.getDiscountPolicy().getAmount()); + voucher.getDiscountPolicy().getAmount(), + Timestamp.valueOf(voucher.getCreatedAt())); if (update != 1) { throw new NotUpdateException("insert가 제대로 이루어지지 않았습니다."); } @@ -59,6 +63,6 @@ public Voucher insert(Voucher voucher) { @Override public List findAll() { - return jdbcTemplate.query("select id, type, amount from voucher", voucherRowMapper); + return jdbcTemplate.query("select id, type, amount, created_at from voucher", voucherRowMapper); } } diff --git a/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java b/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java index 1214c6d4c2..7c3c5a100f 100644 --- a/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java +++ b/src/main/java/org/prgrms/kdt/voucher/domain/Voucher.java @@ -1,16 +1,19 @@ package org.prgrms.kdt.voucher.domain; +import java.time.LocalDateTime; import java.util.UUID; public class Voucher { private final UUID voucherId; private final VoucherType voucherType; private final DiscountPolicy discountPolicy; + private final LocalDateTime createdAt; - public Voucher(UUID voucherId, VoucherType voucherType, DiscountPolicy discountPolicy) { + public Voucher(UUID voucherId, VoucherType voucherType, DiscountPolicy discountPolicy, LocalDateTime createdAt) { this.voucherId = voucherId; this.voucherType = voucherType; this.discountPolicy = discountPolicy; + this.createdAt = createdAt; } public UUID getVoucherId() { @@ -25,6 +28,10 @@ public DiscountPolicy getDiscountPolicy() { return discountPolicy; } + public LocalDateTime getCreatedAt() { + return createdAt; + } + public double discount(double originPrice) { return discountPolicy.applyDiscount(originPrice); } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index 0e8dfcacc2..77b19c26a4 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -1,13 +1,17 @@ package org.prgrms.kdt.voucher.service; +import org.prgrms.kdt.exception.EntityNotFoundException; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.dao.VoucherRepository; import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponses; import org.prgrms.kdt.voucher.service.mapper.ServiceVoucherMapper; import org.springframework.stereotype.Service; +import java.util.UUID; + @Service public class VoucherService { private final VoucherRepository voucherRepository; @@ -26,4 +30,8 @@ public VoucherResponse createVoucher(ServiceCreateVoucherRequest request) { public VoucherResponses findAll() { return VoucherResponses.of(voucherRepository.findAll()); } + + public VoucherDetailResponse findById(UUID id) { + return new VoucherDetailResponse(voucherRepository.findById(id).orElseThrow(EntityNotFoundException::new)); + } } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherDetailResponse.java b/src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherDetailResponse.java new file mode 100644 index 0000000000..d82bd8a33f --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/service/dto/VoucherDetailResponse.java @@ -0,0 +1,12 @@ +package org.prgrms.kdt.voucher.service.dto; + +import org.prgrms.kdt.voucher.domain.Voucher; + +import java.time.LocalDateTime; +import java.util.UUID; + +public record VoucherDetailResponse(UUID voucherId, String voucherType, double amount, LocalDateTime createdAt) { + public VoucherDetailResponse(Voucher voucher) { + this(voucher.getVoucherId(), voucher.getVoucherType().getDescripton(), voucher.getDiscountPolicy().getAmount(), voucher.getCreatedAt()); + } +} diff --git a/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java index eae7c4c504..873f589ad6 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java @@ -7,13 +7,14 @@ import org.prgrms.kdt.voucher.domain.VoucherType; import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import java.time.LocalDateTime; import java.util.UUID; @Mapper(componentModel = "spring") public interface ServiceVoucherMapper { @Mapping(target = "voucherId", expression = "java(createUUID())") - @Mapping(source = "voucherType", target = "voucherType") @Mapping(target = "discountPolicy", expression = "java(createDiscountPolicy(request.voucherType(), request.discountAmount()))") + @Mapping(target = "createdAt", expression = "java(createLocalDateTime())") Voucher serviceDtoToVoucher(ServiceCreateVoucherRequest request); default UUID createUUID(){ @@ -23,4 +24,8 @@ default UUID createUUID(){ default DiscountPolicy createDiscountPolicy(VoucherType voucherType, double discountAmount){ return voucherType.createPolicy(discountAmount); } + + default LocalDateTime createLocalDateTime(){ + return LocalDateTime.now(); + } } diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletRepository.java index 12494d1e25..2a17fc8436 100644 --- a/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletRepository.java +++ b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletRepository.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Repository; import javax.sql.DataSource; +import java.time.LocalDateTime; import java.util.List; import java.util.UUID; @@ -28,9 +29,10 @@ public class JdbcWalletRepository implements WalletRepository { UUID voucherId = UUID.fromString(resultSet.getString("W.voucher_id")); VoucherType voucherType = VoucherType.getTypeByStr(resultSet.getString("V.type")); DiscountPolicy discountPolicy = voucherType.createPolicy(resultSet.getDouble("V.amount")); + LocalDateTime createdAt = resultSet.getTimestamp("V.created_at").toLocalDateTime(); Member member = new Member(memberId, memberName, memberStatus); - Voucher voucher = new Voucher(voucherId, voucherType, discountPolicy); + Voucher voucher = new Voucher(voucherId, voucherType, discountPolicy, createdAt); return new JoinedWallet(walletId, member, voucher); }; @@ -54,7 +56,7 @@ public Wallet insert(Wallet wallet) { @Override public List findWithMemeberAndVoucherByMemberId(UUID memberId) { - String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount from wallet W " + + String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount, V.created_at from wallet W " + "INNER JOIN member M ON W.member_id = M.id " + "INNER JOIN voucher V ON W.voucher_id = V.id " + "WHERE W.member_id = ?"; @@ -63,7 +65,7 @@ public List findWithMemeberAndVoucherByMemberId(UUID memberId) { @Override public List findWithMemeberAndVoucherByVoucherId(UUID voucherId) { - String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount from wallet W " + + String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount, V.created_at from wallet W " + "INNER JOIN member M ON W.member_id = M.id " + "INNER JOIN voucher V ON W.voucher_id = V.id " + "WHERE W.voucher_id = ?"; @@ -78,7 +80,7 @@ public void deleteById(UUID walletId) { @Override public List findWithMemeberAndVoucherAll() { - String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount from wallet W " + + String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount, V.created_at from wallet W " + "INNER JOIN member M ON W.member_id = M.id " + "INNER JOIN voucher V ON W.voucher_id = V.id"; return jdbcTemplate.query(sql, joinedWalletRowMapper); diff --git a/src/main/resources/templates/voucher/voucher_create.html b/src/main/resources/templates/voucher/voucher_create.html new file mode 100644 index 0000000000..deb8f639cd --- /dev/null +++ b/src/main/resources/templates/voucher/voucher_create.html @@ -0,0 +1,35 @@ + + + + + + + + Title + + +
+

New Voucher

+ +
+
+
+ +
+
+ + + +
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/voucher/voucher_detail.html b/src/main/resources/templates/voucher/voucher_detail.html new file mode 100644 index 0000000000..5f6d977025 --- /dev/null +++ b/src/main/resources/templates/voucher/voucher_detail.html @@ -0,0 +1,34 @@ + + + + + + + + Voucher Detail + + +

Voucher Detail Page

+Show All Voucher + + + + + + + + + + + + + + + + + +
VoucherIdVoucherTypeAmountCreatedAt
+ + \ No newline at end of file diff --git a/src/main/resources/templates/voucher/vouchers.html b/src/main/resources/templates/voucher/vouchers.html index b330472814..5630661de0 100644 --- a/src/main/resources/templates/voucher/vouchers.html +++ b/src/main/resources/templates/voucher/vouchers.html @@ -12,7 +12,7 @@

All Voucher

@@ -24,7 +24,9 @@

All Voucher

- + From 1d3e520d34c85ef862c491b49d5a2de19c8b2685 Mon Sep 17 00:00:00 2001 From: young970 Date: Thu, 20 Jul 2023 17:04:12 +0900 Subject: [PATCH 03/18] =?UTF-8?q?feat:=20=EC=83=81=EC=84=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=97=90=EC=84=9C=20=ED=95=B4=EB=8B=B9=20?= =?UTF-8?q?=EB=B0=94=EC=9A=B0=EC=B2=98=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/prgrms/kdt/CommendLineRunner.java | 2 +- .../kdt/member/dao/BlackListRepository.java | 36 ----- .../prgrms/kdt/member/dao/MemberLoader.java | 51 ------- .../java/org/prgrms/kdt/util/Converter.java | 57 -------- .../controller/VoucherViewController.java | 11 +- .../voucher/dao/FileVoucherRepository.java | 45 ------ .../voucher/dao/JdbcVoucherRepository.java | 9 ++ .../voucher/dao/MemoryVoucherRepository.java | 5 + .../prgrms/kdt/voucher/dao/VoucherLoader.java | 49 ------- .../kdt/voucher/dao/VoucherRepository.java | 2 + .../kdt/voucher/service/VoucherService.java | 6 + .../templates/voucher/voucher_detail.html | 5 +- src/test/TestVoucher.csv | 4 +- .../member/dao/BlackListRepositoryTest.java | 70 --------- .../kdt/member/dao/MemberLoaderTest.java | 50 ------- .../org/prgrms/kdt/util/ConverterTest.java | 92 ------------ .../dao/FileVoucherRepositoryTest.java | 136 ------------------ .../dao/MemoryVoucherRepositoryTest.java | 15 +- .../kdt/voucher/dao/VoucherLoaderTest.java | 48 ------- .../voucher/service/VoucherServiceTest.java | 7 +- .../kdt/wallet/service/WalletServiceTest.java | 9 +- src/test/test_customer_blacklist.csv | 4 +- 22 files changed, 56 insertions(+), 657 deletions(-) delete mode 100644 src/main/java/org/prgrms/kdt/member/dao/BlackListRepository.java delete mode 100644 src/main/java/org/prgrms/kdt/member/dao/MemberLoader.java delete mode 100644 src/main/java/org/prgrms/kdt/util/Converter.java delete mode 100644 src/main/java/org/prgrms/kdt/voucher/dao/FileVoucherRepository.java delete mode 100644 src/main/java/org/prgrms/kdt/voucher/dao/VoucherLoader.java delete mode 100644 src/test/java/org/prgrms/kdt/member/dao/BlackListRepositoryTest.java delete mode 100644 src/test/java/org/prgrms/kdt/member/dao/MemberLoaderTest.java delete mode 100644 src/test/java/org/prgrms/kdt/util/ConverterTest.java delete mode 100644 src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java delete mode 100644 src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java diff --git a/src/main/java/org/prgrms/kdt/CommendLineRunner.java b/src/main/java/org/prgrms/kdt/CommendLineRunner.java index 5a827060d6..f5c7fbd2f0 100644 --- a/src/main/java/org/prgrms/kdt/CommendLineRunner.java +++ b/src/main/java/org/prgrms/kdt/CommendLineRunner.java @@ -12,7 +12,7 @@ import java.io.IOException; -@Profile("!web") +@Profile("!test") @Component public class CommendLineRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(CommendLineRunner.class); diff --git a/src/main/java/org/prgrms/kdt/member/dao/BlackListRepository.java b/src/main/java/org/prgrms/kdt/member/dao/BlackListRepository.java deleted file mode 100644 index 01f0955f2e..0000000000 --- a/src/main/java/org/prgrms/kdt/member/dao/BlackListRepository.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.prgrms.kdt.member.dao; - -import org.prgrms.kdt.member.domain.Member; -import org.springframework.context.annotation.Profile; -import org.springframework.stereotype.Component; - -import javax.annotation.PreDestroy; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -@Profile("file") -@Component -public class BlackListRepository { - private final Map storage; - private final MemberLoader memberLoader; - - public BlackListRepository(MemberLoader memberLoader) { - this.memberLoader = memberLoader; - this.storage = this.memberLoader.loadFileToMemoryMember(); - } - - public Member insert(Member member) { - storage.put(member.getMemberId(), member); - return member; - } - - public List findAllBlackMember() { - return List.copyOf(storage.values()); - } - - @PreDestroy - public void fileWrite() { - memberLoader.saveMemoryMemberToFile(storage); - } -} diff --git a/src/main/java/org/prgrms/kdt/member/dao/MemberLoader.java b/src/main/java/org/prgrms/kdt/member/dao/MemberLoader.java deleted file mode 100644 index 0fe7cfb7eb..0000000000 --- a/src/main/java/org/prgrms/kdt/member/dao/MemberLoader.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.prgrms.kdt.member.dao; - -import org.prgrms.kdt.exception.FileAccessException; -import org.prgrms.kdt.member.domain.Member; -import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.util.Converter; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -@Component -public class MemberLoader { - private final String filePath; - - public MemberLoader(@Value("${filePath.blackList}") String filePath) { - this.filePath = filePath; - } - - public Map loadFileToMemoryMember() { - Map Members = new ConcurrentHashMap<>(); - try { - BufferedReader reader = new BufferedReader(new FileReader(filePath)); - String line = ""; - - while ((line = reader.readLine()) != null) { - UUID curId = UUID.fromString(Converter.stringToArray(line, ",")[0]); - Members.put(curId, Converter.stringToMember(line, MemberStatus.BLACK)); - } - return Members; - } catch (IOException e) { - throw new FileAccessException("파일에 접근하다 문제가 생겼습니다.", e); - } - } - - public void saveMemoryMemberToFile(Map memoryStorage) { - try (FileWriter writer = new FileWriter(filePath, false)) { - for (Map.Entry entry : memoryStorage.entrySet()) { - writer.append(Converter.memberToString(entry.getValue()) + "\n"); - } - } catch (IOException e) { - throw new FileAccessException("파일에 접근하다 문제가 생겼습니다.", e); - } - } -} diff --git a/src/main/java/org/prgrms/kdt/util/Converter.java b/src/main/java/org/prgrms/kdt/util/Converter.java deleted file mode 100644 index f05c11d68b..0000000000 --- a/src/main/java/org/prgrms/kdt/util/Converter.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.prgrms.kdt.util; - -import org.prgrms.kdt.exception.EntityNotFoundException; -import org.prgrms.kdt.exception.InvalidInputException; -import org.prgrms.kdt.member.domain.Member; -import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.voucher.domain.FixedDiscountPolicy; -import org.prgrms.kdt.voucher.domain.PercentDiscountPolicy; -import org.prgrms.kdt.voucher.domain.Voucher; -import org.prgrms.kdt.voucher.domain.VoucherType; - -import java.text.MessageFormat; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.UUID; - -public final class Converter { - private Converter() { - throw new RuntimeException("생성 안돼!!"); - } - - public static String voucherToString(Voucher voucher) { - return MessageFormat.format("{0},{1},{2}", voucher.getVoucherId(), voucher.getVoucherType(), voucher.getDiscountPolicy().getAmount()); - } - - public static String memberToString(Member member) { - try { - return MessageFormat.format("{0},{1}", member.getMemberId(), member.getMemberName()); - } catch (NullPointerException e) { - throw new EntityNotFoundException("멤버 엔티티의 필드값에 null이 포함되어 있습니다", e); - } - } - - public static String[] stringToArray(String originalString, String delimiter) { - return originalString.split(delimiter); - } - - public static Voucher stringToVoucher(String str) { - String[] stringArr = str.split(","); - if (stringArr[1].equals("FIXED")) { - return new Voucher(UUID.fromString(stringArr[0]), VoucherType.FIXED, new FixedDiscountPolicy(Double.parseDouble(stringArr[2])), LocalDateTime.parse(stringArr[3], dateTimeFormatter())); - } - if (stringArr[1].equals("PERCENT")) { - return new Voucher(UUID.fromString(stringArr[0]), VoucherType.PERCENT, new PercentDiscountPolicy(Double.parseDouble(stringArr[2])), LocalDateTime.parse(stringArr[3], dateTimeFormatter())); - } - throw new InvalidInputException(); - } - - public static Member stringToMember(String str, MemberStatus status) { - String[] stringArr = str.split(","); - return new Member(UUID.fromString(stringArr[0]), stringArr[1], status); - } - - private static DateTimeFormatter dateTimeFormatter() { - return DateTimeFormatter.ofPattern("YYYY-MM-DD HH:MI:SS"); - } -} diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index bffe8e3080..b690cfae68 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -7,7 +7,6 @@ import org.prgrms.kdt.voucher.service.VoucherService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import java.util.UUID; @@ -24,7 +23,7 @@ public VoucherViewController(VoucherService voucherService, ControllerVoucherMap } @GetMapping("/new") - public String save(){ + public String save() { return "voucher/voucher_create"; } @@ -35,7 +34,7 @@ public String create(ControllerCreateVoucherRequest request) { } @GetMapping("/{id}") - public String findById(@PathVariable UUID id, Model model){ + public String findById(@PathVariable UUID id, Model model) { VoucherDetailResponse response = voucherService.findById(id); model.addAttribute("voucher", response); return "voucher/voucher_detail"; @@ -47,4 +46,10 @@ public String findAll(Model model) { model.addAttribute("vouchers", response); return "voucher/vouchers"; } + + @PostMapping("/{id}") + public String deleteById(@PathVariable UUID id) { + voucherService.deleteById(id); + return "redirect:/voucher"; + } } diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/FileVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/FileVoucherRepository.java deleted file mode 100644 index 77d69144e5..0000000000 --- a/src/main/java/org/prgrms/kdt/voucher/dao/FileVoucherRepository.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.prgrms.kdt.voucher.dao; - -import org.prgrms.kdt.voucher.domain.Voucher; -import org.springframework.context.annotation.Profile; -import org.springframework.stereotype.Component; - -import javax.annotation.PreDestroy; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.UUID; - - -@Profile("file") -@Component -public class FileVoucherRepository implements VoucherRepository { - private final Map storage; - private final VoucherLoader voucherLoader; - - public FileVoucherRepository(VoucherLoader voucherLoader) { - this.voucherLoader = voucherLoader; - this.storage = this.voucherLoader.loadFileToMemoryVoucher(); - } - - @Override - public Optional findById(UUID voucherId) { - return Optional.ofNullable(storage.get(voucherId)); - } - - @Override - public Voucher insert(Voucher voucher) { - storage.put(voucher.getVoucherId(), voucher); - return voucher; - } - - @Override - public List findAll() { - return List.copyOf(storage.values()); - } - - @PreDestroy - public void fileWrite() { - voucherLoader.saveMemoryVoucherToFile(storage); - } -} diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java index d4af8de0f0..a5ec8eb8e0 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java @@ -65,4 +65,13 @@ public Voucher insert(Voucher voucher) { public List findAll() { return jdbcTemplate.query("select id, type, amount, created_at from voucher", voucherRowMapper); } + + @Override + public void deleteById(UUID id) { + String sql = "delete from voucher where id = ?"; + int update = jdbcTemplate.update(sql, id.toString()); + if (update != 1) { + throw new NotUpdateException("delete가 제대로 이루어지지 않았습니다."); + } + } } diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java index b24c0ee239..5832a87748 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java @@ -30,4 +30,9 @@ public Voucher insert(Voucher voucher) { public List findAll() { return List.copyOf(storage.values()); } + + @Override + public void deleteById(UUID id) { + storage.remove(id); + } } diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherLoader.java b/src/main/java/org/prgrms/kdt/voucher/dao/VoucherLoader.java deleted file mode 100644 index 71157483ad..0000000000 --- a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherLoader.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.prgrms.kdt.voucher.dao; - -import org.prgrms.kdt.exception.FileAccessException; -import org.prgrms.kdt.util.Converter; -import org.prgrms.kdt.voucher.domain.Voucher; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; - -@Component -public class VoucherLoader { - private final String filePath; - - public VoucherLoader(@Value("${filePath.voucher}") String filePath) { - this.filePath = filePath; - } - - public Map loadFileToMemoryVoucher() { - Map vouchers = new ConcurrentHashMap<>(); - try { - BufferedReader reader = new BufferedReader(new FileReader(filePath)); - String line = ""; - - while ((line = reader.readLine()) != null) { - UUID curId = UUID.fromString(Converter.stringToArray(line, ",")[0]); - vouchers.put(curId, Converter.stringToVoucher(line)); - } - return vouchers; - } catch (IOException e) { - throw new FileAccessException("파일에 접근하다 문제가 생겼습니다.", e); - } - } - - public void saveMemoryVoucherToFile(Map memoryStorage) { - try (FileWriter writer = new FileWriter(filePath, false)) { - for (Map.Entry entry : memoryStorage.entrySet()) { - writer.append(Converter.voucherToString(entry.getValue()) + "\n"); - } - } catch (IOException e) { - throw new FileAccessException("파일에 접근하다 문제가 생겼습니다.", e); - } - } -} \ No newline at end of file diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java index d799ca8075..002efc0083 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java @@ -12,4 +12,6 @@ public interface VoucherRepository { Voucher insert(Voucher voucher); List findAll(); + + void deleteById(UUID id); } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index 77b19c26a4..9357593b87 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -9,6 +9,7 @@ import org.prgrms.kdt.voucher.service.dto.VoucherResponses; import org.prgrms.kdt.voucher.service.mapper.ServiceVoucherMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.UUID; @@ -34,4 +35,9 @@ public VoucherResponses findAll() { public VoucherDetailResponse findById(UUID id) { return new VoucherDetailResponse(voucherRepository.findById(id).orElseThrow(EntityNotFoundException::new)); } + + @Transactional + public void deleteById(UUID id) { + voucherRepository.deleteById(id); + } } diff --git a/src/main/resources/templates/voucher/voucher_detail.html b/src/main/resources/templates/voucher/voucher_detail.html index 5f6d977025..da7dc37e72 100644 --- a/src/main/resources/templates/voucher/voucher_detail.html +++ b/src/main/resources/templates/voucher/voucher_detail.html @@ -1,5 +1,5 @@ - + Voucher Detail Page
+ +
+
+ +
\ No newline at end of file diff --git a/src/test/TestVoucher.csv b/src/test/TestVoucher.csv index b9c41f6c03..a96de084b8 100644 --- a/src/test/TestVoucher.csv +++ b/src/test/TestVoucher.csv @@ -1,2 +1,2 @@ -5fe938d4-80d7-4dea-a698-91d485dc3fc0,FIXED,30 -a1ef94ec-cea4-4971-9409-d1dda3910251,FIXED,30 +509db53e-09f7-426f-8ab3-0bdfed78e1df,FIXED,30 +4b97574b-0350-4b1f-93c0-6577f38433d2,FIXED,30 diff --git a/src/test/java/org/prgrms/kdt/member/dao/BlackListRepositoryTest.java b/src/test/java/org/prgrms/kdt/member/dao/BlackListRepositoryTest.java deleted file mode 100644 index da82ef0bbf..0000000000 --- a/src/test/java/org/prgrms/kdt/member/dao/BlackListRepositoryTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.prgrms.kdt.member.dao; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.mockito.BDDMockito; -import org.mockito.Mockito; -import org.prgrms.kdt.member.domain.Member; -import org.prgrms.kdt.member.domain.MemberStatus; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.List; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.mockito.ArgumentMatchers.anyMap; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - - -class BlackListRepositoryTest { - static MemberLoader mockMemberLoader; - - @Configuration - static class TestConfig { - - @Bean - BlackListRepository blackListRepository() { - mockMemberLoader = Mockito.mock(MemberLoader.class); - return new BlackListRepository(mockMemberLoader); - } - } - - BlackListRepository blackListRepository; - AnnotationConfigApplicationContext testContext; - - @BeforeEach - void setup() { - testContext = new AnnotationConfigApplicationContext(TestConfig.class); - blackListRepository = testContext.getBean(BlackListRepository.class); - BDDMockito.given(mockMemberLoader.loadFileToMemoryMember()).willReturn(new ConcurrentHashMap<>()); - blackListRepository.insert(new Member(UUID.randomUUID(), "yaho", MemberStatus.BLACK)); - blackListRepository.insert(new Member(UUID.randomUUID(), "abc", MemberStatus.BLACK)); - blackListRepository.insert(new Member(UUID.randomUUID(), "defg", MemberStatus.BLACK)); - } - - @Test - @DisplayName("블랙리스트 맴버 전체 조회") - void findAllBlackMember() { - //when - List foundBlackMembers = blackListRepository.findAllBlackMember(); - - //then - assertThat(foundBlackMembers.size(), is(3)); - } - - @Test - @DisplayName("BlackListRepository의 빈이 소멸할 때 fileWrite를 호출하는지 확인") - void fileWrite() { - //when - testContext.close(); - - //then - verify(mockMemberLoader, times(1)).saveMemoryMemberToFile(anyMap()); - } -} \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/member/dao/MemberLoaderTest.java b/src/test/java/org/prgrms/kdt/member/dao/MemberLoaderTest.java deleted file mode 100644 index 615f7b3569..0000000000 --- a/src/test/java/org/prgrms/kdt/member/dao/MemberLoaderTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.prgrms.kdt.member.dao; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; -import org.prgrms.kdt.member.domain.Member; -import org.prgrms.kdt.member.domain.MemberStatus; - -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Stream; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -class MemberLoaderTest { - MemberLoader memberLoader; - - @BeforeEach - void setup() { - memberLoader = new MemberLoader("src/test/test_customer_blacklist.csv"); - } - - - @ParameterizedTest - @MethodSource("mamberSource") - @DisplayName("메모리의 블랙리스트들 파일에 저장 후 저장된 파일 확인") - void saveMemoryMemberToFile(Member blackMember1, Member blackMember2) { - //given - Map memberMap = new ConcurrentHashMap<>(); - memberMap.put(blackMember1.getMemberId(), blackMember1); - memberMap.put(blackMember2.getMemberId(), blackMember2); - - //when - memberLoader.saveMemoryMemberToFile(memberMap); - Map foundMembers = memberLoader.loadFileToMemoryMember(); - - //then - assertThat(foundMembers.size(), is(2)); - } - - static Stream mamberSource() { - Member member1 = new Member(UUID.randomUUID(), "haha", MemberStatus.BLACK); - Member member2 = new Member(UUID.randomUUID(), "hoho", MemberStatus.BLACK); - return Stream.of(new Member[][]{{member1, member2}}); - } - -} \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/util/ConverterTest.java b/src/test/java/org/prgrms/kdt/util/ConverterTest.java deleted file mode 100644 index 8bec2f3db7..0000000000 --- a/src/test/java/org/prgrms/kdt/util/ConverterTest.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.prgrms.kdt.util; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.prgrms.kdt.exception.EntityNotFoundException; -import org.prgrms.kdt.member.domain.Member; -import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.voucher.domain.Voucher; -import org.prgrms.kdt.voucher.domain.VoucherType; - -import java.text.MessageFormat; -import java.util.UUID; - -import static org.assertj.core.api.Assertions.catchException; -import static org.assertj.core.api.Assertions.assertThat; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -class ConverterTest { - @Test - @DisplayName("바우처 객체를 스트링으로 변환") - void voucherToString() { - //given - Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(30.0)); - UUID uuid = voucher.getVoucherId(); - - //when - String voucherString = Converter.voucherToString(voucher); - - //then - String expectString = MessageFormat.format("{0},{1},{2}", uuid, voucher.getVoucherType(), voucher.getDiscountPolicy().getAmount()); - assertThat(voucherString, is(expectString)); - } - - @Test - @DisplayName("올바른 멤버 객체를 인자로 전해주어 올바른 스트링으로 변환") - void memberToString_correctMember_correctStr() { - //given - UUID uuid = UUID.randomUUID(); - Member member = new Member(uuid, "abc", MemberStatus.BLACK); - - //when - String memberString = Converter.memberToString(member); - - //then - String expectString = MessageFormat.format("{0},{1}", uuid, member.getMemberName()); - assertThat(memberString, is(expectString)); - } - - @Test - @DisplayName("필드에 null이 포함된 올바르지 않은 멤버 객체를 인자로 전해주는 경우 EntityNotFoundException 확인") - void memberToString_incorrectMember_EntityNotFoundException() { - //given - UUID uuid = UUID.randomUUID(); - Member member = new Member(uuid, "abc", MemberStatus.BLACK); - member.setName(null); - - //when - Exception expectException = catchException(() -> Converter.memberToString(member)); - - //then - assertThat(expectException).isInstanceOf(EntityNotFoundException.class); - } - - @Test - @DisplayName("스트링을 바우처 객체로 변환") - void stringToVoucher() { - //given - String voucherString = "e6801502-7989-4b9a-ac83-9bf9dc38e0b0,PERCENT,20"; - - //when - Voucher voucher = Converter.stringToVoucher(voucherString); - - //then - String voucherId = voucher.getVoucherId().toString(); - assertThat(voucherId, is("e6801502-7989-4b9a-ac83-9bf9dc38e0b0")); - } - - @Test - @DisplayName("스트링을 멤버 객체로 변환") - void stringToMember() { - //given - String memberString = "a5b5a660-cb51-4445-9c6b-84c7a9e2131b,James"; - - //when - Member member = Converter.stringToMember(memberString, MemberStatus.BLACK); - - //then - String memberId = member.getMemberId().toString(); - assertThat(memberId, is("a5b5a660-cb51-4445-9c6b-84c7a9e2131b")); - } -} \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java b/src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java deleted file mode 100644 index c3491b362e..0000000000 --- a/src/test/java/org/prgrms/kdt/voucher/dao/FileVoucherRepositoryTest.java +++ /dev/null @@ -1,136 +0,0 @@ -package org.prgrms.kdt.voucher.dao; - -import org.hamcrest.Matchers; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.BDDMockito; -import org.mockito.Mockito; -import org.prgrms.kdt.exception.FileAccessException; -import org.prgrms.kdt.voucher.domain.Voucher; -import org.prgrms.kdt.voucher.domain.VoucherType; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Stream; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.is; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.anyMap; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -class FileVoucherRepositoryTest { - static VoucherLoader mockVoucherLoader; - - @Configuration - static class TestConfig { - - @Bean - FileVoucherRepository fileVoucherRepository() { - mockVoucherLoader = Mockito.mock(VoucherLoader.class); - return new FileVoucherRepository(mockVoucherLoader); - } - } - - FileVoucherRepository fileVoucherRepository; - AnnotationConfigApplicationContext testContext; - - @BeforeEach - void setup() { - testContext = new AnnotationConfigApplicationContext(TestConfig.class); - fileVoucherRepository = testContext.getBean(FileVoucherRepository.class); - BDDMockito.given(mockVoucherLoader.loadFileToMemoryVoucher()).willReturn(new ConcurrentHashMap<>()); - } - - @ParameterizedTest - @MethodSource("voucherSource") - @DisplayName("존재하는 바우처Id로 바우처 찾기") - void findByExistId(List voucherList) { - //given - voucherList.forEach(v -> fileVoucherRepository.insert(v)); - UUID existVoucherId = voucherList.get(0).getVoucherId(); - - //when - Optional foundVoucher = fileVoucherRepository.findById(existVoucherId); - - //then - UUID foundVoucherId = foundVoucher.get().getVoucherId(); - assertThat(foundVoucherId, Matchers.is(existVoucherId)); - } - - @ParameterizedTest - @MethodSource("voucherSource") - @DisplayName("존재하지 않는 바우처Id로 바우처 찾기") - void findByNonExistId(List voucherList) { - //given - voucherList.forEach(v -> fileVoucherRepository.insert(v)); - UUID notExistVoucherId = UUID.randomUUID(); - - //when - Optional foundVoucher = fileVoucherRepository.findById(notExistVoucherId); - - //then - assertThrows(FileAccessException.class, () -> { - foundVoucher.orElseThrow(FileAccessException::new); - }); - } - - @Test - @DisplayName("바우처 저장 후 성공적으로 저장 되었는지 확인") - void insert() { - //given - Voucher insertVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - - //when - fileVoucherRepository.insert(insertVoucher); - - //then - Optional foundVoucher = fileVoucherRepository.findById(insertVoucher.getVoucherId()); - assertThat(foundVoucher.get(), is(insertVoucher)); - } - - @ParameterizedTest - @MethodSource("voucherSource") - @DisplayName("바우처 전체 조회 테스트") - void findAll(List voucherList) { - //given - voucherList.forEach(v -> fileVoucherRepository.insert(v)); - - //when - List foundVoucherList = fileVoucherRepository.findAll(); - - //then - Voucher insertedVoucher1 = voucherList.get(0); - Voucher insertedvoucher2 = voucherList.get(1); - assertThat(foundVoucherList, containsInAnyOrder(insertedVoucher1, insertedvoucher2)); - } - - @Test - @DisplayName("FileVoucherRepository의 빈이 소멸할 때 fileWrite를 호출하는지 확인") - void fileWrite() { - //when - testContext.close(); - - //then - verify(mockVoucherLoader, times(1)).saveMemoryVoucherToFile(anyMap()); - } - - static Stream voucherSource() { - List voucherList = new ArrayList<>(); - voucherList.add(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); - voucherList.add(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); - return Stream.of(Arguments.of(voucherList)); - } -} \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java b/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java index 457410bc1a..35d53a2363 100644 --- a/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java @@ -9,6 +9,7 @@ import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; +import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -30,7 +31,7 @@ void setup() { @DisplayName("존재하는 바우처Id로 바우처 찾기") void findByExistId() { //given - Voucher savedVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher savedVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); memoryVoucherRepository.insert(savedVoucher); UUID existVoucherId = savedVoucher.getVoucherId(); @@ -45,7 +46,7 @@ void findByExistId() { @DisplayName("존재하지 않는 바우처Id로 바우처 찾기") void findByNonExistId() { //given - Voucher savedVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher savedVoucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); memoryVoucherRepository.insert(savedVoucher); UUID notExistVoucherId = UUID.randomUUID(); @@ -62,7 +63,7 @@ void findByNonExistId() { @DisplayName("바우처 저장 후 성공적으로 저장 되었는지 확인") void insert() { //given - Voucher insertVoucher = new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(30.0)); + Voucher insertVoucher = new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(30.0), LocalDateTime.now()); //when memoryVoucherRepository.insert(insertVoucher); @@ -77,8 +78,8 @@ void insert() { @DisplayName("바우처 전체 조회 테스트") void findAll() { //given - Voucher savedVoucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - Voucher savedVoucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher savedVoucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); + Voucher savedVoucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); memoryVoucherRepository.insert(savedVoucher1); memoryVoucherRepository.insert(savedVoucher2); @@ -90,8 +91,8 @@ void findAll() { } static Stream voucherSource() { - Voucher voucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - Voucher voucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher voucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); + Voucher voucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); return Stream.of(new Voucher[][]{{voucher1, voucher2}}); } } \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java b/src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java deleted file mode 100644 index 40e0bbc899..0000000000 --- a/src/test/java/org/prgrms/kdt/voucher/dao/VoucherLoaderTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.prgrms.kdt.voucher.dao; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; -import org.prgrms.kdt.voucher.domain.Voucher; -import org.prgrms.kdt.voucher.domain.VoucherType; - -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Stream; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -class VoucherLoaderTest { - VoucherLoader voucherLoader; - - @BeforeEach - void setup() { - voucherLoader = new VoucherLoader("src/test/TestVoucher.csv"); - } - - @ParameterizedTest - @MethodSource("voucherSource") - @DisplayName("메모리의 바우처들 파일에 저장 후 저장된 파일 확인") - void saveMemoryVoucherToFile(Voucher voucher1, Voucher voucher2) { - //given - Map voucherMap = new ConcurrentHashMap<>(); - voucherMap.put(voucher1.getVoucherId(), voucher1); - voucherMap.put(voucher2.getVoucherId(), voucher2); - - //when - voucherLoader.saveMemoryVoucherToFile(voucherMap); - Map foundVouchers = voucherLoader.loadFileToMemoryVoucher(); - - //then - assertThat(foundVouchers.size(), is(2)); - } - - static Stream voucherSource() { - Voucher voucher1 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - Voucher voucher2 = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - return Stream.of(new Voucher[][]{{voucher1, voucher2}}); - } -} \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java index 9c0c523c70..857dc4c688 100644 --- a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java @@ -14,6 +14,7 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @@ -32,9 +33,9 @@ class VoucherServiceTest { @BeforeEach void setup() { - jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0))); - jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(35.0))); - jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0))); + jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now())); + jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(35.0), LocalDateTime.now())); + jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0), LocalDateTime.now())); } @Test diff --git a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java index 19539a21d9..65ec6042d4 100644 --- a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java +++ b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java @@ -22,6 +22,7 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.List; import java.util.UUID; @@ -58,7 +59,7 @@ void assignVoucherToCustomer_correctRequest_correctWalletResponse() { //given UUID expectMemberId = UUID.fromString("9a3d5b3e-2d12-4958-9ef3-52d424485895"); Member member = memberRepository.insert(new Member(expectMemberId, "giho", MemberStatus.COMMON)); - Voucher voucher = voucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(35.0))); + Voucher voucher = voucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(35.0), LocalDateTime.now())); ServiceCreateWalletRequest request = new ServiceCreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when @@ -74,7 +75,7 @@ void assignVoucherToCustomer_correctRequest_correctWalletResponse() { void assignVoucherToCustomer_incorrectRequest_EntityNotFoundException() { //given Member member = memberRepository.insert(new Member(UUID.randomUUID(), "giho", MemberStatus.COMMON)); - Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); + Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); ServiceCreateWalletRequest request = new ServiceCreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when @@ -135,8 +136,8 @@ void setupInsertWallets() { UUID voucherId1 = UUID.fromString("3c3dda5e-eb09-4b21-b57f-d9ef54bacd29"); UUID voucherId2 = UUID.fromString("5c3aba5e-eb09-4b21-b57f-d9ef54bacd29"); - Voucher voucher1 = new Voucher(voucherId1, VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0)); - Voucher voucher2 = new Voucher(voucherId2, VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0)); + Voucher voucher1 = new Voucher(voucherId1, VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); + Voucher voucher2 = new Voucher(voucherId2, VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0), LocalDateTime.now()); UUID walletId1 = UUID.fromString("f7c23946-7174-4f56-b464-3ed1fa5224d7"); UUID walletId2 = UUID.fromString("c9c23946-7174-4f56-b464-3ed1fa5224d7"); diff --git a/src/test/test_customer_blacklist.csv b/src/test/test_customer_blacklist.csv index c6c0226816..cb2de76179 100644 --- a/src/test/test_customer_blacklist.csv +++ b/src/test/test_customer_blacklist.csv @@ -1,2 +1,2 @@ -523784ab-cc5c-4623-900e-5d666fe440f8,hoho -20936656-976a-4641-ac1a-b0463c34632a,haha +b7357d2e-ba9f-4e01-ac92-4c5637794d78,haha +0b9a9cb2-512d-4262-abdd-63a5038b8a53,hoho From 271cd640bf98f163966e31c797e38757ea5c97a2 Mon Sep 17 00:00:00 2001 From: young970 Date: Thu, 20 Jul 2023 18:52:36 +0900 Subject: [PATCH 04/18] =?UTF-8?q?feat:=20voucher=20=EC=A0=84=EC=B2=B4=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C,=20=EB=B0=94=EC=9A=B0=EC=B2=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80,=20=EB=B0=94=EC=9A=B0=EC=B2=98=20=EC=82=AD=EC=A0=9C,?= =?UTF-8?q?=20=EC=95=84=EC=9D=B4=EB=94=94=EB=A1=9C=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?api=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ControllerMemberMapperImpl.java | 2 +- .../mapper/ServiceMemberMapperImpl.java | 2 +- .../mapper/ControllerVoucherMapperImpl.java | 2 +- .../mapper/ServiceVoucherMapperImpl.java | 2 +- .../mapper/ControllerWalletMapperImpl.java | 2 +- .../org/prgrms/kdt/CommendLineRunner.java | 2 +- .../controller/VoucherApiController.java | 48 +++++++++++++++++++ .../controller/VoucherViewController.java | 2 +- src/main/resources/templates/home.html | 2 +- .../templates/voucher/voucher_create.html | 4 +- .../templates/voucher/voucher_detail.html | 4 +- .../resources/templates/voucher/vouchers.html | 4 +- 12 files changed, 62 insertions(+), 14 deletions(-) create mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java diff --git a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java index 00054c909c..e32f100e14 100644 --- a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T22:27:06+0900", + date = "2023-07-20T18:31:51+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java index 423f5c815f..8c39b108ed 100644 --- a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java @@ -9,7 +9,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T22:27:07+0900", + date = "2023-07-20T18:31:51+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java index 3c0ae995fb..865b8b2316 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T22:27:07+0900", + date = "2023-07-20T18:31:49+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java index d72e655304..310004646c 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java @@ -11,7 +11,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-20T02:49:14+0900", + date = "2023-07-20T18:31:50+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java index eabeb733c5..0b1e89fb53 100644 --- a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-19T22:27:07+0900", + date = "2023-07-20T18:31:51+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/java/org/prgrms/kdt/CommendLineRunner.java b/src/main/java/org/prgrms/kdt/CommendLineRunner.java index f5c7fbd2f0..5a827060d6 100644 --- a/src/main/java/org/prgrms/kdt/CommendLineRunner.java +++ b/src/main/java/org/prgrms/kdt/CommendLineRunner.java @@ -12,7 +12,7 @@ import java.io.IOException; -@Profile("!test") +@Profile("!web") @Component public class CommendLineRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(CommendLineRunner.class); diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java new file mode 100644 index 0000000000..ed2b350ea7 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -0,0 +1,48 @@ +package org.prgrms.kdt.voucher.controller; + +import org.prgrms.kdt.voucher.controller.dto.ControllerCreateVoucherRequest; +import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; +import org.prgrms.kdt.voucher.service.VoucherService; +import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; +import org.prgrms.kdt.voucher.service.dto.VoucherResponse; +import org.prgrms.kdt.voucher.service.dto.VoucherResponses; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.UUID; + +@RequestMapping("/api/voucher") +@RestController +public class VoucherApiController { + private final VoucherService voucherService; + private final ControllerVoucherMapper mapper; + + public VoucherApiController(VoucherService voucherService, ControllerVoucherMapper mapper) { + this.voucherService = voucherService; + this.mapper = mapper; + } + + @PostMapping + public ResponseEntity create(@RequestBody ControllerCreateVoucherRequest request) { + VoucherResponse response = voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); + return ResponseEntity.ok(response); + } + + @GetMapping("/{id}") + public ResponseEntity findById(@PathVariable UUID id) { + VoucherDetailResponse response = voucherService.findById(id); + return ResponseEntity.ok(response); + } + + @GetMapping + public ResponseEntity findAll() { + VoucherResponses response = voucherService.findAll(); + return ResponseEntity.ok(response); + } + + @PostMapping("/{id}") + public ResponseEntity deleteById(@PathVariable UUID id) { + voucherService.deleteById(id); + return ResponseEntity.ok().build(); + } +} diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index b690cfae68..5124b75fd1 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -12,7 +12,7 @@ import java.util.UUID; @Controller -@RequestMapping("/voucher") +@RequestMapping("/view/voucher") public class VoucherViewController { private final VoucherService voucherService; private final ControllerVoucherMapper mapper; diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 52cf6e9ce7..e889b7c1fc 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -9,6 +9,6 @@

Voucher Service

- Show All Voucher + Show All Voucher \ No newline at end of file diff --git a/src/main/resources/templates/voucher/voucher_create.html b/src/main/resources/templates/voucher/voucher_create.html index deb8f639cd..85ad471509 100644 --- a/src/main/resources/templates/voucher/voucher_create.html +++ b/src/main/resources/templates/voucher/voucher_create.html @@ -13,10 +13,10 @@

New Voucher

-
+
diff --git a/src/main/resources/templates/voucher/voucher_detail.html b/src/main/resources/templates/voucher/voucher_detail.html index 02e7764c97..bc8e35aa62 100644 --- a/src/main/resources/templates/voucher/voucher_detail.html +++ b/src/main/resources/templates/voucher/voucher_detail.html @@ -11,7 +11,7 @@

Voucher Detail Page

-Show All Voucher +Show All Voucher @@ -30,7 +30,7 @@

Voucher Detail Page

- + diff --git a/src/main/resources/templates/voucher/vouchers.html b/src/main/resources/templates/voucher/vouchers.html index 88f6159379..3119b253b6 100644 --- a/src/main/resources/templates/voucher/vouchers.html +++ b/src/main/resources/templates/voucher/vouchers.html @@ -12,7 +12,7 @@

All Voucher

@@ -25,7 +25,7 @@

All Voucher

diff --git a/src/test/TestVoucher.csv b/src/test/TestVoucher.csv deleted file mode 100644 index a96de084b8..0000000000 --- a/src/test/TestVoucher.csv +++ /dev/null @@ -1,2 +0,0 @@ -509db53e-09f7-426f-8ab3-0bdfed78e1df,FIXED,30 -4b97574b-0350-4b1f-93c0-6577f38433d2,FIXED,30 diff --git a/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java b/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java index 3295cd1225..024c127027 100644 --- a/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java +++ b/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java @@ -4,10 +4,9 @@ import org.prgrms.kdt.member.dao.JdbcMemberRepository; import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.controller.dto.ControllerCreateMemberRequest; import org.prgrms.kdt.member.service.dto.MemberResponse; import org.prgrms.kdt.member.service.dto.MemberResponses; -import org.prgrms.kdt.member.service.dto.ServiceCreateMemberRequest; +import org.prgrms.kdt.member.service.dto.CreateMemberServiceRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -40,7 +39,7 @@ void setup(){ @DisplayName("멤버를 저장하고 제대로 멤버를 반환하는지 확인") void createMember_correctRequest_correctMemberName() { //given - ServiceCreateMemberRequest request = new ServiceCreateMemberRequest("james", MemberStatus.COMMON); + CreateMemberServiceRequest request = new CreateMemberServiceRequest("james", MemberStatus.COMMON); //when MemberResponse result = memberService.createMember(request); diff --git a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java index 857dc4c688..fb664cc987 100644 --- a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java @@ -6,6 +6,7 @@ import org.prgrms.kdt.voucher.dao.JdbcVoucherRepository; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponses; import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; @@ -33,9 +34,10 @@ class VoucherServiceTest { @BeforeEach void setup() { - jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now())); - jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(35.0), LocalDateTime.now())); - jdbcVoucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0), LocalDateTime.now())); + /** + * 테스트용 db에 바우처 3개 저장해 놓은 상태 (PERCENT 2개, FIXED 1개) + */ + setupInsertVouchers(); } @Test @@ -53,13 +55,60 @@ void createVoucher_correctRequest_correctAmount() { } @Test - @DisplayName("바우처 전체 조회하여 사이즈 검증") + @DisplayName("바우처 전체 조회하여 사이즈 확인") void findAll_correctSize() { //when VoucherResponses vouchers = voucherService.findAll(); //then - int resultsize = vouchers.vouchers().size(); - assertThat(resultsize).isEqualTo(3); + int resultSize = vouchers.vouchers().size(); + assertThat(resultSize).isEqualTo(3); + } + + @Test + @DisplayName("바우처id로 바우처 조회 후 반환받은 바우처 Id 확인") + void findById_correctId(){ + //given + UUID uuid = UUID.fromString("3c3dda5e-eb09-4b21-b57f-d9ef54bacd29"); + + //when + VoucherDetailResponse response = voucherService.findById(uuid); + + //then + assertThat(response.voucherId()).isEqualTo(uuid); + } + + @Test + @DisplayName("바우처Id로 바우처 한개 삭제 후 사이즈 확인") + void deleteById_correctId(){ + //given + UUID uuid = UUID.fromString("4267f1d3-8945-422b-88e0-dfef54756a37"); + + //when + voucherService.deleteById(uuid); + + //then + int size = jdbcVoucherRepository.findAll().size(); + assertThat(size).isEqualTo(2); + } + + @Test + @DisplayName("바우처 타입으로 조건 조회 후 사이즈 확인") + void findByType_correctType() { + //when + VoucherResponses responses = voucherService.findByType(VoucherType.PERCENT); + + //then + int resultSize = responses.vouchers().size(); + assertThat(resultSize).isEqualTo(2); + } + + private void setupInsertVouchers() { + UUID voucherId1 = UUID.fromString("3c3dda5e-eb09-4b21-b57f-d9ef54bacd29"); + UUID voucherId2 = UUID.fromString("4267f1d3-8945-422b-88e0-dfef54756a37"); + UUID voucherId3 = UUID.fromString("5f237bf7-67b5-4175-bf02-2206ad28c2e2"); + jdbcVoucherRepository.insert(new Voucher(voucherId1, VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now())); + jdbcVoucherRepository.insert(new Voucher(voucherId2, VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(35.0), LocalDateTime.now())); + jdbcVoucherRepository.insert(new Voucher(voucherId3, VoucherType.PERCENT, VoucherType.PERCENT.createPolicy(70.0), LocalDateTime.now())); } } \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java index f8083da573..73b9fec945 100644 --- a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java +++ b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java @@ -13,8 +13,8 @@ import org.prgrms.kdt.wallet.dao.WalletRepository; import org.prgrms.kdt.wallet.domain.JoinedWallet; import org.prgrms.kdt.wallet.domain.Wallet; +import org.prgrms.kdt.wallet.service.dto.CreateWalletServiceRequest; import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; -import org.prgrms.kdt.wallet.service.dto.ServiceCreateWalletRequest; import org.prgrms.kdt.wallet.service.dto.WalletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -59,7 +59,7 @@ void assignVoucherToCustomer_correctRequest_correctWalletResponse() { UUID expectMemberId = UUID.fromString("9a3d5b3e-2d12-4958-9ef3-52d424485895"); Member member = memberRepository.insert(new Member(expectMemberId, "giho", MemberStatus.COMMON)); Voucher voucher = voucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(35.0), LocalDateTime.now())); - ServiceCreateWalletRequest request = new ServiceCreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); + CreateWalletServiceRequest request = new CreateWalletServiceRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when WalletResponse resultWallet = walletService.assignVoucherToCustomer(request); @@ -75,7 +75,7 @@ void assignVoucherToCustomer_incorrectRequest_EntityNotFoundException() { //given Member member = memberRepository.insert(new Member(UUID.randomUUID(), "giho", MemberStatus.COMMON)); Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); - ServiceCreateWalletRequest request = new ServiceCreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); + CreateWalletServiceRequest request = new CreateWalletServiceRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when Exception exception = catchException(() -> walletService.assignVoucherToCustomer(request)); diff --git a/src/test/test_customer_blacklist.csv b/src/test/test_customer_blacklist.csv deleted file mode 100644 index cb2de76179..0000000000 --- a/src/test/test_customer_blacklist.csv +++ /dev/null @@ -1,2 +0,0 @@ -b7357d2e-ba9f-4e01-ac92-4c5637794d78,haha -0b9a9cb2-512d-4262-abdd-63a5038b8a53,hoho From 4bd9684202b21c6aaf6b982b3d4a32f96a5246b7 Mon Sep 17 00:00:00 2001 From: young970 Date: Sat, 22 Jul 2023 19:43:33 +0900 Subject: [PATCH 08/18] =?UTF-8?q?refactor:=20delete=20API=20HTTP=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20delete=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/prgrms/kdt/voucher/controller/VoucherApiController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java index b42a0630b3..b03b744ada 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -47,7 +47,7 @@ public ResponseEntity findAll() { return ResponseEntity.ok(response); } - @PostMapping("/{id}") + @DeleteMapping("/{id}") public ResponseEntity deleteById(@PathVariable UUID id) { voucherService.deleteById(id); return ResponseEntity.ok().build(); From 033e89803c9c7102cf6d54bfc875a7ee93b1b78b Mon Sep 17 00:00:00 2001 From: young970 Date: Wed, 26 Jul 2023 15:58:51 +0900 Subject: [PATCH 09/18] =?UTF-8?q?tmp:=20pr=20=ED=94=BC=EB=93=9C=EB=B0=B1?= =?UTF-8?q?=20=EB=B0=98=EC=98=81=20=EC=9E=84=EC=8B=9C=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/mapper/ControllerMemberMapperImpl.java | 2 +- .../kdt/member/service/mapper/ServiceMemberMapperImpl.java | 2 +- .../controller/mapper/ControllerVoucherMapperImpl.java | 2 +- .../kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java | 2 +- .../wallet/controller/mapper/ControllerWalletMapperImpl.java | 2 +- src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java | 5 ++--- .../java/org/prgrms/kdt/wallet/service/WalletService.java | 2 +- 7 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java index 3ee6760b89..ef8057be9d 100644 --- a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-22T15:51:04+0900", + date = "2023-07-26T15:46:22+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java index ca646c1914..32962d6bf6 100644 --- a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java @@ -9,7 +9,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-22T15:51:04+0900", + date = "2023-07-26T15:46:22+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java index 3127194690..9e19ce72c1 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-22T15:51:04+0900", + date = "2023-07-26T15:46:22+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java index e625bab2fb..661d376a33 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java @@ -11,7 +11,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-22T01:21:37+0900", + date = "2023-07-26T15:46:22+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java index 0b1b66f1ff..4d70c5c53f 100644 --- a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-22T15:51:04+0900", + date = "2023-07-26T15:46:22+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java index c7c495e2ff..e1580b729a 100644 --- a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java +++ b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java @@ -15,7 +15,7 @@ public class ApiExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler(EntityNotFoundException.class) public ResponseEntity handleEntityNotFoundException(EntityNotFoundException e){ - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(getErrorResponse(400, e)); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(getErrorResponse(HttpStatus.BAD_REQUEST.value(), e)); } @ExceptionHandler(InvalidInputException.class) @@ -34,7 +34,6 @@ public ResponseEntity handleInvalidDiscountException(InvalidDisco } private static ErrorResponse getErrorResponse(int status, Exception e) { - ErrorResponse errorResponse = new ErrorResponse(status, e.getMessage()); - return errorResponse; + return new ErrorResponse(status, e.getMessage()); } } diff --git a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java index 42548fdeb2..103de8f3ee 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java @@ -30,7 +30,7 @@ public WalletService(MemberRepository memberRepository, VoucherRepository vouche @Transactional public WalletResponse assignVoucherToCustomer(CreateWalletServiceRequest request) { memberRepository.findById(request.memberId()) - .orElseThrow(() -> new EntityNotFoundException("존재하지 않는 바우처 입니다.")); + .orElseThrow(() -> new EntityNotFoundException("존재하지 않는 멤버 입니다.")); voucherRepository.findById(request.voucherId()) .orElseThrow(() -> new EntityNotFoundException("존재하지 않는 바우처 입니다.")); From 2bc4f5a41752be9bf240dc6a2faac59f82937d45 Mon Sep 17 00:00:00 2001 From: young970 Date: Sat, 29 Jul 2023 22:58:49 +0900 Subject: [PATCH 10/18] =?UTF-8?q?refactor:=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=9D=91=EB=8B=B5=20=EC=83=81=EC=84=B8=ED=95=98=EA=B2=8C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80,=20=EC=98=88=EC=99=B8=20=ED=95=B8=EB=93=A4?= =?UTF-8?q?=EB=A7=81=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 + .../kdt/global/ApiExceptionHandler.java | 55 ++++++++++++++----- .../org/prgrms/kdt/global/ErrorResponse.java | 7 ++- .../controller/VoucherApiController.java | 3 +- .../dto/CreateVoucherControllerRequest.java | 5 +- .../voucher/domain/FixedDiscountPolicy.java | 2 +- .../voucher/domain/PercentDiscountPolicy.java | 2 +- 7 files changed, 56 insertions(+), 20 deletions(-) diff --git a/build.gradle b/build.gradle index 30a51b0e4b..0ee3fe4105 100644 --- a/build.gradle +++ b/build.gradle @@ -31,6 +31,8 @@ dependencies { annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final' //DB설정 runtimeOnly 'mysql:mysql-connector-java:8.0.32' + + implementation 'org.springframework.boot:spring-boot-starter-validation' } tasks.named('test') { diff --git a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java index e1580b729a..c9e8f8d9f7 100644 --- a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java +++ b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java @@ -2,38 +2,63 @@ import org.prgrms.kdt.global.exception.EntityNotFoundException; import org.prgrms.kdt.global.exception.InvalidInputException; -import org.prgrms.kdt.global.exception.NotUpdateException; import org.prgrms.kdt.voucher.exception.InvalidDiscountException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.validation.BindException; +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MissingRequestHeaderException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.servlet.NoHandlerFoundException; import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; +import javax.servlet.http.HttpServletRequest; + @RestControllerAdvice public class ApiExceptionHandler extends ResponseEntityExceptionHandler { + private static final Logger logger = LoggerFactory.getLogger(ApiExceptionHandler.class); - @ExceptionHandler(EntityNotFoundException.class) - public ResponseEntity handleEntityNotFoundException(EntityNotFoundException e){ - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(getErrorResponse(HttpStatus.BAD_REQUEST.value(), e)); + @ExceptionHandler(BindException.class) + public ResponseEntity handleBindException(HttpServletRequest request, BindException e) { + BindingResult bindingResult = e.getBindingResult(); + StringBuilder stringBuilder = new StringBuilder(); + + for (FieldError fieldError : bindingResult.getFieldErrors()) { + stringBuilder.append(fieldError.getField()).append(":"); + stringBuilder.append(fieldError.getDefaultMessage()); + stringBuilder.append(", "); + } + int statusCode = HttpStatus.BAD_REQUEST.value(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(getErrorResponse(statusCode, stringBuilder.toString(), request.getRequestURI())); } - @ExceptionHandler(InvalidInputException.class) - public ResponseEntity handleInvalidInputException(InvalidInputException e){ - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(getErrorResponse(400, e)); + @ExceptionHandler({NullPointerException.class, InvalidInputException.class, InvalidDiscountException.class, MissingRequestHeaderException.class, HttpMessageNotReadableException.class, + HttpClientErrorException.BadRequest.class, NoHandlerFoundException.class}) + public ResponseEntity handleBadRequestException(HttpServletRequest request, Exception e) { + int statusCode = HttpStatus.BAD_REQUEST.value(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(getErrorResponse(statusCode, e.getMessage(), request.getRequestURI())); } - @ExceptionHandler(NotUpdateException.class) - public ResponseEntity handleNotUpdateException(NotUpdateException e){ - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(getErrorResponse(500, e)); + @ExceptionHandler(EntityNotFoundException.class) + public ResponseEntity handleNotFoundException(HttpServletRequest request, EntityNotFoundException e){ + int statusCode = HttpStatus.NOT_FOUND.value(); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(getErrorResponse(statusCode, e.getMessage(), request.getRequestURI())); } - @ExceptionHandler(InvalidDiscountException.class) - public ResponseEntity handleInvalidDiscountException(InvalidDiscountException e){ - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(getErrorResponse(400, e)); + @ExceptionHandler(Exception.class) + public ResponseEntity handleException(HttpServletRequest request, Exception e) { + logger.error("Exception: ", e); + int statusCode = HttpStatus.INTERNAL_SERVER_ERROR.value(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(getErrorResponse(statusCode, e.getMessage(), request.getRequestURI())); } - private static ErrorResponse getErrorResponse(int status, Exception e) { - return new ErrorResponse(status, e.getMessage()); + private static ErrorResponse getErrorResponse(int status, String masesage, String requestURI) { + return new ErrorResponse(status, masesage, requestURI); } } diff --git a/src/main/java/org/prgrms/kdt/global/ErrorResponse.java b/src/main/java/org/prgrms/kdt/global/ErrorResponse.java index 920831095a..e7561417ea 100644 --- a/src/main/java/org/prgrms/kdt/global/ErrorResponse.java +++ b/src/main/java/org/prgrms/kdt/global/ErrorResponse.java @@ -1,4 +1,9 @@ package org.prgrms.kdt.global; -public record ErrorResponse(int statusCode, String message) { +import java.time.LocalDateTime; + +public record ErrorResponse(int statusCode, String detail, String instance, String time) { + public ErrorResponse(int statusCode, String detail, String instance) { + this(statusCode, detail, instance, LocalDateTime.now().toString()); + } } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java index b03b744ada..c87cf94649 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -10,6 +10,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import java.util.UUID; @RequestMapping("/api/vouchers") @@ -24,7 +25,7 @@ public VoucherApiController(VoucherService voucherService, ControllerVoucherMapp } @PostMapping - public ResponseEntity create(@RequestBody CreateVoucherControllerRequest request) { + public ResponseEntity create(@RequestBody @Valid CreateVoucherControllerRequest request) { VoucherResponse response = voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); return ResponseEntity.ok(response); } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java b/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java index 6c32ead09d..6b180794a9 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java @@ -2,5 +2,8 @@ import org.prgrms.kdt.voucher.domain.VoucherType; -public record CreateVoucherControllerRequest(VoucherType voucherType, double discountAmount) { +import javax.validation.constraints.NotNull; + +public record CreateVoucherControllerRequest(@NotNull VoucherType voucherType, + @NotNull double discountAmount) { } \ No newline at end of file diff --git a/src/main/java/org/prgrms/kdt/voucher/domain/FixedDiscountPolicy.java b/src/main/java/org/prgrms/kdt/voucher/domain/FixedDiscountPolicy.java index 031fb5f115..bb066aba94 100644 --- a/src/main/java/org/prgrms/kdt/voucher/domain/FixedDiscountPolicy.java +++ b/src/main/java/org/prgrms/kdt/voucher/domain/FixedDiscountPolicy.java @@ -11,7 +11,7 @@ public FixedDiscountPolicy(double amount) { } private void validate(double amount) { - if (amount < MIN_AMOUNT) throw new InvalidDiscountException("올바르지 않은 할인 금액입니다."); + if (amount <= MIN_AMOUNT) throw new InvalidDiscountException("올바르지 않은 할인 금액입니다."); } @Override diff --git a/src/main/java/org/prgrms/kdt/voucher/domain/PercentDiscountPolicy.java b/src/main/java/org/prgrms/kdt/voucher/domain/PercentDiscountPolicy.java index a88343b924..b1b3b43727 100644 --- a/src/main/java/org/prgrms/kdt/voucher/domain/PercentDiscountPolicy.java +++ b/src/main/java/org/prgrms/kdt/voucher/domain/PercentDiscountPolicy.java @@ -12,7 +12,7 @@ public PercentDiscountPolicy(double amount) { } private void validate(double amount) { - if (MAX_AMOUNT < amount || amount < MIN_AMOUNT) throw new InvalidDiscountException("올바르지 않은 할인 퍼센트입니다."); + if (MAX_AMOUNT < amount || amount <= MIN_AMOUNT) throw new InvalidDiscountException("올바르지 않은 할인 퍼센트입니다."); } @Override From 7a15ca8e351b3f607c1d60dde16a37aa7a4f7271 Mon Sep 17 00:00:00 2001 From: young970 Date: Sat, 29 Jul 2023 23:29:36 +0900 Subject: [PATCH 11/18] =?UTF-8?q?refactor:=20request=20DTO=EB=93=A4=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ControllerMemberMapperImpl.java | 12 ++++++------ .../mapper/ServiceMemberMapperImpl.java | 6 +++--- .../mapper/ControllerVoucherMapperImpl.java | 18 +++++++++--------- .../mapper/ServiceVoucherMapperImpl.java | 6 +++--- .../mapper/ControllerWalletMapperImpl.java | 12 ++++++------ src/main/java/org/prgrms/kdt/ViewManager.java | 12 ++++++------ .../prgrms/kdt/global/ApiExceptionHandler.java | 2 +- .../member/controller/MemberController.java | 4 ++-- ...equest.java => CreateMemberApiRequest.java} | 2 +- .../mapper/ControllerMemberMapper.java | 6 +++--- .../kdt/member/service/MemberService.java | 4 ++-- ...ceRequest.java => CreateMemberRequest.java} | 2 +- .../service/mapper/ServiceMemberMapper.java | 4 ++-- .../controller/VoucherApiController.java | 4 ++-- .../voucher/controller/VoucherController.java | 4 ++-- .../controller/VoucherViewController.java | 4 ++-- .../dto/CreateVoucherApiRequest.java | 9 +++++++++ .../dto/CreateVoucherControllerRequest.java | 9 --------- .../mapper/ControllerVoucherMapper.java | 6 +++--- .../kdt/voucher/service/VoucherService.java | 4 ++-- ...rRequest.java => CreateVoucherRequest.java} | 2 +- .../service/mapper/ServiceVoucherMapper.java | 4 ++-- .../wallet/controller/WalletController.java | 4 ++-- .../controller/dto/CreateWalletApiRequest.java | 9 +++++++++ .../dto/CreateWalletControllerRequest.java | 9 --------- .../mapper/ControllerWalletMapper.java | 6 +++--- .../kdt/wallet/service/WalletService.java | 4 ++-- .../service/dto/CreateWalletRequest.java | 6 ++++++ .../dto/CreateWalletServiceRequest.java | 6 ------ .../kdt/member/service/MemberServiceTest.java | 4 ++-- .../voucher/service/VoucherServiceTest.java | 4 ++-- .../kdt/wallet/service/WalletServiceTest.java | 6 +++--- 32 files changed, 97 insertions(+), 97 deletions(-) rename src/main/java/org/prgrms/kdt/member/controller/dto/{CreateMemberControllerRequest.java => CreateMemberApiRequest.java} (55%) rename src/main/java/org/prgrms/kdt/member/service/dto/{CreateMemberServiceRequest.java => CreateMemberRequest.java} (55%) create mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherApiRequest.java delete mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java rename src/main/java/org/prgrms/kdt/voucher/service/dto/{ServiceCreateVoucherRequest.java => CreateVoucherRequest.java} (51%) create mode 100644 src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java delete mode 100644 src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletControllerRequest.java create mode 100644 src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java delete mode 100644 src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletServiceRequest.java diff --git a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java index ef8057be9d..c3c4ecfa0f 100644 --- a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java @@ -1,21 +1,21 @@ package org.prgrms.kdt.member.controller.mapper; import javax.annotation.processing.Generated; -import org.prgrms.kdt.member.controller.dto.CreateMemberControllerRequest; +import org.prgrms.kdt.member.controller.dto.CreateMemberApiRequest; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.service.dto.CreateMemberServiceRequest; +import org.prgrms.kdt.member.service.dto.CreateMemberRequest; import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-26T15:46:22+0900", + date = "2023-07-29T23:28:37+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ControllerMemberMapperImpl implements ControllerMemberMapper { @Override - public CreateMemberServiceRequest controllerRequestToServiceRequest(CreateMemberControllerRequest request) { + public CreateMemberRequest controllerRequestToServiceRequest(CreateMemberApiRequest request) { if ( request == null ) { return null; } @@ -26,8 +26,8 @@ public CreateMemberServiceRequest controllerRequestToServiceRequest(CreateMember name = request.name(); status = request.status(); - CreateMemberServiceRequest createMemberServiceRequest = new CreateMemberServiceRequest( name, status ); + CreateMemberRequest createMemberRequest = new CreateMemberRequest( name, status ); - return createMemberServiceRequest; + return createMemberRequest; } } diff --git a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java index 32962d6bf6..26a644883d 100644 --- a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java @@ -4,19 +4,19 @@ import javax.annotation.processing.Generated; import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.service.dto.CreateMemberServiceRequest; +import org.prgrms.kdt.member.service.dto.CreateMemberRequest; import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-26T15:46:22+0900", + date = "2023-07-29T23:28:39+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ServiceMemberMapperImpl implements ServiceMemberMapper { @Override - public Member serviceRequestToMember(CreateMemberServiceRequest request) { + public Member serviceRequestToMember(CreateMemberRequest request) { if ( request == null ) { return null; } diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java index 9e19ce72c1..09343857fb 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -1,33 +1,33 @@ package org.prgrms.kdt.voucher.controller.mapper; import javax.annotation.processing.Generated; -import org.prgrms.kdt.voucher.controller.dto.CreateVoucherControllerRequest; +import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-26T15:46:22+0900", + date = "2023-07-29T23:28:38+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ControllerVoucherMapperImpl implements ControllerVoucherMapper { @Override - public ServiceCreateVoucherRequest controllerDtoToServiceDto(CreateVoucherControllerRequest createVoucherControllerRequest) { - if ( createVoucherControllerRequest == null ) { + public CreateVoucherRequest controllerDtoToServiceDto(CreateVoucherApiRequest createVoucherApiRequest) { + if ( createVoucherApiRequest == null ) { return null; } VoucherType voucherType = null; double discountAmount = 0.0d; - voucherType = createVoucherControllerRequest.voucherType(); - discountAmount = createVoucherControllerRequest.discountAmount(); + voucherType = createVoucherApiRequest.voucherType(); + discountAmount = createVoucherApiRequest.discountAmount(); - ServiceCreateVoucherRequest serviceCreateVoucherRequest = new ServiceCreateVoucherRequest( voucherType, discountAmount ); + CreateVoucherRequest createVoucherRequest = new CreateVoucherRequest( voucherType, discountAmount ); - return serviceCreateVoucherRequest; + return createVoucherRequest; } } diff --git a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java index 661d376a33..f1e1344dcf 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java @@ -6,19 +6,19 @@ import org.prgrms.kdt.voucher.domain.DiscountPolicy; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-26T15:46:22+0900", + date = "2023-07-29T23:28:38+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ServiceVoucherMapperImpl implements ServiceVoucherMapper { @Override - public Voucher serviceDtoToVoucher(ServiceCreateVoucherRequest request) { + public Voucher serviceDtoToVoucher(CreateVoucherRequest request) { if ( request == null ) { return null; } diff --git a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java index 4d70c5c53f..c8eb845013 100644 --- a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java @@ -2,20 +2,20 @@ import java.util.UUID; import javax.annotation.processing.Generated; -import org.prgrms.kdt.wallet.controller.dto.CreateWalletControllerRequest; -import org.prgrms.kdt.wallet.service.dto.CreateWalletServiceRequest; +import org.prgrms.kdt.wallet.controller.dto.CreateWalletApiRequest; +import org.prgrms.kdt.wallet.service.dto.CreateWalletRequest; import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-26T15:46:22+0900", + date = "2023-07-29T23:28:39+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ControllerWalletMapperImpl implements ControllerWalletMapper { @Override - public CreateWalletServiceRequest controllerRequestToServiceRequest(CreateWalletControllerRequest request) { + public CreateWalletRequest controllerRequestToServiceRequest(CreateWalletApiRequest request) { if ( request == null ) { return null; } @@ -28,8 +28,8 @@ public CreateWalletServiceRequest controllerRequestToServiceRequest(CreateWallet memberId = request.memberId(); voucherId = request.voucherId(); - CreateWalletServiceRequest createWalletServiceRequest = new CreateWalletServiceRequest( walletId, memberId, voucherId ); + CreateWalletRequest createWalletRequest = new CreateWalletRequest( walletId, memberId, voucherId ); - return createWalletServiceRequest; + return createWalletRequest; } } diff --git a/src/main/java/org/prgrms/kdt/ViewManager.java b/src/main/java/org/prgrms/kdt/ViewManager.java index a22c8c14cd..f00fcaf265 100644 --- a/src/main/java/org/prgrms/kdt/ViewManager.java +++ b/src/main/java/org/prgrms/kdt/ViewManager.java @@ -3,12 +3,12 @@ import org.prgrms.kdt.commendLine.Console; import org.prgrms.kdt.member.controller.MemberController; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.controller.dto.CreateMemberControllerRequest; +import org.prgrms.kdt.member.controller.dto.CreateMemberApiRequest; import org.prgrms.kdt.voucher.controller.VoucherController; +import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.controller.dto.CreateVoucherControllerRequest; import org.prgrms.kdt.wallet.controller.WalletController; -import org.prgrms.kdt.wallet.controller.dto.CreateWalletControllerRequest; +import org.prgrms.kdt.wallet.controller.dto.CreateWalletApiRequest; import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.springframework.stereotype.Component; @@ -32,7 +32,7 @@ public ViewManager(VoucherController voucherController, MemberController memberC public void createVoucher() throws IOException { VoucherType voucherType = VoucherType.getTypeByNum(console.getVoucherTypes()); double discountAmount = Double.parseDouble(console.getDiscountAmount()); - voucherController.create(new CreateVoucherControllerRequest(voucherType, discountAmount)); + voucherController.create(new CreateVoucherApiRequest(voucherType, discountAmount)); } public void findAllVoucher() { @@ -45,7 +45,7 @@ public void findAllBlackMember() { public void createMember() throws IOException { String memberName = console.getMemberName(); - memberController.createMember(new CreateMemberControllerRequest(memberName, MemberStatus.COMMON)); + memberController.createMember(new CreateMemberApiRequest(memberName, MemberStatus.COMMON)); } public void findAllMember() { @@ -55,7 +55,7 @@ public void findAllMember() { public void assignVoucher() throws IOException { UUID memberUuid = console.getMemberId(); UUID voucherUuid = console.getVoucherId(); - walletController.createWallet(new CreateWalletControllerRequest(memberUuid, voucherUuid)); + walletController.createWallet(new CreateWalletApiRequest(memberUuid, voucherUuid)); } public void findVouchersByMember() throws IOException { diff --git a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java index c9e8f8d9f7..d244506e97 100644 --- a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java +++ b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java @@ -21,7 +21,7 @@ import javax.servlet.http.HttpServletRequest; @RestControllerAdvice -public class ApiExceptionHandler extends ResponseEntityExceptionHandler { +public class ApiExceptionHandler{ private static final Logger logger = LoggerFactory.getLogger(ApiExceptionHandler.class); @ExceptionHandler(BindException.class) diff --git a/src/main/java/org/prgrms/kdt/member/controller/MemberController.java b/src/main/java/org/prgrms/kdt/member/controller/MemberController.java index 84b02159a3..36afff3601 100644 --- a/src/main/java/org/prgrms/kdt/member/controller/MemberController.java +++ b/src/main/java/org/prgrms/kdt/member/controller/MemberController.java @@ -1,6 +1,6 @@ package org.prgrms.kdt.member.controller; -import org.prgrms.kdt.member.controller.dto.CreateMemberControllerRequest; +import org.prgrms.kdt.member.controller.dto.CreateMemberApiRequest; import org.prgrms.kdt.member.controller.mapper.ControllerMemberMapper; import org.prgrms.kdt.member.service.dto.MemberResponses; import org.prgrms.kdt.member.service.MemberService; @@ -16,7 +16,7 @@ public MemberController(MemberService memberService, ControllerMemberMapper mapp this.mapper = mapper; } - public void createMember(CreateMemberControllerRequest request) { + public void createMember(CreateMemberApiRequest request) { memberService.createMember(mapper.controllerRequestToServiceRequest(request)); } diff --git a/src/main/java/org/prgrms/kdt/member/controller/dto/CreateMemberControllerRequest.java b/src/main/java/org/prgrms/kdt/member/controller/dto/CreateMemberApiRequest.java similarity index 55% rename from src/main/java/org/prgrms/kdt/member/controller/dto/CreateMemberControllerRequest.java rename to src/main/java/org/prgrms/kdt/member/controller/dto/CreateMemberApiRequest.java index 1f1006fb5b..a2f4a6c467 100644 --- a/src/main/java/org/prgrms/kdt/member/controller/dto/CreateMemberControllerRequest.java +++ b/src/main/java/org/prgrms/kdt/member/controller/dto/CreateMemberApiRequest.java @@ -2,5 +2,5 @@ import org.prgrms.kdt.member.domain.MemberStatus; -public record CreateMemberControllerRequest(String name, MemberStatus status) { +public record CreateMemberApiRequest(String name, MemberStatus status) { } diff --git a/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java b/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java index 25e0c19081..95dad3aec0 100644 --- a/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java +++ b/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java @@ -1,10 +1,10 @@ package org.prgrms.kdt.member.controller.mapper; import org.mapstruct.Mapper; -import org.prgrms.kdt.member.controller.dto.CreateMemberControllerRequest; -import org.prgrms.kdt.member.service.dto.CreateMemberServiceRequest; +import org.prgrms.kdt.member.controller.dto.CreateMemberApiRequest; +import org.prgrms.kdt.member.service.dto.CreateMemberRequest; @Mapper(componentModel = "spring") public interface ControllerMemberMapper { - CreateMemberServiceRequest controllerRequestToServiceRequest(CreateMemberControllerRequest request); + CreateMemberRequest controllerRequestToServiceRequest(CreateMemberApiRequest request); } diff --git a/src/main/java/org/prgrms/kdt/member/service/MemberService.java b/src/main/java/org/prgrms/kdt/member/service/MemberService.java index aebd8a2226..bc04d3e155 100644 --- a/src/main/java/org/prgrms/kdt/member/service/MemberService.java +++ b/src/main/java/org/prgrms/kdt/member/service/MemberService.java @@ -3,7 +3,7 @@ import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.dao.MemberRepository; import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.service.dto.CreateMemberServiceRequest; +import org.prgrms.kdt.member.service.dto.CreateMemberRequest; import org.prgrms.kdt.member.service.dto.MemberResponse; import org.prgrms.kdt.member.service.dto.MemberResponses; import org.prgrms.kdt.member.service.mapper.ServiceMemberMapper; @@ -19,7 +19,7 @@ public MemberService(MemberRepository memberRepository, ServiceMemberMapper mapp this.mapper = mapper; } - public MemberResponse createMember(CreateMemberServiceRequest request) { + public MemberResponse createMember(CreateMemberRequest request) { Member member = mapper.serviceRequestToMember(request); return new MemberResponse(memberRepository.insert(member)); } diff --git a/src/main/java/org/prgrms/kdt/member/service/dto/CreateMemberServiceRequest.java b/src/main/java/org/prgrms/kdt/member/service/dto/CreateMemberRequest.java similarity index 55% rename from src/main/java/org/prgrms/kdt/member/service/dto/CreateMemberServiceRequest.java rename to src/main/java/org/prgrms/kdt/member/service/dto/CreateMemberRequest.java index 5c8a215172..35a1e7ea93 100644 --- a/src/main/java/org/prgrms/kdt/member/service/dto/CreateMemberServiceRequest.java +++ b/src/main/java/org/prgrms/kdt/member/service/dto/CreateMemberRequest.java @@ -2,5 +2,5 @@ import org.prgrms.kdt.member.domain.MemberStatus; -public record CreateMemberServiceRequest(String name, MemberStatus status) { +public record CreateMemberRequest(String name, MemberStatus status) { } diff --git a/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java b/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java index ef277d1dac..a07030962f 100644 --- a/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java +++ b/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java @@ -3,14 +3,14 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.prgrms.kdt.member.domain.Member; -import org.prgrms.kdt.member.service.dto.CreateMemberServiceRequest; +import org.prgrms.kdt.member.service.dto.CreateMemberRequest; import java.util.UUID; @Mapper(componentModel = "spring") public interface ServiceMemberMapper { @Mapping(target = "memberId", expression = "java(createUUID())") - Member serviceRequestToMember(CreateMemberServiceRequest request); + Member serviceRequestToMember(CreateMemberRequest request); default UUID createUUID(){ return UUID.randomUUID(); diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java index c87cf94649..52cdc8828d 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -1,6 +1,6 @@ package org.prgrms.kdt.voucher.controller; -import org.prgrms.kdt.voucher.controller.dto.CreateVoucherControllerRequest; +import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; import org.prgrms.kdt.voucher.domain.VoucherType; import org.prgrms.kdt.voucher.service.VoucherService; @@ -25,7 +25,7 @@ public VoucherApiController(VoucherService voucherService, ControllerVoucherMapp } @PostMapping - public ResponseEntity create(@RequestBody @Valid CreateVoucherControllerRequest request) { + public ResponseEntity create(@RequestBody @Valid CreateVoucherApiRequest request) { VoucherResponse response = voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); return ResponseEntity.ok(response); } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java index 68f6d52cd2..51730734e9 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java @@ -1,6 +1,6 @@ package org.prgrms.kdt.voucher.controller; -import org.prgrms.kdt.voucher.controller.dto.CreateVoucherControllerRequest; +import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; import org.prgrms.kdt.voucher.service.dto.VoucherResponses; import org.prgrms.kdt.voucher.service.VoucherService; @@ -16,7 +16,7 @@ public VoucherController(VoucherService voucherService, ControllerVoucherMapper this.mapper = mapper; } - public void create(CreateVoucherControllerRequest request) { + public void create(CreateVoucherApiRequest request) { voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index 5256c77d52..b21044d64e 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -1,6 +1,6 @@ package org.prgrms.kdt.voucher.controller; -import org.prgrms.kdt.voucher.controller.dto.CreateVoucherControllerRequest; +import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponses; @@ -28,7 +28,7 @@ public String save() { } @PostMapping("/new") - public String create(CreateVoucherControllerRequest request) { + public String create(CreateVoucherApiRequest request) { voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); return "redirect:/view/vouchers"; } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherApiRequest.java b/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherApiRequest.java new file mode 100644 index 0000000000..b339452748 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherApiRequest.java @@ -0,0 +1,9 @@ +package org.prgrms.kdt.voucher.controller.dto; + +import org.prgrms.kdt.voucher.domain.VoucherType; + +import javax.validation.constraints.NotNull; + +public record CreateVoucherApiRequest(@NotNull VoucherType voucherType, + @NotNull double discountAmount) { +} \ No newline at end of file diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java b/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java deleted file mode 100644 index 6b180794a9..0000000000 --- a/src/main/java/org/prgrms/kdt/voucher/controller/dto/CreateVoucherControllerRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prgrms.kdt.voucher.controller.dto; - -import org.prgrms.kdt.voucher.domain.VoucherType; - -import javax.validation.constraints.NotNull; - -public record CreateVoucherControllerRequest(@NotNull VoucherType voucherType, - @NotNull double discountAmount) { -} \ No newline at end of file diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java index a3400e40b0..cd88f8f639 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java @@ -1,10 +1,10 @@ package org.prgrms.kdt.voucher.controller.mapper; import org.mapstruct.Mapper; -import org.prgrms.kdt.voucher.controller.dto.CreateVoucherControllerRequest; -import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; +import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; @Mapper(componentModel = "spring") public interface ControllerVoucherMapper { - ServiceCreateVoucherRequest controllerDtoToServiceDto(CreateVoucherControllerRequest createVoucherControllerRequest); + CreateVoucherRequest controllerDtoToServiceDto(CreateVoucherApiRequest createVoucherApiRequest); } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index 90f4c57706..e46550e5cc 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -4,7 +4,7 @@ import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.dao.VoucherRepository; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponses; @@ -24,7 +24,7 @@ public VoucherService(VoucherRepository voucherRepository, ServiceVoucherMapper this.mapper = mapper; } - public VoucherResponse createVoucher(ServiceCreateVoucherRequest request) { + public VoucherResponse createVoucher(CreateVoucherRequest request) { Voucher voucher = voucherRepository.insert(mapper.serviceDtoToVoucher(request)); return new VoucherResponse(voucher); } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/dto/ServiceCreateVoucherRequest.java b/src/main/java/org/prgrms/kdt/voucher/service/dto/CreateVoucherRequest.java similarity index 51% rename from src/main/java/org/prgrms/kdt/voucher/service/dto/ServiceCreateVoucherRequest.java rename to src/main/java/org/prgrms/kdt/voucher/service/dto/CreateVoucherRequest.java index 986655eab9..2e5f12b21b 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/dto/ServiceCreateVoucherRequest.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/dto/CreateVoucherRequest.java @@ -2,5 +2,5 @@ import org.prgrms.kdt.voucher.domain.VoucherType; -public record ServiceCreateVoucherRequest(VoucherType voucherType, double discountAmount) { +public record CreateVoucherRequest(VoucherType voucherType, double discountAmount) { } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java index 873f589ad6..be7d50111b 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java @@ -5,7 +5,7 @@ import org.prgrms.kdt.voucher.domain.DiscountPolicy; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; import java.time.LocalDateTime; import java.util.UUID; @@ -15,7 +15,7 @@ public interface ServiceVoucherMapper { @Mapping(target = "voucherId", expression = "java(createUUID())") @Mapping(target = "discountPolicy", expression = "java(createDiscountPolicy(request.voucherType(), request.discountAmount()))") @Mapping(target = "createdAt", expression = "java(createLocalDateTime())") - Voucher serviceDtoToVoucher(ServiceCreateVoucherRequest request); + Voucher serviceDtoToVoucher(CreateVoucherRequest request); default UUID createUUID(){ return UUID.randomUUID(); diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java b/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java index 18a20a3fd0..2c5e87ed45 100644 --- a/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java +++ b/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java @@ -1,6 +1,6 @@ package org.prgrms.kdt.wallet.controller; -import org.prgrms.kdt.wallet.controller.dto.CreateWalletControllerRequest; +import org.prgrms.kdt.wallet.controller.dto.CreateWalletApiRequest; import org.prgrms.kdt.wallet.controller.mapper.ControllerWalletMapper; import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.prgrms.kdt.wallet.service.WalletService; @@ -18,7 +18,7 @@ public WalletController(WalletService walletService, ControllerWalletMapper mapp this.mapper = mapper; } - public void createWallet(CreateWalletControllerRequest request) { + public void createWallet(CreateWalletApiRequest request) { walletService.assignVoucherToCustomer(mapper.controllerRequestToServiceRequest(request)); } diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java b/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java new file mode 100644 index 0000000000..25c7e62dca --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java @@ -0,0 +1,9 @@ +package org.prgrms.kdt.wallet.controller.dto; + +import java.util.UUID; + +public record CreateWalletApiRequest(UUID walletId, UUID memberId, UUID voucherId) { + public CreateWalletApiRequest(UUID memberId, UUID voucherId) { + this(UUID.randomUUID(), memberId, voucherId); + } +} diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletControllerRequest.java b/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletControllerRequest.java deleted file mode 100644 index 3dde4f7472..0000000000 --- a/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletControllerRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prgrms.kdt.wallet.controller.dto; - -import java.util.UUID; - -public record CreateWalletControllerRequest(UUID walletId, UUID memberId, UUID voucherId) { - public CreateWalletControllerRequest(UUID memberId, UUID voucherId) { - this(UUID.randomUUID(), memberId, voucherId); - } -} diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java b/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java index 774d20d6d4..c82ea8039b 100644 --- a/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java +++ b/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java @@ -1,10 +1,10 @@ package org.prgrms.kdt.wallet.controller.mapper; import org.mapstruct.Mapper; -import org.prgrms.kdt.wallet.controller.dto.CreateWalletControllerRequest; -import org.prgrms.kdt.wallet.service.dto.CreateWalletServiceRequest; +import org.prgrms.kdt.wallet.controller.dto.CreateWalletApiRequest; +import org.prgrms.kdt.wallet.service.dto.CreateWalletRequest; @Mapper(componentModel = "spring") public interface ControllerWalletMapper { - CreateWalletServiceRequest controllerRequestToServiceRequest(CreateWalletControllerRequest request); + CreateWalletRequest controllerRequestToServiceRequest(CreateWalletApiRequest request); } diff --git a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java index 103de8f3ee..2547dd1e16 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java @@ -6,7 +6,7 @@ import org.prgrms.kdt.wallet.dao.WalletRepository; import org.prgrms.kdt.wallet.domain.JoinedWallet; import org.prgrms.kdt.wallet.domain.Wallet; -import org.prgrms.kdt.wallet.service.dto.CreateWalletServiceRequest; +import org.prgrms.kdt.wallet.service.dto.CreateWalletRequest; import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.prgrms.kdt.wallet.service.dto.WalletResponse; import org.springframework.stereotype.Component; @@ -28,7 +28,7 @@ public WalletService(MemberRepository memberRepository, VoucherRepository vouche } @Transactional - public WalletResponse assignVoucherToCustomer(CreateWalletServiceRequest request) { + public WalletResponse assignVoucherToCustomer(CreateWalletRequest request) { memberRepository.findById(request.memberId()) .orElseThrow(() -> new EntityNotFoundException("존재하지 않는 멤버 입니다.")); voucherRepository.findById(request.voucherId()) diff --git a/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java new file mode 100644 index 0000000000..4069259343 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java @@ -0,0 +1,6 @@ +package org.prgrms.kdt.wallet.service.dto; + +import java.util.UUID; + +public record CreateWalletRequest(UUID walletId, UUID memberId, UUID voucherId) { +} diff --git a/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletServiceRequest.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletServiceRequest.java deleted file mode 100644 index 04a8e239ed..0000000000 --- a/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletServiceRequest.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.prgrms.kdt.wallet.service.dto; - -import java.util.UUID; - -public record CreateWalletServiceRequest(UUID walletId, UUID memberId, UUID voucherId) { -} diff --git a/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java b/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java index 024c127027..f4a52fea16 100644 --- a/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java +++ b/src/test/java/org/prgrms/kdt/member/service/MemberServiceTest.java @@ -4,9 +4,9 @@ import org.prgrms.kdt.member.dao.JdbcMemberRepository; import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.domain.MemberStatus; +import org.prgrms.kdt.member.service.dto.CreateMemberRequest; import org.prgrms.kdt.member.service.dto.MemberResponse; import org.prgrms.kdt.member.service.dto.MemberResponses; -import org.prgrms.kdt.member.service.dto.CreateMemberServiceRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -39,7 +39,7 @@ void setup(){ @DisplayName("멤버를 저장하고 제대로 멤버를 반환하는지 확인") void createMember_correctRequest_correctMemberName() { //given - CreateMemberServiceRequest request = new CreateMemberServiceRequest("james", MemberStatus.COMMON); + CreateMemberRequest request = new CreateMemberRequest("james", MemberStatus.COMMON); //when MemberResponse result = memberService.createMember(request); diff --git a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java index fb664cc987..fea37381eb 100644 --- a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java @@ -9,7 +9,7 @@ import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponses; -import org.prgrms.kdt.voucher.service.dto.ServiceCreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -44,7 +44,7 @@ void setup() { @DisplayName("바우처 생성 후 반환된 바우처의 amount 확인") void createVoucher_correctRequest_correctAmount() { //given - ServiceCreateVoucherRequest request = new ServiceCreateVoucherRequest(VoucherType.FIXED, 50.0); + CreateVoucherRequest request = new CreateVoucherRequest(VoucherType.FIXED, 50.0); //when VoucherResponse voucher = voucherService.createVoucher(request); diff --git a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java index 73b9fec945..965a5ff1e5 100644 --- a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java +++ b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java @@ -13,7 +13,7 @@ import org.prgrms.kdt.wallet.dao.WalletRepository; import org.prgrms.kdt.wallet.domain.JoinedWallet; import org.prgrms.kdt.wallet.domain.Wallet; -import org.prgrms.kdt.wallet.service.dto.CreateWalletServiceRequest; +import org.prgrms.kdt.wallet.service.dto.CreateWalletRequest; import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.prgrms.kdt.wallet.service.dto.WalletResponse; import org.springframework.beans.factory.annotation.Autowired; @@ -59,7 +59,7 @@ void assignVoucherToCustomer_correctRequest_correctWalletResponse() { UUID expectMemberId = UUID.fromString("9a3d5b3e-2d12-4958-9ef3-52d424485895"); Member member = memberRepository.insert(new Member(expectMemberId, "giho", MemberStatus.COMMON)); Voucher voucher = voucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(35.0), LocalDateTime.now())); - CreateWalletServiceRequest request = new CreateWalletServiceRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); + CreateWalletRequest request = new CreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when WalletResponse resultWallet = walletService.assignVoucherToCustomer(request); @@ -75,7 +75,7 @@ void assignVoucherToCustomer_incorrectRequest_EntityNotFoundException() { //given Member member = memberRepository.insert(new Member(UUID.randomUUID(), "giho", MemberStatus.COMMON)); Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); - CreateWalletServiceRequest request = new CreateWalletServiceRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); + CreateWalletRequest request = new CreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); //when Exception exception = catchException(() -> walletService.assignVoucherToCustomer(request)); From f96ea980694fafd0982b82c2d4ea4d97ca83100e Mon Sep 17 00:00:00 2001 From: young970 Date: Sun, 30 Jul 2023 02:25:16 +0900 Subject: [PATCH 12/18] =?UTF-8?q?refactor:=20id=EA=B0=92=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=20Generate=EB=A5=BC=20=ED=86=B5=ED=95=B4=20?= =?UTF-8?q?=EC=A3=BC=EC=9E=85=EB=B0=9B=EB=8A=94=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ControllerMemberMapperImpl.java | 4 +- .../mapper/ServiceMemberMapperImpl.java | 36 ------------------ .../mapper/ControllerVoucherMapperImpl.java | 4 +- .../mapper/ServiceVoucherMapperImpl.java | 38 ------------------- .../mapper/ControllerWalletMapperImpl.java | 8 ++-- .../java/org/prgrms/kdt/global/Generator.java | 9 +++++ .../org/prgrms/kdt/global/GeneratorImp.java | 22 +++++++++++ .../member/controller/MemberController.java | 2 +- .../mapper/ControllerMemberMapper.java | 2 +- .../kdt/member/service/MemberService.java | 2 +- .../service/mapper/ServiceMemberMapper.java | 19 +++++----- .../controller/VoucherApiController.java | 2 +- .../voucher/controller/VoucherController.java | 2 +- .../controller/VoucherViewController.java | 2 +- .../mapper/ControllerVoucherMapper.java | 2 +- .../kdt/voucher/service/VoucherService.java | 2 +- .../service/mapper/ServiceVoucherMapper.java | 32 +++++++--------- .../wallet/controller/WalletController.java | 2 +- .../dto/CreateWalletApiRequest.java | 5 +-- .../mapper/ControllerWalletMapper.java | 2 +- .../kdt/wallet/service/WalletService.java | 7 +++- .../service/dto/CreateWalletRequest.java | 2 +- 22 files changed, 78 insertions(+), 128 deletions(-) delete mode 100644 src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java delete mode 100644 src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java create mode 100644 src/main/java/org/prgrms/kdt/global/Generator.java create mode 100644 src/main/java/org/prgrms/kdt/global/GeneratorImp.java diff --git a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java index c3c4ecfa0f..eb46740284 100644 --- a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java @@ -8,14 +8,14 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-29T23:28:37+0900", + date = "2023-07-30T02:19:39+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ControllerMemberMapperImpl implements ControllerMemberMapper { @Override - public CreateMemberRequest controllerRequestToServiceRequest(CreateMemberApiRequest request) { + public CreateMemberRequest convertRequest(CreateMemberApiRequest request) { if ( request == null ) { return null; } diff --git a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java deleted file mode 100644 index 26a644883d..0000000000 --- a/src/main/generated/org/prgrms/kdt/member/service/mapper/ServiceMemberMapperImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.prgrms.kdt.member.service.mapper; - -import java.util.UUID; -import javax.annotation.processing.Generated; -import org.prgrms.kdt.member.domain.Member; -import org.prgrms.kdt.member.domain.MemberStatus; -import org.prgrms.kdt.member.service.dto.CreateMemberRequest; -import org.springframework.stereotype.Component; - -@Generated( - value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-29T23:28:39+0900", - comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" -) -@Component -public class ServiceMemberMapperImpl implements ServiceMemberMapper { - - @Override - public Member serviceRequestToMember(CreateMemberRequest request) { - if ( request == null ) { - return null; - } - - String name = null; - MemberStatus status = null; - - name = request.name(); - status = request.status(); - - UUID memberId = createUUID(); - - Member member = new Member( memberId, name, status ); - - return member; - } -} diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java index 09343857fb..f40fcd13c8 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -8,14 +8,14 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-29T23:28:38+0900", + date = "2023-07-30T02:19:38+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ControllerVoucherMapperImpl implements ControllerVoucherMapper { @Override - public CreateVoucherRequest controllerDtoToServiceDto(CreateVoucherApiRequest createVoucherApiRequest) { + public CreateVoucherRequest convertRequest(CreateVoucherApiRequest createVoucherApiRequest) { if ( createVoucherApiRequest == null ) { return null; } diff --git a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java deleted file mode 100644 index f1e1344dcf..0000000000 --- a/src/main/generated/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapperImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.prgrms.kdt.voucher.service.mapper; - -import java.time.LocalDateTime; -import java.util.UUID; -import javax.annotation.processing.Generated; -import org.prgrms.kdt.voucher.domain.DiscountPolicy; -import org.prgrms.kdt.voucher.domain.Voucher; -import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; -import org.springframework.stereotype.Component; - -@Generated( - value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-29T23:28:38+0900", - comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" -) -@Component -public class ServiceVoucherMapperImpl implements ServiceVoucherMapper { - - @Override - public Voucher serviceDtoToVoucher(CreateVoucherRequest request) { - if ( request == null ) { - return null; - } - - VoucherType voucherType = null; - - voucherType = request.voucherType(); - - UUID voucherId = createUUID(); - DiscountPolicy discountPolicy = createDiscountPolicy(request.voucherType(), request.discountAmount()); - LocalDateTime createdAt = createLocalDateTime(); - - Voucher voucher = new Voucher( voucherId, voucherType, discountPolicy, createdAt ); - - return voucher; - } -} diff --git a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java index c8eb845013..28204833b8 100644 --- a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java @@ -8,27 +8,25 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-29T23:28:39+0900", + date = "2023-07-30T02:23:50+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component public class ControllerWalletMapperImpl implements ControllerWalletMapper { @Override - public CreateWalletRequest controllerRequestToServiceRequest(CreateWalletApiRequest request) { + public CreateWalletRequest convertRequest(CreateWalletApiRequest request) { if ( request == null ) { return null; } - UUID walletId = null; UUID memberId = null; UUID voucherId = null; - walletId = request.walletId(); memberId = request.memberId(); voucherId = request.voucherId(); - CreateWalletRequest createWalletRequest = new CreateWalletRequest( walletId, memberId, voucherId ); + CreateWalletRequest createWalletRequest = new CreateWalletRequest( memberId, voucherId ); return createWalletRequest; } diff --git a/src/main/java/org/prgrms/kdt/global/Generator.java b/src/main/java/org/prgrms/kdt/global/Generator.java new file mode 100644 index 0000000000..3e89144207 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/global/Generator.java @@ -0,0 +1,9 @@ +package org.prgrms.kdt.global; + +import java.time.LocalDateTime; +import java.util.UUID; + +public interface Generator { + UUID generateId(); + LocalDateTime generateTime(); +} diff --git a/src/main/java/org/prgrms/kdt/global/GeneratorImp.java b/src/main/java/org/prgrms/kdt/global/GeneratorImp.java new file mode 100644 index 0000000000..c83d78148a --- /dev/null +++ b/src/main/java/org/prgrms/kdt/global/GeneratorImp.java @@ -0,0 +1,22 @@ +package org.prgrms.kdt.global; + +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.UUID; + +@Component +public class GeneratorImp implements Generator{ + private GeneratorImp() { + } + + @Override + public UUID generateId() { + return UUID.randomUUID(); + } + + @Override + public LocalDateTime generateTime() { + return LocalDateTime.now(); + } +} diff --git a/src/main/java/org/prgrms/kdt/member/controller/MemberController.java b/src/main/java/org/prgrms/kdt/member/controller/MemberController.java index 36afff3601..db6c120cae 100644 --- a/src/main/java/org/prgrms/kdt/member/controller/MemberController.java +++ b/src/main/java/org/prgrms/kdt/member/controller/MemberController.java @@ -17,7 +17,7 @@ public MemberController(MemberService memberService, ControllerMemberMapper mapp } public void createMember(CreateMemberApiRequest request) { - memberService.createMember(mapper.controllerRequestToServiceRequest(request)); + memberService.createMember(mapper.convertRequest(request)); } public MemberResponses findAllMember() { diff --git a/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java b/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java index 95dad3aec0..4d16c46d5a 100644 --- a/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java +++ b/src/main/java/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapper.java @@ -6,5 +6,5 @@ @Mapper(componentModel = "spring") public interface ControllerMemberMapper { - CreateMemberRequest controllerRequestToServiceRequest(CreateMemberApiRequest request); + CreateMemberRequest convertRequest(CreateMemberApiRequest request); } diff --git a/src/main/java/org/prgrms/kdt/member/service/MemberService.java b/src/main/java/org/prgrms/kdt/member/service/MemberService.java index bc04d3e155..361bb7ce00 100644 --- a/src/main/java/org/prgrms/kdt/member/service/MemberService.java +++ b/src/main/java/org/prgrms/kdt/member/service/MemberService.java @@ -20,7 +20,7 @@ public MemberService(MemberRepository memberRepository, ServiceMemberMapper mapp } public MemberResponse createMember(CreateMemberRequest request) { - Member member = mapper.serviceRequestToMember(request); + Member member = mapper.convertMember(request); return new MemberResponse(memberRepository.insert(member)); } diff --git a/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java b/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java index a07030962f..b907452905 100644 --- a/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java +++ b/src/main/java/org/prgrms/kdt/member/service/mapper/ServiceMemberMapper.java @@ -1,18 +1,19 @@ package org.prgrms.kdt.member.service.mapper; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; +import org.prgrms.kdt.global.Generator; import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.service.dto.CreateMemberRequest; +import org.springframework.stereotype.Component; -import java.util.UUID; +@Component +public class ServiceMemberMapper { + private final Generator generator; -@Mapper(componentModel = "spring") -public interface ServiceMemberMapper { - @Mapping(target = "memberId", expression = "java(createUUID())") - Member serviceRequestToMember(CreateMemberRequest request); + public ServiceMemberMapper(Generator generator) { + this.generator = generator; + } - default UUID createUUID(){ - return UUID.randomUUID(); + public Member convertMember(CreateMemberRequest request){ + return new Member(generator.generateId(), request.name(), request.status()); } } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java index 52cdc8828d..656edc4344 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -26,7 +26,7 @@ public VoucherApiController(VoucherService voucherService, ControllerVoucherMapp @PostMapping public ResponseEntity create(@RequestBody @Valid CreateVoucherApiRequest request) { - VoucherResponse response = voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); + VoucherResponse response = voucherService.createVoucher(mapper.convertRequest(request)); return ResponseEntity.ok(response); } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java index 51730734e9..0592321f6b 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java @@ -17,7 +17,7 @@ public VoucherController(VoucherService voucherService, ControllerVoucherMapper } public void create(CreateVoucherApiRequest request) { - voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); + voucherService.createVoucher(mapper.convertRequest(request)); } public VoucherResponses findAll() { diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index b21044d64e..360720245f 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -29,7 +29,7 @@ public String save() { @PostMapping("/new") public String create(CreateVoucherApiRequest request) { - voucherService.createVoucher(mapper.controllerDtoToServiceDto(request)); + voucherService.createVoucher(mapper.convertRequest(request)); return "redirect:/view/vouchers"; } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java index cd88f8f639..fbf0e332d1 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java @@ -6,5 +6,5 @@ @Mapper(componentModel = "spring") public interface ControllerVoucherMapper { - CreateVoucherRequest controllerDtoToServiceDto(CreateVoucherApiRequest createVoucherApiRequest); + CreateVoucherRequest convertRequest(CreateVoucherApiRequest createVoucherApiRequest); } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index e46550e5cc..26a5918347 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -25,7 +25,7 @@ public VoucherService(VoucherRepository voucherRepository, ServiceVoucherMapper } public VoucherResponse createVoucher(CreateVoucherRequest request) { - Voucher voucher = voucherRepository.insert(mapper.serviceDtoToVoucher(request)); + Voucher voucher = voucherRepository.insert(mapper.convertVoucher(request)); return new VoucherResponse(voucher); } diff --git a/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java index be7d50111b..0ee06af5f8 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/mapper/ServiceVoucherMapper.java @@ -1,31 +1,25 @@ package org.prgrms.kdt.voucher.service.mapper; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.prgrms.kdt.voucher.domain.DiscountPolicy; +import org.prgrms.kdt.global.Generator; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; +import org.springframework.stereotype.Component; -import java.time.LocalDateTime; -import java.util.UUID; -@Mapper(componentModel = "spring") -public interface ServiceVoucherMapper { - @Mapping(target = "voucherId", expression = "java(createUUID())") - @Mapping(target = "discountPolicy", expression = "java(createDiscountPolicy(request.voucherType(), request.discountAmount()))") - @Mapping(target = "createdAt", expression = "java(createLocalDateTime())") - Voucher serviceDtoToVoucher(CreateVoucherRequest request); +@Component +public class ServiceVoucherMapper { + private final Generator generator; - default UUID createUUID(){ - return UUID.randomUUID(); + public ServiceVoucherMapper(Generator generator) { + this.generator = generator; } - default DiscountPolicy createDiscountPolicy(VoucherType voucherType, double discountAmount){ - return voucherType.createPolicy(discountAmount); - } - - default LocalDateTime createLocalDateTime(){ - return LocalDateTime.now(); + public Voucher convertVoucher(CreateVoucherRequest request){ + VoucherType voucherType = request.voucherType(); + return new Voucher(generator.generateId(), + voucherType, + voucherType.createPolicy(request.discountAmount()), + generator.generateTime()); } } diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java b/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java index 2c5e87ed45..d847220f5b 100644 --- a/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java +++ b/src/main/java/org/prgrms/kdt/wallet/controller/WalletController.java @@ -19,7 +19,7 @@ public WalletController(WalletService walletService, ControllerWalletMapper mapp } public void createWallet(CreateWalletApiRequest request) { - walletService.assignVoucherToCustomer(mapper.controllerRequestToServiceRequest(request)); + walletService.assignVoucherToCustomer(mapper.convertRequest(request)); } public JoinedWalletResponses findVouchersByMemberId(UUID memberId) { diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java b/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java index 25c7e62dca..9771763505 100644 --- a/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java +++ b/src/main/java/org/prgrms/kdt/wallet/controller/dto/CreateWalletApiRequest.java @@ -2,8 +2,5 @@ import java.util.UUID; -public record CreateWalletApiRequest(UUID walletId, UUID memberId, UUID voucherId) { - public CreateWalletApiRequest(UUID memberId, UUID voucherId) { - this(UUID.randomUUID(), memberId, voucherId); - } +public record CreateWalletApiRequest(UUID memberId, UUID voucherId) { } diff --git a/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java b/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java index c82ea8039b..3d5b3bb1f4 100644 --- a/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java +++ b/src/main/java/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapper.java @@ -6,5 +6,5 @@ @Mapper(componentModel = "spring") public interface ControllerWalletMapper { - CreateWalletRequest controllerRequestToServiceRequest(CreateWalletApiRequest request); + CreateWalletRequest convertRequest(CreateWalletApiRequest request); } diff --git a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java index 2547dd1e16..1e6187f982 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java @@ -1,5 +1,6 @@ package org.prgrms.kdt.wallet.service; +import org.prgrms.kdt.global.Generator; import org.prgrms.kdt.global.exception.EntityNotFoundException; import org.prgrms.kdt.member.dao.MemberRepository; import org.prgrms.kdt.voucher.dao.VoucherRepository; @@ -20,11 +21,13 @@ public class WalletService { private final MemberRepository memberRepository; private final VoucherRepository voucherRepository; private final WalletRepository walletRepository; + private final Generator generator; - public WalletService(MemberRepository memberRepository, VoucherRepository voucherRepository, WalletRepository walletRepository) { + public WalletService(MemberRepository memberRepository, VoucherRepository voucherRepository, WalletRepository walletRepository, Generator generator) { this.memberRepository = memberRepository; this.voucherRepository = voucherRepository; this.walletRepository = walletRepository; + this.generator = generator; } @Transactional @@ -34,7 +37,7 @@ public WalletResponse assignVoucherToCustomer(CreateWalletRequest request) { voucherRepository.findById(request.voucherId()) .orElseThrow(() -> new EntityNotFoundException("존재하지 않는 바우처 입니다.")); - Wallet wallet = new Wallet(request.walletId(), request.memberId(), request.voucherId()); + Wallet wallet = new Wallet(generator.generateId(), request.memberId(), request.voucherId()); return new WalletResponse(walletRepository.insert(wallet)); } diff --git a/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java index 4069259343..10cc1624b2 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/CreateWalletRequest.java @@ -2,5 +2,5 @@ import java.util.UUID; -public record CreateWalletRequest(UUID walletId, UUID memberId, UUID voucherId) { +public record CreateWalletRequest(UUID memberId, UUID voucherId) { } From 6c54b0a124327a4d5b7b602c2532dc3c6f9ffdcc Mon Sep 17 00:00:00 2001 From: young970 Date: Sun, 30 Jul 2023 03:32:27 +0900 Subject: [PATCH 13/18] =?UTF-8?q?refactor:=20controller=20=EC=9D=B4?= =?UTF-8?q?=EC=83=81=ED=95=9C=20uri=EB=93=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/prgrms/kdt/member/service/MemberService.java | 3 +++ .../prgrms/kdt/voucher/controller/VoucherApiController.java | 6 +++--- .../kdt/voucher/controller/VoucherViewController.java | 4 ++-- .../java/org/prgrms/kdt/voucher/service/VoucherService.java | 2 ++ .../java/org/prgrms/kdt/wallet/service/WalletService.java | 4 +++- src/main/resources/templates/voucher/voucher_detail.html | 2 +- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/prgrms/kdt/member/service/MemberService.java b/src/main/java/org/prgrms/kdt/member/service/MemberService.java index 361bb7ce00..0723906c45 100644 --- a/src/main/java/org/prgrms/kdt/member/service/MemberService.java +++ b/src/main/java/org/prgrms/kdt/member/service/MemberService.java @@ -8,7 +8,9 @@ import org.prgrms.kdt.member.service.dto.MemberResponses; import org.prgrms.kdt.member.service.mapper.ServiceMemberMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +@Transactional(readOnly = true) @Service public class MemberService { private final MemberRepository memberRepository; @@ -19,6 +21,7 @@ public MemberService(MemberRepository memberRepository, ServiceMemberMapper mapp this.mapper = mapper; } + @Transactional public MemberResponse createMember(CreateMemberRequest request) { Member member = mapper.convertMember(request); return new MemberResponse(memberRepository.insert(member)); diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java index 656edc4344..0fd3d7b8ea 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -36,9 +36,9 @@ public ResponseEntity findById(@PathVariable UUID id) { return ResponseEntity.ok(response); } - @GetMapping("/type/{type}") - public ResponseEntity findByType(@PathVariable VoucherType type) { - VoucherResponses response = voucherService.findByType(type); + @GetMapping("/type") + public ResponseEntity findByType(@RequestParam VoucherType voucherType) { + VoucherResponses response = voucherService.findByType(voucherType); return ResponseEntity.ok(response); } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index 360720245f..f1d4ed04e5 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -23,7 +23,7 @@ public VoucherViewController(VoucherService voucherService, ControllerVoucherMap } @GetMapping("/new") - public String save() { + public String create() { return "voucher/voucher_create"; } @@ -47,7 +47,7 @@ public String findAll(Model model) { return "voucher/vouchers"; } - @PostMapping("/{id}") + @PostMapping("/delete/{id}") public String deleteById(@PathVariable UUID id) { voucherService.deleteById(id); return "redirect:/view/vouchers"; diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index 26a5918347..1fa948fe23 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -14,6 +14,7 @@ import java.util.UUID; +@Transactional(readOnly = true) @Service public class VoucherService { private final VoucherRepository voucherRepository; @@ -24,6 +25,7 @@ public VoucherService(VoucherRepository voucherRepository, ServiceVoucherMapper this.mapper = mapper; } + @Transactional public VoucherResponse createVoucher(CreateVoucherRequest request) { Voucher voucher = voucherRepository.insert(mapper.convertVoucher(request)); return new VoucherResponse(voucher); diff --git a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java index 1e6187f982..ffd92325fb 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java @@ -11,12 +11,14 @@ import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.prgrms.kdt.wallet.service.dto.WalletResponse; import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.UUID; -@Component +@Transactional(readOnly = true) +@Service public class WalletService { private final MemberRepository memberRepository; private final VoucherRepository voucherRepository; diff --git a/src/main/resources/templates/voucher/voucher_detail.html b/src/main/resources/templates/voucher/voucher_detail.html index bc8e35aa62..7bcba4fc8a 100644 --- a/src/main/resources/templates/voucher/voucher_detail.html +++ b/src/main/resources/templates/voucher/voucher_detail.html @@ -30,7 +30,7 @@

Voucher Detail Page

- +
-
+
From 8af940c8c42016560db71cdc2b799e83976221f6 Mon Sep 17 00:00:00 2001 From: young970 Date: Sun, 30 Jul 2023 03:50:46 +0900 Subject: [PATCH 14/18] =?UTF-8?q?refactor:=20WalletRepository=20query?= =?UTF-8?q?=EC=9A=A9,=20command=EC=9A=A9=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/JdbcWalletCommandRepository.java | 36 ++++++++++++++++ ...ry.java => JdbcWalletQueryRepository.java} | 41 +++++-------------- .../wallet/dao/WalletCommandRepository.java | 11 +++++ .../kdt/wallet/dao/WalletQueryRepository.java | 15 +++++++ .../kdt/wallet/dao/WalletRepository.java | 19 --------- .../{JoinedWallet.java => QueryWallet.java} | 4 +- .../kdt/wallet/service/WalletService.java | 30 +++++++------- .../service/dto/JoinedWalletResponse.java | 12 +++--- .../service/dto/JoinedWalletResponses.java | 6 +-- .../kdt/wallet/service/WalletServiceTest.java | 18 ++++---- 10 files changed, 109 insertions(+), 83 deletions(-) create mode 100644 src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletCommandRepository.java rename src/main/java/org/prgrms/kdt/wallet/dao/{JdbcWalletRepository.java => JdbcWalletQueryRepository.java} (61%) create mode 100644 src/main/java/org/prgrms/kdt/wallet/dao/WalletCommandRepository.java create mode 100644 src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java delete mode 100644 src/main/java/org/prgrms/kdt/wallet/dao/WalletRepository.java rename src/main/java/org/prgrms/kdt/wallet/domain/{JoinedWallet.java => QueryWallet.java} (84%) diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletCommandRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletCommandRepository.java new file mode 100644 index 0000000000..ddeb7ee7e5 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletCommandRepository.java @@ -0,0 +1,36 @@ +package org.prgrms.kdt.wallet.dao; + +import org.prgrms.kdt.global.exception.NotUpdateException; +import org.prgrms.kdt.wallet.domain.Wallet; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public class JdbcWalletCommandRepository implements WalletCommandRepository { + private final JdbcTemplate jdbcTemplate; + + public JdbcWalletCommandRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + @Override + public Wallet insert(Wallet wallet) { + String sql = "INSERT INTO wallet(id, member_id, voucher_id) VALUES (?, ?, ?)"; + int update = jdbcTemplate.update(sql, wallet.getWalletId().toString(), + wallet.getMemberId().toString(), + wallet.getVoucherId().toString()); + if (update != 1) { + throw new NotUpdateException("db에 insert가 수행되지 못했습니다."); + } + return wallet; + } + + @Override + public void deleteById(UUID walletId) { + String sql = "DELETE FROM wallet WHERE id = ?"; + int update = jdbcTemplate.update(sql, walletId.toString()); + if (update != 1) throw new NotUpdateException("db에 delete가 수행되지 못했습니다."); + } +} diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletQueryRepository.java similarity index 61% rename from src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletRepository.java rename to src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletQueryRepository.java index 46ee00dc40..efcee0cf38 100644 --- a/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletRepository.java +++ b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletQueryRepository.java @@ -6,7 +6,7 @@ import org.prgrms.kdt.voucher.domain.DiscountPolicy; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.wallet.domain.JoinedWallet; +import org.prgrms.kdt.wallet.domain.QueryWallet; import org.prgrms.kdt.wallet.domain.Wallet; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -17,8 +17,8 @@ import java.util.UUID; @Repository -public class JdbcWalletRepository implements WalletRepository { - private static final RowMapper joinedWalletRowMapper = (resultSet, i) -> { +public class JdbcWalletQueryRepository implements WalletQueryRepository { + private static final RowMapper QueryWalletRowMapper = (resultSet, i) -> { UUID walletId = UUID.fromString(resultSet.getString("W.id")); UUID memberId = UUID.fromString(resultSet.getString("W.member_id")); @@ -32,57 +32,38 @@ public class JdbcWalletRepository implements WalletRepository { Member member = new Member(memberId, memberName, memberStatus); Voucher voucher = new Voucher(voucherId, voucherType, discountPolicy, createdAt); - return new JoinedWallet(walletId, member, voucher); + return new QueryWallet(walletId, member, voucher); }; private final JdbcTemplate jdbcTemplate; - public JdbcWalletRepository(JdbcTemplate jdbcTemplate) { + public JdbcWalletQueryRepository(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override - public Wallet insert(Wallet wallet) { - String sql = "INSERT INTO wallet(id, member_id, voucher_id) VALUES (?, ?, ?)"; - int update = jdbcTemplate.update(sql, wallet.getWalletId().toString(), - wallet.getMemberId().toString(), - wallet.getVoucherId().toString()); - if (update != 1) { - throw new NotUpdateException("db에 insert가 수행되지 못했습니다."); - } - return wallet; - } - - @Override - public List findWithMemeberAndVoucherByMemberId(UUID memberId) { + public List findWithMemeberAndVoucherByMemberId(UUID memberId) { String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount, V.created_at from wallet W " + "INNER JOIN member M ON W.member_id = M.id " + "INNER JOIN voucher V ON W.voucher_id = V.id " + "WHERE W.member_id = ?"; - return jdbcTemplate.query(sql, joinedWalletRowMapper, memberId.toString()); + return jdbcTemplate.query(sql, QueryWalletRowMapper, memberId.toString()); } @Override - public List findWithMemeberAndVoucherByVoucherId(UUID voucherId) { + public List findWithMemeberAndVoucherByVoucherId(UUID voucherId) { String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount, V.created_at from wallet W " + "INNER JOIN member M ON W.member_id = M.id " + "INNER JOIN voucher V ON W.voucher_id = V.id " + "WHERE W.voucher_id = ?"; - return jdbcTemplate.query(sql, joinedWalletRowMapper, voucherId.toString()); - } - - @Override - public void deleteById(UUID walletId) { - String sql = "DELETE FROM wallet WHERE id = ?"; - int update = jdbcTemplate.update(sql, walletId.toString()); - if (update != 1) throw new NotUpdateException("db에 delete가 수행되지 못했습니다."); + return jdbcTemplate.query(sql, QueryWalletRowMapper, voucherId.toString()); } @Override - public List findWithMemeberAndVoucherAll() { + public List findWithMemeberAndVoucherAll() { String sql = "select W.id, W.member_id, M.name, M.status, W.voucher_id, V.type, V.amount, V.created_at from wallet W " + "INNER JOIN member M ON W.member_id = M.id " + "INNER JOIN voucher V ON W.voucher_id = V.id"; - return jdbcTemplate.query(sql, joinedWalletRowMapper); + return jdbcTemplate.query(sql, QueryWalletRowMapper); } } \ No newline at end of file diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/WalletCommandRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/WalletCommandRepository.java new file mode 100644 index 0000000000..56d8940dfe --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/dao/WalletCommandRepository.java @@ -0,0 +1,11 @@ +package org.prgrms.kdt.wallet.dao; + +import org.prgrms.kdt.wallet.domain.Wallet; + +import java.util.UUID; + +public interface WalletCommandRepository { + Wallet insert(Wallet wallet); + + void deleteById(UUID walletId); +} diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java new file mode 100644 index 0000000000..1f3d8c4fbe --- /dev/null +++ b/src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java @@ -0,0 +1,15 @@ +package org.prgrms.kdt.wallet.dao; + +import org.prgrms.kdt.wallet.domain.QueryWallet; +import org.prgrms.kdt.wallet.domain.Wallet; + +import java.util.List; +import java.util.UUID; + +public interface WalletQueryRepository { + List findWithMemeberAndVoucherByMemberId(UUID memberId); + + List findWithMemeberAndVoucherByVoucherId(UUID voucherId); + + List findWithMemeberAndVoucherAll(); +} diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/WalletRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/WalletRepository.java deleted file mode 100644 index a679b9b2c3..0000000000 --- a/src/main/java/org/prgrms/kdt/wallet/dao/WalletRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.prgrms.kdt.wallet.dao; - -import org.prgrms.kdt.wallet.domain.JoinedWallet; -import org.prgrms.kdt.wallet.domain.Wallet; - -import java.util.List; -import java.util.UUID; - -public interface WalletRepository { - Wallet insert(Wallet wallet); - - List findWithMemeberAndVoucherByMemberId(UUID memberId); - - List findWithMemeberAndVoucherByVoucherId(UUID voucherId); - - void deleteById(UUID walletId); - - List findWithMemeberAndVoucherAll(); -} diff --git a/src/main/java/org/prgrms/kdt/wallet/domain/JoinedWallet.java b/src/main/java/org/prgrms/kdt/wallet/domain/QueryWallet.java similarity index 84% rename from src/main/java/org/prgrms/kdt/wallet/domain/JoinedWallet.java rename to src/main/java/org/prgrms/kdt/wallet/domain/QueryWallet.java index 2688873f41..1515a0ac2f 100644 --- a/src/main/java/org/prgrms/kdt/wallet/domain/JoinedWallet.java +++ b/src/main/java/org/prgrms/kdt/wallet/domain/QueryWallet.java @@ -5,12 +5,12 @@ import java.util.UUID; -public class JoinedWallet { +public class QueryWallet { private final UUID walletId; private final Member member; private final Voucher voucher; - public JoinedWallet(UUID walletId, Member member, Voucher voucher) { + public QueryWallet(UUID walletId, Member member, Voucher voucher) { this.walletId = walletId; this.member = member; this.voucher = voucher; diff --git a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java index ffd92325fb..bf139bd1c9 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/WalletService.java @@ -4,13 +4,13 @@ import org.prgrms.kdt.global.exception.EntityNotFoundException; import org.prgrms.kdt.member.dao.MemberRepository; import org.prgrms.kdt.voucher.dao.VoucherRepository; -import org.prgrms.kdt.wallet.dao.WalletRepository; -import org.prgrms.kdt.wallet.domain.JoinedWallet; +import org.prgrms.kdt.wallet.dao.WalletCommandRepository; +import org.prgrms.kdt.wallet.dao.WalletQueryRepository; +import org.prgrms.kdt.wallet.domain.QueryWallet; import org.prgrms.kdt.wallet.domain.Wallet; import org.prgrms.kdt.wallet.service.dto.CreateWalletRequest; import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; import org.prgrms.kdt.wallet.service.dto.WalletResponse; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,13 +22,15 @@ public class WalletService { private final MemberRepository memberRepository; private final VoucherRepository voucherRepository; - private final WalletRepository walletRepository; + private final WalletQueryRepository walletQueryRepository; + private final WalletCommandRepository walletCommandRepository; private final Generator generator; - public WalletService(MemberRepository memberRepository, VoucherRepository voucherRepository, WalletRepository walletRepository, Generator generator) { + public WalletService(MemberRepository memberRepository, VoucherRepository voucherRepository, WalletQueryRepository walletQueryRepository, WalletCommandRepository walletCommandRepository, Generator generator) { this.memberRepository = memberRepository; this.voucherRepository = voucherRepository; - this.walletRepository = walletRepository; + this.walletQueryRepository = walletQueryRepository; + this.walletCommandRepository = walletCommandRepository; this.generator = generator; } @@ -40,26 +42,26 @@ public WalletResponse assignVoucherToCustomer(CreateWalletRequest request) { .orElseThrow(() -> new EntityNotFoundException("존재하지 않는 바우처 입니다.")); Wallet wallet = new Wallet(generator.generateId(), request.memberId(), request.voucherId()); - return new WalletResponse(walletRepository.insert(wallet)); + return new WalletResponse(walletCommandRepository.insert(wallet)); } public JoinedWalletResponses findVouchersByMemberId(UUID memberId) { - List joinedWallets = walletRepository.findWithMemeberAndVoucherByMemberId(memberId); - return JoinedWalletResponses.of(joinedWallets); + List queryWallets = walletQueryRepository.findWithMemeberAndVoucherByMemberId(memberId); + return JoinedWalletResponses.of(queryWallets); } @Transactional public void deleteWalletById(UUID walletId) { - walletRepository.deleteById(walletId); + walletCommandRepository.deleteById(walletId); } public JoinedWalletResponses findMembersByVoucherId(UUID voucherId) { - List joinedWallets = walletRepository.findWithMemeberAndVoucherByVoucherId(voucherId); - return JoinedWalletResponses.of(joinedWallets); + List queryWallets = walletQueryRepository.findWithMemeberAndVoucherByVoucherId(voucherId); + return JoinedWalletResponses.of(queryWallets); } public JoinedWalletResponses findAllWallet() { - List joinedWallets = walletRepository.findWithMemeberAndVoucherAll(); - return JoinedWalletResponses.of(joinedWallets); + List queryWallets = walletQueryRepository.findWithMemeberAndVoucherAll(); + return JoinedWalletResponses.of(queryWallets); } } diff --git a/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponse.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponse.java index bc3109ffe9..923ebc3654 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponse.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponse.java @@ -1,14 +1,14 @@ package org.prgrms.kdt.wallet.service.dto; -import org.prgrms.kdt.wallet.domain.JoinedWallet; +import org.prgrms.kdt.wallet.domain.QueryWallet; import java.util.UUID; public record JoinedWalletResponse(UUID walletId, String memberName, String voucherType, double voucherAmount) { - public JoinedWalletResponse(JoinedWallet joinedWallet) { - this(joinedWallet.getWalletId(), - joinedWallet.getMember().getMemberName(), - joinedWallet.getVoucher().getVoucherType().getDescripton(), - joinedWallet.getVoucher().getDiscountPolicy().getAmount()); + public JoinedWalletResponse(QueryWallet queryWallet) { + this(queryWallet.getWalletId(), + queryWallet.getMember().getMemberName(), + queryWallet.getVoucher().getVoucherType().getDescripton(), + queryWallet.getVoucher().getDiscountPolicy().getAmount()); } } diff --git a/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponses.java b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponses.java index bf687b2580..bb2a4d48fd 100644 --- a/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponses.java +++ b/src/main/java/org/prgrms/kdt/wallet/service/dto/JoinedWalletResponses.java @@ -1,14 +1,14 @@ package org.prgrms.kdt.wallet.service.dto; -import org.prgrms.kdt.wallet.domain.JoinedWallet; +import org.prgrms.kdt.wallet.domain.QueryWallet; import java.util.List; import java.util.stream.Collectors; public record JoinedWalletResponses(List wallets) { - public static JoinedWalletResponses of(List joinedWallets) { - List walletsResponse = joinedWallets.stream().map(JoinedWalletResponse::new).collect(Collectors.toList()); + public static JoinedWalletResponses of(List queryWallets) { + List walletsResponse = queryWallets.stream().map(JoinedWalletResponse::new).collect(Collectors.toList()); return new JoinedWalletResponses(walletsResponse); } diff --git a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java index 965a5ff1e5..255b238116 100644 --- a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java +++ b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java @@ -10,8 +10,8 @@ import org.prgrms.kdt.voucher.dao.VoucherRepository; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.wallet.dao.WalletRepository; -import org.prgrms.kdt.wallet.domain.JoinedWallet; +import org.prgrms.kdt.wallet.dao.WalletQueryRepository; +import org.prgrms.kdt.wallet.domain.QueryWallet; import org.prgrms.kdt.wallet.domain.Wallet; import org.prgrms.kdt.wallet.service.dto.CreateWalletRequest; import org.prgrms.kdt.wallet.service.dto.JoinedWalletResponses; @@ -37,7 +37,7 @@ class WalletServiceTest { @Autowired WalletService walletService; @Autowired - WalletRepository walletRepository; + WalletQueryRepository walletQueryRepository; @Autowired MemberRepository memberRepository; @Autowired @@ -102,8 +102,8 @@ void deleteWalletById_correctId_correctResponseSize() { walletService.deleteWalletById(UUID.fromString("f7c23946-7174-4f56-b464-3ed1fa5224d7")); //then - List findJoinedWalletList = walletRepository.findWithMemeberAndVoucherByMemberId(UUID.fromString("1a3d5b3e-2d12-4958-9ef3-52d424485895")); - assertThat(findJoinedWalletList.size()).isEqualTo(1); + List findQueryWalletList = walletQueryRepository.findWithMemeberAndVoucherByMemberId(UUID.fromString("1a3d5b3e-2d12-4958-9ef3-52d424485895")); + assertThat(findQueryWalletList.size()).isEqualTo(1); } @Test @@ -121,10 +121,10 @@ void findMembersByVoucherId_correctVoucherId_correctMemberName() { @DisplayName("setup을 통해 저장된 월렛2개 전체 조회를 통해 사이즈 확인") void findAllWallet_collectWalletSize() { //when - List joinedWallets = walletRepository.findWithMemeberAndVoucherAll(); + List queryWallets = walletQueryRepository.findWithMemeberAndVoucherAll(); //then - assertThat(joinedWallets.size()).isEqualTo(2); + assertThat(queryWallets.size()).isEqualTo(2); } void setupInsertWallets() { @@ -147,7 +147,7 @@ void setupInsertWallets() { memberRepository.insert(member2); voucherRepository.insert(voucher1); voucherRepository.insert(voucher2); - walletRepository.insert(wallet1); - walletRepository.insert(wallet2); + walletQueryRepository.insert(wallet1); + walletQueryRepository.insert(wallet2); } } \ No newline at end of file From a5538e6b411d23a9cc4aed7d1c778869433e74af Mon Sep 17 00:00:00 2001 From: young970 Date: Mon, 31 Jul 2023 04:52:42 +0900 Subject: [PATCH 15/18] =?UTF-8?q?refactor:=20=EB=8F=99=EC=A0=81=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=EB=A5=BC=20=ED=86=B5=ED=95=B4=20findAll=20API?= =?UTF-8?q?=EC=97=90=20=EC=A1=B0=EA=B1=B4=20=EA=B2=80=EC=83=89=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9,=20create=20API=20201=EB=A1=9C=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VoucherApiController.java | 21 +++++++++++-------- .../voucher/controller/VoucherController.java | 2 +- .../controller/VoucherViewController.java | 2 +- .../voucher/dao/JdbcVoucherRepository.java | 12 +++++++++-- .../voucher/dao/MemoryVoucherRepository.java | 4 ++-- .../kdt/voucher/dao/VoucherRepository.java | 2 +- .../kdt/voucher/service/VoucherService.java | 4 ++-- .../dao/MemoryVoucherRepositoryTest.java | 4 +++- .../kdt/wallet/service/WalletServiceTest.java | 11 ++++++---- 9 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java index 0fd3d7b8ea..0d198b5125 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -9,8 +9,10 @@ import org.prgrms.kdt.voucher.service.dto.VoucherResponses; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; import javax.validation.Valid; +import java.net.URI; import java.util.UUID; @RequestMapping("/api/vouchers") @@ -27,7 +29,14 @@ public VoucherApiController(VoucherService voucherService, ControllerVoucherMapp @PostMapping public ResponseEntity create(@RequestBody @Valid CreateVoucherApiRequest request) { VoucherResponse response = voucherService.createVoucher(mapper.convertRequest(request)); - return ResponseEntity.ok(response); + + URI uri = ServletUriComponentsBuilder + .fromCurrentRequest() + .path("/{id}") + .buildAndExpand(response.voucherId()) + .toUri(); + + return ResponseEntity.created(uri).body(response); } @GetMapping("/{id}") @@ -36,15 +45,9 @@ public ResponseEntity findById(@PathVariable UUID id) { return ResponseEntity.ok(response); } - @GetMapping("/type") - public ResponseEntity findByType(@RequestParam VoucherType voucherType) { - VoucherResponses response = voucherService.findByType(voucherType); - return ResponseEntity.ok(response); - } - @GetMapping - public ResponseEntity findAll() { - VoucherResponses response = voucherService.findAll(); + public ResponseEntity findAll(@RequestParam(required = false) VoucherType voucherType) { + VoucherResponses response = voucherService.findAll(voucherType); return ResponseEntity.ok(response); } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java index 0592321f6b..9001655bb3 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherController.java @@ -21,6 +21,6 @@ public void create(CreateVoucherApiRequest request) { } public VoucherResponses findAll() { - return voucherService.findAll(); + return voucherService.findAll(null); } } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index f1d4ed04e5..bf1bec338d 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -42,7 +42,7 @@ public String findById(@PathVariable UUID id, Model model) { @GetMapping public String findAll(Model model) { - VoucherResponses response = voucherService.findAll(); + VoucherResponses response = voucherService.findAll(null); model.addAttribute("vouchers", response); return "voucher/vouchers"; } diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java index b0348b4817..878780f16a 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java @@ -11,6 +11,7 @@ import java.sql.Timestamp; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -59,8 +60,15 @@ public Voucher insert(Voucher voucher) { } @Override - public List findAll() { - return jdbcTemplate.query("select id, type, amount, created_at from voucher", voucherRowMapper); + public List findAll(VoucherType voucherType) { + StringBuilder query = new StringBuilder("SELECT id, type, amount, created_at FROM voucher WHERE 1 = 1"); + ArrayList queryArgs = new ArrayList<>(); + + if (voucherType != null){ + query.append(" AND type = ?"); + queryArgs.add(String.valueOf(voucherType.getDescripton())); + } + return jdbcTemplate.query(query.toString(), voucherRowMapper, queryArgs.toArray()); } @Override diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java index c491699c3a..6528269c60 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java @@ -29,8 +29,8 @@ public Voucher insert(Voucher voucher) { } @Override - public List findAll() { - return List.copyOf(storage.values()); + public List findAll(VoucherType voucherType) { + throw new RuntimeException("지원이 중지된 기능입니다."); } @Override diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java index d7a5109b4e..85e592821e 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java @@ -12,7 +12,7 @@ public interface VoucherRepository { Voucher insert(Voucher voucher); - List findAll(); + List findAll(VoucherType voucherType); void deleteById(UUID id); diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index 1fa948fe23..b60a1bf4c9 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -31,8 +31,8 @@ public VoucherResponse createVoucher(CreateVoucherRequest request) { return new VoucherResponse(voucher); } - public VoucherResponses findAll() { - return VoucherResponses.of(voucherRepository.findAll()); + public VoucherResponses findAll(VoucherType voucherType) { + return VoucherResponses.of(voucherRepository.findAll(voucherType)); } public VoucherDetailResponse findById(UUID id) { diff --git a/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java b/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java index ff83d40aac..ea3a45ec22 100644 --- a/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepositoryTest.java @@ -1,6 +1,7 @@ package org.prgrms.kdt.voucher.dao; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -73,6 +74,7 @@ void insert() { assertThat(foundVoucher.get(), is(insertVoucher)); } + @Disabled @ParameterizedTest @MethodSource("voucherSource") @DisplayName("바우처 전체 조회 테스트") @@ -84,7 +86,7 @@ void findAll() { memoryVoucherRepository.insert(savedVoucher2); //when - List foundVoucherList = memoryVoucherRepository.findAll(); + List foundVoucherList = memoryVoucherRepository.findAll(null); //then assertThat(foundVoucherList, containsInAnyOrder(savedVoucher1, savedVoucher2)); diff --git a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java index 255b238116..00a33f84f7 100644 --- a/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java +++ b/src/test/java/org/prgrms/kdt/wallet/service/WalletServiceTest.java @@ -10,6 +10,7 @@ import org.prgrms.kdt.voucher.dao.VoucherRepository; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.wallet.dao.WalletCommandRepository; import org.prgrms.kdt.wallet.dao.WalletQueryRepository; import org.prgrms.kdt.wallet.domain.QueryWallet; import org.prgrms.kdt.wallet.domain.Wallet; @@ -39,6 +40,8 @@ class WalletServiceTest { @Autowired WalletQueryRepository walletQueryRepository; @Autowired + WalletCommandRepository walletCommandRepository; + @Autowired MemberRepository memberRepository; @Autowired VoucherRepository voucherRepository; @@ -59,7 +62,7 @@ void assignVoucherToCustomer_correctRequest_correctWalletResponse() { UUID expectMemberId = UUID.fromString("9a3d5b3e-2d12-4958-9ef3-52d424485895"); Member member = memberRepository.insert(new Member(expectMemberId, "giho", MemberStatus.COMMON)); Voucher voucher = voucherRepository.insert(new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(35.0), LocalDateTime.now())); - CreateWalletRequest request = new CreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); + CreateWalletRequest request = new CreateWalletRequest(member.getMemberId(), voucher.getVoucherId()); //when WalletResponse resultWallet = walletService.assignVoucherToCustomer(request); @@ -75,7 +78,7 @@ void assignVoucherToCustomer_incorrectRequest_EntityNotFoundException() { //given Member member = memberRepository.insert(new Member(UUID.randomUUID(), "giho", MemberStatus.COMMON)); Voucher voucher = new Voucher(UUID.randomUUID(), VoucherType.FIXED, VoucherType.FIXED.createPolicy(30.0), LocalDateTime.now()); - CreateWalletRequest request = new CreateWalletRequest(UUID.randomUUID(), member.getMemberId(), voucher.getVoucherId()); + CreateWalletRequest request = new CreateWalletRequest(member.getMemberId(), voucher.getVoucherId()); //when Exception exception = catchException(() -> walletService.assignVoucherToCustomer(request)); @@ -147,7 +150,7 @@ void setupInsertWallets() { memberRepository.insert(member2); voucherRepository.insert(voucher1); voucherRepository.insert(voucher2); - walletQueryRepository.insert(wallet1); - walletQueryRepository.insert(wallet2); + walletCommandRepository.insert(wallet1); + walletCommandRepository.insert(wallet2); } } \ No newline at end of file From dbe38402ebd191683f4f69300b3a847ab05261ce Mon Sep 17 00:00:00 2001 From: young970 Date: Tue, 1 Aug 2023 03:38:16 +0900 Subject: [PATCH 16/18] =?UTF-8?q?feat:=20=EC=A1=B0=ED=9A=8C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=84=A4=EC=9D=B4=EC=85=98=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ControllerVoucherMapperImpl.java | 23 +++++++++++- .../kdt/global/ApiExceptionHandler.java | 1 - .../controller/VoucherApiController.java | 6 +-- .../controller/dto/SearchApiRequest.java | 37 +++++++++++++++++++ .../kdt/voucher/controller/dto/Test.java | 33 +++++++++++++++++ .../mapper/ControllerVoucherMapper.java | 3 ++ .../voucher/dao/JdbcVoucherRepository.java | 10 ++++- .../voucher/dao/MemoryVoucherRepository.java | 3 +- .../kdt/voucher/dao/VoucherRepository.java | 3 +- .../kdt/voucher/service/VoucherService.java | 9 ++--- .../voucher/service/dto/SearchRequest.java | 33 +++++++++++++++++ .../voucher/service/VoucherServiceTest.java | 11 +++--- 12 files changed, 151 insertions(+), 21 deletions(-) create mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/dto/SearchApiRequest.java create mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java create mode 100644 src/main/java/org/prgrms/kdt/voucher/service/dto/SearchRequest.java diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java index f40fcd13c8..b500d5fdc4 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -2,13 +2,15 @@ import javax.annotation.processing.Generated; import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; +import org.prgrms.kdt.voucher.controller.dto.SearchApiRequest; import org.prgrms.kdt.voucher.domain.VoucherType; import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.SearchRequest; import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-30T02:19:38+0900", + date = "2023-08-01T03:14:27+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component @@ -30,4 +32,23 @@ public CreateVoucherRequest convertRequest(CreateVoucherApiRequest createVoucher return createVoucherRequest; } + + @Override + public SearchRequest convertRequest(SearchApiRequest searchApiRequest) { + if ( searchApiRequest == null ) { + return null; + } + + long page = 0L; + long recordSize = 0L; + VoucherType voucherType = null; + + page = searchApiRequest.getPage(); + recordSize = searchApiRequest.getRecordSize(); + voucherType = searchApiRequest.getVoucherType(); + + SearchRequest searchRequest = new SearchRequest( page, recordSize, voucherType ); + + return searchRequest; + } } diff --git a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java index d244506e97..7f1a26741d 100644 --- a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java +++ b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java @@ -16,7 +16,6 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.servlet.NoHandlerFoundException; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; import javax.servlet.http.HttpServletRequest; diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java index 0d198b5125..c8ab92f60b 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherApiController.java @@ -1,8 +1,8 @@ package org.prgrms.kdt.voucher.controller; +import org.prgrms.kdt.voucher.controller.dto.SearchApiRequest; import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; -import org.prgrms.kdt.voucher.domain.VoucherType; import org.prgrms.kdt.voucher.service.VoucherService; import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponse; @@ -46,8 +46,8 @@ public ResponseEntity findById(@PathVariable UUID id) { } @GetMapping - public ResponseEntity findAll(@RequestParam(required = false) VoucherType voucherType) { - VoucherResponses response = voucherService.findAll(voucherType); + public ResponseEntity findAllBy(@ModelAttribute @Valid SearchApiRequest request) { + VoucherResponses response = voucherService.findAll(mapper.convertRequest(request)); return ResponseEntity.ok(response); } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/dto/SearchApiRequest.java b/src/main/java/org/prgrms/kdt/voucher/controller/dto/SearchApiRequest.java new file mode 100644 index 0000000000..602c9f652e --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/controller/dto/SearchApiRequest.java @@ -0,0 +1,37 @@ +package org.prgrms.kdt.voucher.controller.dto; + +import org.prgrms.kdt.voucher.domain.VoucherType; + +import javax.validation.constraints.Min; + +public class SearchApiRequest { + @Min(1) + private final long page; + @Min(0) + private final long recordSize; + private final long offset; + private final VoucherType voucherType; + + public SearchApiRequest(long page, long recordSize, VoucherType voucherType) { + this.page = page; + this.recordSize = recordSize; + this.offset = (page - 1) * recordSize; + this.voucherType = voucherType; + } + + public long getPage() { + return page; + } + + public long getRecordSize() { + return recordSize; + } + + public long getOffset() { + return offset; + } + + public VoucherType getVoucherType() { + return voucherType; + } +} diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java b/src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java new file mode 100644 index 0000000000..062f87e978 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java @@ -0,0 +1,33 @@ +package org.prgrms.kdt.voucher.controller.dto; + +import org.prgrms.kdt.voucher.domain.VoucherType; + +public class Test { + private final long page; + private final long recordSize; + private final long offset; + private final VoucherType voucherType; + + public Test(long page, long recordSize, VoucherType voucherType) { + this.page = page; + this.recordSize = recordSize; + this.offset = (page - 1) * recordSize; + this.voucherType = voucherType; + } + + public long getPage() { + return page; + } + + public long getRecordSize() { + return recordSize; + } + + public long getOffset() { + return offset; + } + + public VoucherType getVoucherType() { + return voucherType; + } +} diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java index fbf0e332d1..4eedd19563 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapper.java @@ -2,9 +2,12 @@ import org.mapstruct.Mapper; import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; +import org.prgrms.kdt.voucher.controller.dto.SearchApiRequest; import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.SearchRequest; @Mapper(componentModel = "spring") public interface ControllerVoucherMapper { CreateVoucherRequest convertRequest(CreateVoucherApiRequest createVoucherApiRequest); + SearchRequest convertRequest(SearchApiRequest searchApiRequest); } diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java index 878780f16a..14701522f0 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/JdbcVoucherRepository.java @@ -4,6 +4,7 @@ import org.prgrms.kdt.voucher.domain.DiscountPolicy; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.voucher.service.dto.SearchRequest; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -60,14 +61,19 @@ public Voucher insert(Voucher voucher) { } @Override - public List findAll(VoucherType voucherType) { + public List findAll(SearchRequest searchRequest) { StringBuilder query = new StringBuilder("SELECT id, type, amount, created_at FROM voucher WHERE 1 = 1"); - ArrayList queryArgs = new ArrayList<>(); + ArrayList queryArgs = new ArrayList<>(); + VoucherType voucherType = searchRequest.getVoucherType(); if (voucherType != null){ query.append(" AND type = ?"); queryArgs.add(String.valueOf(voucherType.getDescripton())); } + + query.append(" LIMIT ?, ?"); + queryArgs.add(searchRequest.getOffset()); + queryArgs.add(searchRequest.getRecordSize()); return jdbcTemplate.query(query.toString(), voucherRowMapper, queryArgs.toArray()); } diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java index 6528269c60..cff66dc36a 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/MemoryVoucherRepository.java @@ -2,6 +2,7 @@ import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.voucher.service.dto.SearchRequest; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -29,7 +30,7 @@ public Voucher insert(Voucher voucher) { } @Override - public List findAll(VoucherType voucherType) { + public List findAll(SearchRequest searchRequest) { throw new RuntimeException("지원이 중지된 기능입니다."); } diff --git a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java b/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java index 85e592821e..c38dc27ec8 100644 --- a/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java +++ b/src/main/java/org/prgrms/kdt/voucher/dao/VoucherRepository.java @@ -2,6 +2,7 @@ import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; +import org.prgrms.kdt.voucher.service.dto.SearchRequest; import java.util.List; import java.util.Optional; @@ -12,7 +13,7 @@ public interface VoucherRepository { Voucher insert(Voucher voucher); - List findAll(VoucherType voucherType); + List findAll(SearchRequest searchRequest); void deleteById(UUID id); diff --git a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java index b60a1bf4c9..0d30e76f92 100644 --- a/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java +++ b/src/main/java/org/prgrms/kdt/voucher/service/VoucherService.java @@ -4,10 +4,7 @@ import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.dao.VoucherRepository; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; -import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; -import org.prgrms.kdt.voucher.service.dto.VoucherResponse; -import org.prgrms.kdt.voucher.service.dto.VoucherResponses; +import org.prgrms.kdt.voucher.service.dto.*; import org.prgrms.kdt.voucher.service.mapper.ServiceVoucherMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,8 +28,8 @@ public VoucherResponse createVoucher(CreateVoucherRequest request) { return new VoucherResponse(voucher); } - public VoucherResponses findAll(VoucherType voucherType) { - return VoucherResponses.of(voucherRepository.findAll(voucherType)); + public VoucherResponses findAll(SearchRequest request) { + return VoucherResponses.of(voucherRepository.findAll(request)); } public VoucherDetailResponse findById(UUID id) { diff --git a/src/main/java/org/prgrms/kdt/voucher/service/dto/SearchRequest.java b/src/main/java/org/prgrms/kdt/voucher/service/dto/SearchRequest.java new file mode 100644 index 0000000000..d8379e1046 --- /dev/null +++ b/src/main/java/org/prgrms/kdt/voucher/service/dto/SearchRequest.java @@ -0,0 +1,33 @@ +package org.prgrms.kdt.voucher.service.dto; + +import org.prgrms.kdt.voucher.domain.VoucherType; + +public class SearchRequest { + private final long page; + private final long recordSize; + private final long offset; + private final VoucherType voucherType; + + public SearchRequest(long page, long recordSize, VoucherType voucherType) { + this.page = page; + this.recordSize = recordSize; + this.offset = (page - 1) * recordSize; + this.voucherType = voucherType; + } + + public long getPage() { + return page; + } + + public long getRecordSize() { + return recordSize; + } + + public long getOffset() { + return offset; + } + + public VoucherType getVoucherType() { + return voucherType; + } +} \ No newline at end of file diff --git a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java index fea37381eb..c60a117ecb 100644 --- a/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java +++ b/src/test/java/org/prgrms/kdt/voucher/service/VoucherServiceTest.java @@ -6,10 +6,7 @@ import org.prgrms.kdt.voucher.dao.JdbcVoucherRepository; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; -import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; -import org.prgrms.kdt.voucher.service.dto.VoucherResponse; -import org.prgrms.kdt.voucher.service.dto.VoucherResponses; -import org.prgrms.kdt.voucher.service.dto.CreateVoucherRequest; +import org.prgrms.kdt.voucher.service.dto.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -58,7 +55,8 @@ void createVoucher_correctRequest_correctAmount() { @DisplayName("바우처 전체 조회하여 사이즈 확인") void findAll_correctSize() { //when - VoucherResponses vouchers = voucherService.findAll(); + SearchRequest searchRequest = new SearchRequest(1, 10, null); + VoucherResponses vouchers = voucherService.findAll(searchRequest); //then int resultSize = vouchers.vouchers().size(); @@ -88,7 +86,8 @@ void deleteById_correctId(){ voucherService.deleteById(uuid); //then - int size = jdbcVoucherRepository.findAll().size(); + SearchRequest searchRequest = new SearchRequest(1, 10, null); + int size = jdbcVoucherRepository.findAll(searchRequest).size(); assertThat(size).isEqualTo(2); } From f14c2705fd0885d4812fe71be6b097cbfdfabd4a Mon Sep 17 00:00:00 2001 From: young970 Date: Tue, 1 Aug 2023 22:31:36 +0900 Subject: [PATCH 17/18] =?UTF-8?q?refactor:=20pk=EA=B0=92=20=EC=88=9C?= =?UTF-8?q?=EC=B0=A8=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EB=90=98=EB=8A=94=20UUID=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + .../mapper/ControllerMemberMapperImpl.java | 2 +- .../mapper/ControllerVoucherMapperImpl.java | 2 +- .../mapper/ControllerWalletMapperImpl.java | 2 +- .../kdt/global/ApiExceptionHandler.java | 4 +-- .../java/org/prgrms/kdt/global/Generator.java | 1 + .../org/prgrms/kdt/global/GeneratorImp.java | 5 ++- .../controller/VoucherViewController.java | 4 ++- .../kdt/voucher/controller/dto/Test.java | 33 ------------------- .../wallet/dao/JdbcWalletQueryRepository.java | 2 -- .../kdt/wallet/dao/WalletQueryRepository.java | 1 - 11 files changed, 14 insertions(+), 43 deletions(-) delete mode 100644 src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java diff --git a/build.gradle b/build.gradle index 0ee3fe4105..ca8455c637 100644 --- a/build.gradle +++ b/build.gradle @@ -33,6 +33,7 @@ dependencies { runtimeOnly 'mysql:mysql-connector-java:8.0.32' implementation 'org.springframework.boot:spring-boot-starter-validation' + implementation "com.fasterxml.uuid:java-uuid-generator:4.0.1" } tasks.named('test') { diff --git a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java index eb46740284..497803b1ff 100644 --- a/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/member/controller/mapper/ControllerMemberMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-30T02:19:39+0900", + date = "2023-08-01T21:55:33+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java index b500d5fdc4..e480800861 100644 --- a/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/voucher/controller/mapper/ControllerVoucherMapperImpl.java @@ -10,7 +10,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-08-01T03:14:27+0900", + date = "2023-08-01T21:55:34+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java index 28204833b8..db257ea416 100644 --- a/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java +++ b/src/main/generated/org/prgrms/kdt/wallet/controller/mapper/ControllerWalletMapperImpl.java @@ -8,7 +8,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-07-30T02:23:50+0900", + date = "2023-08-01T21:55:34+0900", comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.7 (Oracle Corporation)" ) @Component diff --git a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java index 7f1a26741d..03de7b69a8 100644 --- a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java +++ b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java @@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest; @RestControllerAdvice -public class ApiExceptionHandler{ +public class ApiExceptionHandler { private static final Logger logger = LoggerFactory.getLogger(ApiExceptionHandler.class); @ExceptionHandler(BindException.class) @@ -45,7 +45,7 @@ public ResponseEntity handleBadRequestException(HttpServletReques } @ExceptionHandler(EntityNotFoundException.class) - public ResponseEntity handleNotFoundException(HttpServletRequest request, EntityNotFoundException e){ + public ResponseEntity handleNotFoundException(HttpServletRequest request, EntityNotFoundException e) { int statusCode = HttpStatus.NOT_FOUND.value(); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(getErrorResponse(statusCode, e.getMessage(), request.getRequestURI())); } diff --git a/src/main/java/org/prgrms/kdt/global/Generator.java b/src/main/java/org/prgrms/kdt/global/Generator.java index 3e89144207..c701fcc6e7 100644 --- a/src/main/java/org/prgrms/kdt/global/Generator.java +++ b/src/main/java/org/prgrms/kdt/global/Generator.java @@ -5,5 +5,6 @@ public interface Generator { UUID generateId(); + LocalDateTime generateTime(); } diff --git a/src/main/java/org/prgrms/kdt/global/GeneratorImp.java b/src/main/java/org/prgrms/kdt/global/GeneratorImp.java index c83d78148a..84098f24f1 100644 --- a/src/main/java/org/prgrms/kdt/global/GeneratorImp.java +++ b/src/main/java/org/prgrms/kdt/global/GeneratorImp.java @@ -1,5 +1,6 @@ package org.prgrms.kdt.global; +import com.fasterxml.uuid.Generators; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @@ -12,7 +13,9 @@ private GeneratorImp() { @Override public UUID generateId() { - return UUID.randomUUID(); + UUID generateId = Generators.timeBasedGenerator().generate(); + String[] idArr = generateId.toString().split("-"); + return UUID.fromString(idArr[2]+"-"+idArr[1]+"-"+idArr[0]+"-"+idArr[3]+"-"+idArr[4]); } @Override diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java index bf1bec338d..a4a34e80ad 100644 --- a/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java +++ b/src/main/java/org/prgrms/kdt/voucher/controller/VoucherViewController.java @@ -1,6 +1,7 @@ package org.prgrms.kdt.voucher.controller; import org.prgrms.kdt.voucher.controller.dto.CreateVoucherApiRequest; +import org.prgrms.kdt.voucher.controller.dto.SearchApiRequest; import org.prgrms.kdt.voucher.controller.mapper.ControllerVoucherMapper; import org.prgrms.kdt.voucher.service.dto.VoucherDetailResponse; import org.prgrms.kdt.voucher.service.dto.VoucherResponses; @@ -42,7 +43,8 @@ public String findById(@PathVariable UUID id, Model model) { @GetMapping public String findAll(Model model) { - VoucherResponses response = voucherService.findAll(null); + SearchApiRequest request = new SearchApiRequest(1, 100, null); + VoucherResponses response = voucherService.findAll(mapper.convertRequest(request)); model.addAttribute("vouchers", response); return "voucher/vouchers"; } diff --git a/src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java b/src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java deleted file mode 100644 index 062f87e978..0000000000 --- a/src/main/java/org/prgrms/kdt/voucher/controller/dto/Test.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.prgrms.kdt.voucher.controller.dto; - -import org.prgrms.kdt.voucher.domain.VoucherType; - -public class Test { - private final long page; - private final long recordSize; - private final long offset; - private final VoucherType voucherType; - - public Test(long page, long recordSize, VoucherType voucherType) { - this.page = page; - this.recordSize = recordSize; - this.offset = (page - 1) * recordSize; - this.voucherType = voucherType; - } - - public long getPage() { - return page; - } - - public long getRecordSize() { - return recordSize; - } - - public long getOffset() { - return offset; - } - - public VoucherType getVoucherType() { - return voucherType; - } -} diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletQueryRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletQueryRepository.java index efcee0cf38..9c46ea1410 100644 --- a/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletQueryRepository.java +++ b/src/main/java/org/prgrms/kdt/wallet/dao/JdbcWalletQueryRepository.java @@ -1,13 +1,11 @@ package org.prgrms.kdt.wallet.dao; -import org.prgrms.kdt.global.exception.NotUpdateException; import org.prgrms.kdt.member.domain.Member; import org.prgrms.kdt.member.domain.MemberStatus; import org.prgrms.kdt.voucher.domain.DiscountPolicy; import org.prgrms.kdt.voucher.domain.Voucher; import org.prgrms.kdt.voucher.domain.VoucherType; import org.prgrms.kdt.wallet.domain.QueryWallet; -import org.prgrms.kdt.wallet.domain.Wallet; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; diff --git a/src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java b/src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java index 1f3d8c4fbe..a74852b0aa 100644 --- a/src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java +++ b/src/main/java/org/prgrms/kdt/wallet/dao/WalletQueryRepository.java @@ -1,7 +1,6 @@ package org.prgrms.kdt.wallet.dao; import org.prgrms.kdt.wallet.domain.QueryWallet; -import org.prgrms.kdt.wallet.domain.Wallet; import java.util.List; import java.util.UUID; From d6dfbe7d91eb0da6a6d0687d77d86b4f4e85658a Mon Sep 17 00:00:00 2001 From: young970 Date: Tue, 1 Aug 2023 22:59:32 +0900 Subject: [PATCH 18/18] =?UTF-8?q?refactor:=20500=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8=ED=95=9C=ED=85=8C?= =?UTF-8?q?=20=EA=B0=90=EC=B6=94=EB=8A=94=20=EB=B0=A9=EC=8B=9D=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/prgrms/kdt/global/ApiExceptionHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java index 03de7b69a8..78290fe0fd 100644 --- a/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java +++ b/src/main/java/org/prgrms/kdt/global/ApiExceptionHandler.java @@ -52,9 +52,9 @@ public ResponseEntity handleNotFoundException(HttpServletRequest @ExceptionHandler(Exception.class) public ResponseEntity handleException(HttpServletRequest request, Exception e) { - logger.error("Exception: ", e); - int statusCode = HttpStatus.INTERNAL_SERVER_ERROR.value(); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(getErrorResponse(statusCode, e.getMessage(), request.getRequestURI())); + logger.error("Sever Exception: ", e.getMessage()); + int statusCode = HttpStatus.OK.value(); + return ResponseEntity.ok(getErrorResponse(statusCode, e.getMessage(), request.getRequestURI())); } private static ErrorResponse getErrorResponse(int status, String masesage, String requestURI) {