From c3ede2347a13b3d25c035019e2754d213a42f94d Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:18:54 +0900 Subject: [PATCH 01/27] =?UTF-8?q?[Feat]=20:=20=20build.gradle=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80=20-=20mapStruct=20-=20s?= =?UTF-8?q?pring-boot-starter-seb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build.gradle b/build.gradle index 494e83d7cd..7a4457f9a8 100644 --- a/build.gradle +++ b/build.gradle @@ -38,6 +38,13 @@ dependencies { //configuration annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" + + //web + implementation 'org.springframework.boot:spring-boot-starter-web' + + //map struct + implementation 'org.mapstruct:mapstruct:1.5.5.Final' + annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final' } tasks.named('test') { From 58b76721218878500e774d00e7f3ea54344d4b88 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:20:25 +0900 Subject: [PATCH 02/27] =?UTF-8?q?[Feat]=20:=20@Service=20=EC=96=B4?= =?UTF-8?q?=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=EC=9C=BC=EB=A1=9C=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 --- .../member/application/MemberService.java | 8 ++++---- .../wallet/application/WalletService.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java b/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java index e7a44936d6..abe9dd642f 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java @@ -8,14 +8,14 @@ import org.programmers.VoucherManagement.member.exception.MemberException; import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.UUID; -import static org.programmers.VoucherManagement.member.exception.MemberExceptionMessage.NOT_FOUND_MEMBER; +import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_FOUND_MEMBER; -@Component +@Service @Transactional(readOnly = true) public class MemberService { private final MemberReaderRepository memberReaderRepository; @@ -26,7 +26,6 @@ public MemberService(MemberReaderRepository memberReaderRepository, MemberStoreR this.memberStoreRepository = memberStoreRepository; } - public MemberGetResponses getAllMembers() { return new MemberGetResponses(memberReaderRepository.findAll()); } @@ -40,6 +39,7 @@ public void createMember(MemberCreateRequest memberCreateRequest) { Member member = new Member(UUID.randomUUID(), memberCreateRequest.name(), memberCreateRequest.memberStatus()); + memberStoreRepository.insert(member); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java index fd10e6027d..ab2e898d6b 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java @@ -11,15 +11,15 @@ import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; import org.programmers.VoucherManagement.wallet.infrastructure.WalletReaderRepository; import org.programmers.VoucherManagement.wallet.infrastructure.WalletStoreRepository; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.UUID; -import static org.programmers.VoucherManagement.member.exception.MemberExceptionMessage.NOT_FOUND_MEMBER; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.NOT_FOUND_VOUCHER; +import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_FOUND_MEMBER; +import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_FOUND_VOUCHER; -@Component +@Service @Transactional(readOnly = true) public class WalletService { private final WalletReaderRepository walletReaderRepository; From ac575902466c4971272136a164f1c94824aa30aa Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:27:58 +0900 Subject: [PATCH 03/27] =?UTF-8?q?[Feat]=20:=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=EB=A9=94=EC=8B=9C=EC=A7=80=20->=20ErrorCode?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95=20-=20ErrorCode=20=EB=82=B4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EA=B4=80=EB=A6=AC=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/response/ErrorCode.java | 78 +++++++++++++++++++ .../member/exception/MemberException.java | 9 ++- .../JdbcMemberStoreRepository.java | 8 +- .../voucher/domain/DiscountType.java | 2 +- .../voucher/exception/VoucherException.java | 16 ++-- .../JdbcVoucherStoreRepository.java | 8 +- .../wallet/exception/WalletException.java | 10 ++- .../JdbcWalletReaderRepository.java | 8 +- .../JdbcWalletStoreRepository.java | 8 +- .../application/VoucherServiceMockTest.java | 2 +- .../application/VoucherServiceTest.java | 2 +- 11 files changed, 118 insertions(+), 33 deletions(-) create mode 100644 src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java diff --git a/src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java b/src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java new file mode 100644 index 0000000000..b9129e7649 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java @@ -0,0 +1,78 @@ +package org.programmers.VoucherManagement.global.response; + +public enum ErrorCode { + /** + * 10000번 -> Global에서 발생하는 에러코드 관리 + * [Http Status code] + * 400 : Bad Request + * 401 : Unauthorized + * 403 : Forbidden + * 404 : Not Found + * 405 : Method Not Allowed + * 500 : Internal Server Error + */ + FAIL(500, "10000", "요청에 실패하였습니다."), + INVALID_INPUT_VALUE_ERROR(400, "10001", "유효하지 않은 입력값입니다."), + INVALID_METHOD_ERROR(405, "10002", "지원하지 않는 HTTP 메소드입니다."), + REQUEST_BODY_MISSING_ERROR(400, "10003", "RequestBody에 데이터가 존재하지 않습니다."), + REQUEST_PARAM_MISSING_ERROR(400, "10004", "RequestParam에 데이터가 전달되지 않았습니다."), + INVALID_TYPE_VALUE_ERROR(400, "10005", "타입이 유효하지 않습니다."), + INTERNAL_SERVER_ERROR(500, "10006", "서버 오류 입니다."), + + /** + * ========================================================================== + * 20000번 -> Member에서 발생하는 에러코드 관리 + * ========================================================================== + */ + NOT_EXIST_MEMBER_STATUS(400, "M20000", "해당하는 회원 상태가 존재하지 않습니다."), + NOT_FOUND_MEMBER(404, "M20001", "회원을 찾을 수 없습니다."), + FAIL_TO_INSERT_MEMBER(500, "M20002", "데이터가 정상적으로 저장되지 않았습니다."), + FAIL_TO_UPDATE_MEMBER(500, "M20003", "데이터가 정상적으로 수정되지 않았습니다."), + FAIL_TO_DELETE_MEMBER(500, "M20004", "데이터가 정상적으로 삭제되지 않았습니다."), + + /** + * ========================================================================== + * 30000번 -> Voucher에서 발생하는 에러코드 관리 + * ========================================================================== + */ + NOT_INCLUDE_1_TO_100(400, "V30000", "할인율은 1부터 100사이의 값이여야 합니다."), + AMOUNT_IS_NOT_NUMBER(400, "V30001", "숫자만 입력가능합니다."), + NOT_EXIST_COMMAND(400, "V30002", "해당하는 Command가 존재하지 않습니다."), + NOT_EXIST_DISCOUNT_TYPE(400, "V30003", "해당하는 유형의 바우처가 존재하지 않습니다."), + NOT_FOUND_VOUCHER(404, "V30004", "바우처를 찾을 수 없습니다."), + FAIL_TO_INSERT_VOUCHER(500, "V30005", "데이터가 정상적으로 저장되지 않았습니다."), + FAIL_TO_UPDATE_VOUCHER(500, "V30006", "데이터가 정상적으로 수정되지 않았습니다."), + FAIL_TO_DELETE_VOUCHER(500, "V30007", "데이터가 정상적으로 삭제되지 않았습니다."), + + /** + * ========================================================================== + * 40000번 -> Wallet에서 발생하는 에러코드 관리 + * ========================================================================== + */ + FAIL_TO_INSERT_WALLET(500, "W40000", "데이터가 정상적으로 저장되지 않았습니다."), + FAIL_TO_DELETE_WALLET(500, "W40001", "데이터가 정상적으로 삭제되지 않았습니다."); + + + private final int status; //코드 상태(Http) + private final String divisionCode; //서버 내 코드 구분 값 + private final String message; //에러 코드 메시지 + + ErrorCode(int status, String divisionCode, String message) { + this.status = status; + this.divisionCode = divisionCode; + this.message = message; + } + + public String getMessage() { + return message; + } + + public int getStatus() { + return status; + } + + public String getDivisionCode() { + return divisionCode; + } + +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java b/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java index d5a3385b2f..9ef6538c20 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java +++ b/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java @@ -1,8 +1,13 @@ package org.programmers.VoucherManagement.member.exception; +import lombok.Getter; +import org.programmers.VoucherManagement.global.response.ErrorCode; + +@Getter public class MemberException extends RuntimeException { + private final ErrorCode errorCode; - public MemberException(MemberExceptionMessage exceptionMessage) { - super(exceptionMessage.getMessage()); + public MemberException(ErrorCode errorCode) { + this.errorCode = errorCode; } } diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java index ae73ae56ab..b50a1f76b3 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java @@ -8,7 +8,7 @@ import java.util.UUID; -import static org.programmers.VoucherManagement.member.exception.MemberExceptionMessage.*; +import static org.programmers.VoucherManagement.global.response.ErrorCode.*; @Primary @Repository @@ -29,7 +29,7 @@ public Member insert(Member member) { member.getMemberStatus().toString()); if (insertCount != 1) { - throw new MemberException(FAIL_TO_INSERT); + throw new MemberException(FAIL_TO_INSERT_MEMBER); } return member; } @@ -42,7 +42,7 @@ public void update(Member member) { member.getMemberStatus().toString(), member.getMemberUUID().toString()); if (updateCount != 1) { - throw new MemberException(FAIL_TO_UPDATE); + throw new MemberException(FAIL_TO_UPDATE_MEMBER); } } @@ -52,7 +52,7 @@ public void delete(UUID memberId) { int deleteCount = jdbcTemplate.update(sql, memberId.toString()); if (deleteCount != 1) { - throw new MemberException(FAIL_TO_DELETE); + throw new MemberException(FAIL_TO_DELETE_MEMBER); } } } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountType.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountType.java index c6c380256e..7c085a211b 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountType.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountType.java @@ -8,7 +8,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.NOT_EXIST_DISCOUNT_TYPE; +import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_EXIST_DISCOUNT_TYPE; public enum DiscountType { PERCENT("percent", "%"), diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java b/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java index 2229193978..c09dc4f001 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java @@ -1,16 +1,14 @@ package org.programmers.VoucherManagement.voucher.exception; -public class VoucherException extends RuntimeException { +import lombok.Getter; +import org.programmers.VoucherManagement.global.response.ErrorCode; - private final VoucherExceptionMessage exceptionMessage; +@Getter +public class VoucherException extends RuntimeException { + private final ErrorCode errorCode; - public VoucherException(VoucherExceptionMessage exceptionMessage) { - super(exceptionMessage.getMessage()); - this.exceptionMessage = exceptionMessage; + public VoucherException(ErrorCode errorCode) { + this.errorCode = errorCode; } - public VoucherException(VoucherExceptionMessage exceptionMessage, Throwable cause) { - super(exceptionMessage.getMessage(), cause); - this.exceptionMessage = exceptionMessage; - } } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java index 9f4c3eb46b..fbe234b51e 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java @@ -8,7 +8,7 @@ import java.util.UUID; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.*; +import static org.programmers.VoucherManagement.global.response.ErrorCode.*; @Repository @Primary @@ -28,7 +28,7 @@ public Voucher insert(Voucher voucher) { voucher.getDiscountType().getType()); if (insertCount != 1) { - throw new VoucherException(FAIL_TO_INSERT); + throw new VoucherException(FAIL_TO_INSERT_VOUCHER); } return voucher; } @@ -39,7 +39,7 @@ public void delete(UUID voucherId) { int deleteCount = jdbcTemplate.update(sql, voucherId.toString()); if (deleteCount != 1) { - throw new VoucherException(FAIL_TO_DELETE); + throw new VoucherException(FAIL_TO_DELETE_VOUCHER); } } @@ -50,7 +50,7 @@ public void update(Voucher voucher) { voucher.getDiscountValue().getValue(), voucher.getVoucherId().toString()); if (updateCount != 1) { - throw new VoucherException(FAIL_TO_UPDATE); + throw new VoucherException(FAIL_TO_UPDATE_VOUCHER); } } } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java b/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java index 363fd96ca2..95a71419f7 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java @@ -1,7 +1,13 @@ package org.programmers.VoucherManagement.wallet.exception; +import lombok.Getter; +import org.programmers.VoucherManagement.global.response.ErrorCode; + +@Getter public class WalletException extends RuntimeException { - public WalletException(WalletExceptionMessage exceptionMessage) { - super(exceptionMessage.getMessage()); + private final ErrorCode errorCode; + + public WalletException(ErrorCode errorCode) { + this.errorCode = errorCode; } } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java index 0cbfd4848d..4b10ec2543 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.wallet.infrastructure; +import org.programmers.VoucherManagement.global.response.ErrorCode; import org.programmers.VoucherManagement.member.exception.MemberException; import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; import org.programmers.VoucherManagement.voucher.exception.VoucherException; @@ -15,9 +16,6 @@ import java.util.Optional; import java.util.UUID; -import static org.programmers.VoucherManagement.member.exception.MemberExceptionMessage.NOT_FOUND_MEMBER; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.NOT_FOUND_VOUCHER; - @Repository @Primary public class JdbcWalletReaderRepository implements WalletReaderRepository { @@ -60,8 +58,8 @@ public List findAllByVoucherId(UUID voucherId) { public RowMapper walletRowMapper() { return (result, rowNum) -> new Wallet( UUID.fromString(result.getString("wallet_id")), - voucherReaderRepository.findById(UUID.fromString(result.getString("voucher_id"))).orElseThrow(() -> new VoucherException(NOT_FOUND_VOUCHER)), - memberReaderRepository.findById(UUID.fromString(result.getString("member_id"))).orElseThrow(() -> new MemberException(NOT_FOUND_MEMBER)) + voucherReaderRepository.findById(UUID.fromString(result.getString("voucher_id"))).orElseThrow(() -> new VoucherException(ErrorCode.NOT_FOUND_VOUCHER)), + memberReaderRepository.findById(UUID.fromString(result.getString("member_id"))).orElseThrow(() -> new MemberException(ErrorCode.NOT_FOUND_MEMBER)) ); } } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java index 4144c2688d..66ed6628fd 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java @@ -8,8 +8,8 @@ import java.util.UUID; -import static org.programmers.VoucherManagement.wallet.exception.WalletExceptionMessage.FAIL_TO_DELETE; -import static org.programmers.VoucherManagement.wallet.exception.WalletExceptionMessage.FAIL_TO_INSERT; +import static org.programmers.VoucherManagement.global.response.ErrorCode.FAIL_TO_DELETE_WALLET; +import static org.programmers.VoucherManagement.global.response.ErrorCode.FAIL_TO_INSERT_WALLET; @Repository @Primary @@ -29,7 +29,7 @@ public Wallet insert(Wallet wallet) { wallet.getVoucher().getVoucherId().toString(), wallet.getMember().getMemberUUID().toString()); if (insertCount != 1) { - throw new WalletException(FAIL_TO_INSERT); + throw new WalletException(FAIL_TO_INSERT_WALLET); } return wallet; } @@ -40,7 +40,7 @@ public void delete(UUID walletId) { int deleteCount = jdbcTemplate.update(sql, walletId.toString()); if (deleteCount != 1) { - throw new WalletException(FAIL_TO_DELETE); + throw new WalletException(FAIL_TO_DELETE_WALLET); } } } diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java index 9509d316a5..ec9b58ad94 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java @@ -6,8 +6,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.domain.*; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponse; import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.exception.VoucherException; diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java index 6523c01929..2b7c199b27 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java @@ -2,8 +2,8 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.domain.*; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponse; import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.exception.VoucherException; From 3fc14eb55ec8ebb42a18c238e1afa7f9cbe1cfd7 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:28:23 +0900 Subject: [PATCH 04/27] =?UTF-8?q?[Feat]=20:=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?=EC=84=B1=EA=B3=B5=EC=8B=9C=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EB=8A=94=20BaseResponse=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/response/BaseResponse.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/java/org/programmers/VoucherManagement/global/response/BaseResponse.java diff --git a/src/main/java/org/programmers/VoucherManagement/global/response/BaseResponse.java b/src/main/java/org/programmers/VoucherManagement/global/response/BaseResponse.java new file mode 100644 index 0000000000..22ecdb542b --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/global/response/BaseResponse.java @@ -0,0 +1,39 @@ +package org.programmers.VoucherManagement.global.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import static org.programmers.VoucherManagement.global.response.SuccessCode.SUCCESS; + +@Getter +@AllArgsConstructor +@JsonPropertyOrder({"code", "message", "result"}) +public class BaseResponse { + private final String message; + private final String code; + @JsonInclude(JsonInclude.Include.NON_NULL) + private T result; + + /** + * 요청에 성공하고 반환값이 있는 경우 + * + * @param result + */ + public BaseResponse(T result) { + this.message = SUCCESS.getMessage(); + this.code = SUCCESS.getCode(); + this.result = result; + } + + /** + * 요청에 성공하고 반환값이 없는 경우 + * + * @param status + */ + public BaseResponse(SuccessCode status) { + this.message = status.getMessage(); + this.code = status.getCode(); + } +} From 0994f2bddb4d7e741b963439114358574258e4a8 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:28:47 +0900 Subject: [PATCH 05/27] =?UTF-8?q?[Feat]=20:=20ErrorResponse=20=EB=B0=8F=20?= =?UTF-8?q?ExceptionHandler=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/GlobalExceptionHandler.java | 123 +++++++++++++++++ .../global/response/ErrorResponse.java | 125 ++++++++++++++++++ 2 files changed, 248 insertions(+) create mode 100644 src/main/java/org/programmers/VoucherManagement/global/exception/GlobalExceptionHandler.java create mode 100644 src/main/java/org/programmers/VoucherManagement/global/response/ErrorResponse.java diff --git a/src/main/java/org/programmers/VoucherManagement/global/exception/GlobalExceptionHandler.java b/src/main/java/org/programmers/VoucherManagement/global/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000000..da246c6bb9 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/global/exception/GlobalExceptionHandler.java @@ -0,0 +1,123 @@ +package org.programmers.VoucherManagement.global.exception; + +import com.fasterxml.jackson.core.JsonProcessingException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.programmers.VoucherManagement.global.response.ErrorCode; +import org.programmers.VoucherManagement.global.response.ErrorResponse; +import org.programmers.VoucherManagement.member.exception.MemberException; +import org.programmers.VoucherManagement.voucher.exception.VoucherException; +import org.programmers.VoucherManagement.wallet.exception.WalletException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.BindException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingServletRequestParameterException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; + +@RequiredArgsConstructor +@RestControllerAdvice +@Slf4j +public class GlobalExceptionHandler { + /** + * [Exception] 객체 혹은 파라미터의 데이터 값이 유효하지 않은 경우 + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + protected ResponseEntity handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { + log.error("Handle MothodArgumentNotValidException", e.getMessage()); + final ErrorResponse response = ErrorResponse.of(ErrorCode.INVALID_METHOD_ERROR, e.getBindingResult()); + return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); + } + + /** + * [Exception] 클라이언트에서 request로 '파라미터로' 데이터가 넘어오지 않았을 경우 + * + * @param ex MissingServletRequestParameterException + * @return ResponseEntity + */ + @ExceptionHandler(MissingServletRequestParameterException.class) + protected ResponseEntity handleMissingRequestHeaderExceptionException( + MissingServletRequestParameterException ex) { + log.error("Handle MissingServletRequestParameterException", ex); + final ErrorResponse response = ErrorResponse.of(ErrorCode.REQUEST_PARAM_MISSING_ERROR, ex.getMessage()); + return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); + } + + /** + * [Exception] enum type 일치하지 않아 binding 못할 경우 + * 주로 @RequestParam enum으로 binding 못했을 경우 발생 + */ + @ExceptionHandler(MethodArgumentTypeMismatchException.class) + protected ResponseEntity handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) { + log.error("Handle MethodArgumentTypeMismatchException", e); + final ErrorResponse response = ErrorResponse.of(ErrorCode.INVALID_INPUT_VALUE_ERROR, e.getMessage()); + return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); + } + + + /** + * [Exception] com.fasterxml.jackson.core 내에 Exception 발생하는 경우 + * + * @param ex JsonProcessingException + * @return ResponseEntity + */ + @ExceptionHandler(JsonProcessingException.class) + protected ResponseEntity handleJsonProcessingException(JsonProcessingException ex) { + log.error("handleJsonProcessingException", ex); + final ErrorResponse response = ErrorResponse.of(ErrorCode.REQUEST_BODY_MISSING_ERROR, ex.getMessage()); + return new ResponseEntity<>(response, HttpStatus.OK); + } + + /** + * [Exception] @ModelAttribute 으로 binding error 발생할 경우 + */ + @ExceptionHandler(BindException.class) + protected ResponseEntity handleBindException(BindException e) { + log.error("Handle BindException : ", e); + final ErrorResponse response = ErrorResponse.of(ErrorCode.INVALID_INPUT_VALUE_ERROR, e.getBindingResult()); + return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); + } + + /** + * [Exception] 서버에 정의되지 않은 모든 예외 + */ + @ExceptionHandler(Exception.class) + public ResponseEntity handleAllException(Exception e) { + log.error("Handle Exception :", e); + final ErrorResponse response = ErrorResponse.of(ErrorCode.INTERNAL_SERVER_ERROR, e.getMessage()); + return new ResponseEntity<>(response, HttpStatus.OK); + } + + /** + * [Exception] 커스텀 예외 - MemberException + */ + @ExceptionHandler(MemberException.class) + public ResponseEntity handleNotFoundException(MemberException e) { + log.error("Handle NotFoundException :", e); + final ErrorResponse response = ErrorResponse.of(e.getErrorCode(), e.getMessage()); + return new ResponseEntity<>(response, HttpStatus.OK); + } + + /** + * [Exception] 커스텀 예외 - VoucherException + */ + @ExceptionHandler(VoucherException.class) + public ResponseEntity handlePermissionDeniedException(VoucherException e) { + log.error("Handle PermissionDeniedException :", e); + final ErrorResponse response = ErrorResponse.of(e.getErrorCode(), e.getMessage()); + return new ResponseEntity<>(response, HttpStatus.OK); + } + + /** + * [Exception] 커스텀 예외 - WalletException + */ + @ExceptionHandler(WalletException.class) + public ResponseEntity handlePermissionDeniedException(WalletException e) { + log.error("Handle PermissionDeniedException :", e); + final ErrorResponse response = ErrorResponse.of(e.getErrorCode(), e.getMessage()); + return new ResponseEntity<>(response, HttpStatus.OK); + } + +} diff --git a/src/main/java/org/programmers/VoucherManagement/global/response/ErrorResponse.java b/src/main/java/org/programmers/VoucherManagement/global/response/ErrorResponse.java new file mode 100644 index 0000000000..b2d80932e1 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/global/response/ErrorResponse.java @@ -0,0 +1,125 @@ +package org.programmers.VoucherManagement.global.response; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.validation.BindingResult; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Global Exception Handler에서 발생한 에러에 대한 응답 처리를 관리 + */ +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class ErrorResponse { + private int status; // 에러 상태 코드 + @JsonInclude(JsonInclude.Include.NON_NULL) + private String divisionCode; // 서버 내 에러 구분 코드 + private String resultMsg; // 에러 메시지 + private List errors; // 상세 에러 메시지 + private String reason; // 에러 이유 + + /** + * ErrorResponse 생성자-1 + * + * @param code ErrorCode + */ + @Builder + protected ErrorResponse(final ErrorCode code) { + this.resultMsg = code.getMessage(); + this.status = code.getStatus(); + this.divisionCode = code.getDivisionCode(); + this.errors = new ArrayList<>(); + } + + /** + * ErrorResponse 생성자-2 + * + * @param code ErrorCode + * @param reason String + */ + @Builder + protected ErrorResponse(final ErrorCode code, final String reason) { + this.resultMsg = code.getMessage(); + this.status = code.getStatus(); + this.divisionCode = code.getDivisionCode(); + this.reason = reason; + } + + /** + * ErrorResponse 생성자-3 + * + * @param code ErrorCode + * @param errors List + */ + @Builder + protected ErrorResponse(final ErrorCode code, final List errors) { + this.resultMsg = code.getMessage(); + this.status = code.getStatus(); + this.errors = errors; + this.divisionCode = code.getDivisionCode(); + } + + + /** + * Global Exception 전송 타입 - 1 + */ + public static ErrorResponse of(final ErrorCode code, final BindingResult bindingResult) { + return new ErrorResponse(code, FieldError.of(bindingResult)); + } + + /** + * Global Exception 전송 타입 - 2 + */ + public static ErrorResponse of(final ErrorCode code) { + return new ErrorResponse(code); + } + + /** + * Global Exception 전송 타입 - 3 + */ + public static ErrorResponse of(final ErrorCode code, final String reason) { + return new ErrorResponse(code, reason); + } + + + /** + * 에러를 e.getBindingResult() 형태로 전달 받는 경우 해당 내용을 상세 내용으로 변경 + */ + @Getter + public static class FieldError { + private final String field; + private final String value; + private final String reason; + + public static List of(final String field, final String value, final String reason) { + List fieldErrors = new ArrayList<>(); + fieldErrors.add(new FieldError(field, value, reason)); + return fieldErrors; + } + + private static List of(final BindingResult bindingResult) { + final List fieldErrors = bindingResult.getFieldErrors(); + return fieldErrors.stream() + .map(error -> new FieldError( + error.getField(), + error.getRejectedValue() == null ? "" : error.getRejectedValue().toString(), + error.getDefaultMessage())) + .collect(Collectors.toList()); + } + + @Builder + FieldError(String field, String value, String reason) { + this.field = field; + this.value = value; + this.reason = reason; + } + } + +} From f372e3191dacbb95a27aed8a879653b00e2a4e51 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:29:47 +0900 Subject: [PATCH 06/27] =?UTF-8?q?[Feat]=20:=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?=EC=84=B1=EA=B3=B5=EC=8B=9C=20=EB=82=B4=EB=A0=A4=EC=A3=BC?= =?UTF-8?q?=EB=8A=94=20SuccessCode=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/response/SuccessCode.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java diff --git a/src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java b/src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java new file mode 100644 index 0000000000..2b2c0bf2f5 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java @@ -0,0 +1,45 @@ +package org.programmers.VoucherManagement.global.response; + +public enum SuccessCode { + /** + * 1000번 -> 성공 + */ + SUCCESS(200, "1000", "요청에 성공하였습니다."), + + /** + * 2000번 -> Voucher + */ + DELETE_VOUCHER_SUCCESS(200, "V2000", "바우처 삭제를 성공하였습니다"), + UPDATE_VOUCHER_SUCCESS(200, "V2001", "바우처 수정을 성공하였습니다"); + + /** + * 3000번 -> Member + */ + + /** + * 3000번 -> Wallet + */ + + + private final int status; + private final String code; + private final String message; + + private SuccessCode(int status, String code, String message) { + this.status = status; + this.code = code; + this.message = message; + } + + public String getMessage() { + return message; + } + + public String getCode() { + return code; + } + + public int getStatus() { + return status; + } +} From ae7edeb35a206bc4c5a19d4a34c3dbd8d9b71419 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:30:35 +0900 Subject: [PATCH 07/27] =?UTF-8?q?[Feat]=20:=20VoucherRestController=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/VoucherRestController.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java new file mode 100644 index 0000000000..d5caa0c1b3 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java @@ -0,0 +1,75 @@ +package org.programmers.VoucherManagement.voucher.presentation; + + +import org.programmers.VoucherManagement.global.response.BaseResponse; +import org.programmers.VoucherManagement.voucher.application.VoucherService; +import org.programmers.VoucherManagement.voucher.dto.request.VoucherCreateResponse; +import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; +import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherCreateRequestData; +import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherUpdateRequestData; +import org.programmers.VoucherManagement.voucher.presentation.mapper.VoucherControllerMapper; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.UUID; + +import static org.programmers.VoucherManagement.global.response.SuccessCode.DELETE_VOUCHER_SUCCESS; +import static org.programmers.VoucherManagement.global.response.SuccessCode.UPDATE_VOUCHER_SUCCESS; + +@RestController +@RequestMapping("/voucher") +public class VoucherRestController { + private final VoucherService voucherService; + + public VoucherRestController(VoucherService voucherService) { + this.voucherService = voucherService; + } + + /** + * 바우처 생성 + * + * @param data + * @return BaseResponse + */ + @PostMapping() + public BaseResponse createVoucher(@Validated @RequestBody VoucherCreateRequestData data) { + return new BaseResponse<>(voucherService.saveVoucher(VoucherControllerMapper.INSTANCE.dataToCreateRequest(data))); + } + + /** + * 바우처 수정 + * + * @param voucherId + * @param data + * @return BaseResponse + */ + @PatchMapping("/{voucherId}") + public BaseResponse updateVoucher(@PathVariable String voucherId, @RequestBody VoucherUpdateRequestData data) { + UUID voucherUUID = UUID.fromString(voucherId); + voucherService.updateVoucher(voucherUUID, VoucherControllerMapper.INSTANCE.dataToUpdateRequest(data)); + return new BaseResponse<>(UPDATE_VOUCHER_SUCCESS); + } + + /** + * 저장된 모든 바우처 조회 + * + * @return BaseResponse + */ + @GetMapping() + public BaseResponse getVoucherList() { + return new BaseResponse<>(voucherService.getVoucherList()); + } + + /** + * 바우처 삭제 + * + * @param voucherId + * @return BaseResponse + */ + @DeleteMapping() + public BaseResponse deleteVoucher(@RequestParam String voucherId) { + voucherService.deleteVoucher(UUID.fromString(voucherId)); + return new BaseResponse<>(DELETE_VOUCHER_SUCCESS); + } + +} From 4ba6d1cfe0aa0070adaac44e727c05cf5e02c14f Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:34:17 +0900 Subject: [PATCH 08/27] =?UTF-8?q?[Feat]=20:=20controller=20-=20service=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=20mapper=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?dto=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VoucherManagement/io/CommandExecutor.java | 6 ++--- .../application/dto/VoucherCreateRequest.java | 7 ++++++ .../application/dto/VoucherUpdateRequest.java | 4 ++++ .../dto/request/VoucherCreateRequest.java | 9 -------- .../dto/request/VoucherUpdateRequest.java | 4 ---- .../presentation/VoucherController.java | 4 ++-- .../dto/VoucherCreateRequestData.java | 7 ++++++ .../dto/VoucherUpdateRequestData.java | 4 ++++ .../mapper/VoucherControllerMapper.java | 23 +++++++++++++++++++ 9 files changed, 50 insertions(+), 18 deletions(-) create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateRequest.java create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherUpdateRequest.java delete mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherCreateRequest.java delete mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherUpdateRequest.java create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java diff --git a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java index 800e14856a..de513d2946 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java +++ b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java @@ -5,9 +5,9 @@ import org.programmers.VoucherManagement.member.dto.request.MemberUpdateRequest; import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; import org.programmers.VoucherManagement.member.presentation.MemberController; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.domain.DiscountType; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherCreateRequest; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.presentation.VoucherController; import org.programmers.VoucherManagement.wallet.dto.request.WalletCreateRequest; @@ -113,7 +113,7 @@ private VoucherCreateRequest makeCreateVoucherRequest() { DiscountType discountType = DiscountType.from(console.readDiscountType()); int discountValue = console.readDiscountValue(); - return new VoucherCreateRequest(discountType, discountValue); + return new VoucherCreateRequest(discountType.toString(), discountValue); } private MemberCreateRequest makeCreateMemberRequest() { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateRequest.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateRequest.java new file mode 100644 index 0000000000..fc6157c8d6 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateRequest.java @@ -0,0 +1,7 @@ +package org.programmers.VoucherManagement.voucher.application.dto; + +public record VoucherCreateRequest( + String discountType, + int discountValue +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherUpdateRequest.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherUpdateRequest.java new file mode 100644 index 0000000000..4d89191c59 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherUpdateRequest.java @@ -0,0 +1,4 @@ +package org.programmers.VoucherManagement.voucher.application.dto; + +public record VoucherUpdateRequest(int discountValue) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherCreateRequest.java b/src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherCreateRequest.java deleted file mode 100644 index a1709068b5..0000000000 --- a/src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherCreateRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.programmers.VoucherManagement.voucher.dto.request; - -import org.programmers.VoucherManagement.voucher.domain.DiscountType; - -public record VoucherCreateRequest( - DiscountType discountType, - int discountValue -) { -} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherUpdateRequest.java b/src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherUpdateRequest.java deleted file mode 100644 index b57ead9eee..0000000000 --- a/src/main/java/org/programmers/VoucherManagement/voucher/dto/request/VoucherUpdateRequest.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.programmers.VoucherManagement.voucher.dto.request; - -public record VoucherUpdateRequest(int discountValue) { -} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java index bbb85a8d34..7d87924611 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java @@ -1,8 +1,8 @@ package org.programmers.VoucherManagement.voucher.presentation; import org.programmers.VoucherManagement.voucher.application.VoucherService; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherCreateRequest; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherUpdateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java new file mode 100644 index 0000000000..88169d35a0 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java @@ -0,0 +1,7 @@ +package org.programmers.VoucherManagement.voucher.presentation.dto; + +public record VoucherCreateRequestData( + String discountType, + int discountValue +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java new file mode 100644 index 0000000000..e7a4d1240c --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java @@ -0,0 +1,4 @@ +package org.programmers.VoucherManagement.voucher.presentation.dto; + +public record VoucherUpdateRequestData(int discountValue) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java new file mode 100644 index 0000000000..de8c01a688 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java @@ -0,0 +1,23 @@ +package org.programmers.VoucherManagement.voucher.presentation.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; +import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherCreateRequestData; +import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherUpdateRequestData; + +@Mapper(componentModel = "spring") +public interface VoucherControllerMapper { + + VoucherControllerMapper INSTANCE = Mappers.getMapper(VoucherControllerMapper.class); + + + @Mapping(source = "discountType", target = "discountType") + @Mapping(source = "discountValue", target = "discountValue") + VoucherCreateRequest dataToCreateRequest(VoucherCreateRequestData data); + + @Mapping(source = "discountValue", target = "discountValue") + VoucherUpdateRequest dataToUpdateRequest(VoucherUpdateRequestData data); +} From 1d463a8bfdab63831b83ccd4a320a409bf08cd63 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:34:40 +0900 Subject: [PATCH 09/27] =?UTF-8?q?[Feat]=20:=20DiscountValue=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=9E=90=20=EB=82=B4=EC=97=90=EC=84=9C=20=EC=9C=A0?= =?UTF-8?q?=ED=9A=A8=EC=84=B1=20=EA=B2=80=EC=82=AC=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/domain/DiscountValue.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java index 20b2414258..5afd30578e 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java @@ -2,21 +2,26 @@ import org.programmers.VoucherManagement.voucher.exception.VoucherException; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.NOT_INCLUDE_1_TO_100; +import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_INCLUDE_1_TO_100; -public class DiscountValue { +public class DiscountValue { private final int value; public DiscountValue(int value) { this.value = value; } + public DiscountValue(int value, DiscountType discountType) { + validateValue(discountType); + this.value = value; + } + public int getValue() { return value; } - public void validateValue(DiscountType discountType) { + private void validateValue(DiscountType discountType) { if (discountType == DiscountType.PERCENT && (value > 100 || value < 0)) { throw new VoucherException(NOT_INCLUDE_1_TO_100); } From 48125fdd2eb07222d609893e32efb38822ee0ce2 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 01:35:48 +0900 Subject: [PATCH 10/27] =?UTF-8?q?[Feat]=20:=20ErrorCode=EB=A1=9C=EC=9D=98?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20?= =?UTF-8?q?import=EB=AC=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/programmers/VoucherManagement/io/MenuType.java | 5 ++--- .../voucher/domain/PercentAmountVoucher.java | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/io/MenuType.java b/src/main/java/org/programmers/VoucherManagement/io/MenuType.java index 06b0ef49ea..3a54686be4 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/MenuType.java +++ b/src/main/java/org/programmers/VoucherManagement/io/MenuType.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.io; +import org.programmers.VoucherManagement.global.response.ErrorCode; import org.programmers.VoucherManagement.voucher.exception.VoucherException; import java.util.Arrays; @@ -8,8 +9,6 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.NOT_EXIST_COMMAND; - public enum MenuType { //Member INSERT_MEMBER(1), @@ -50,7 +49,7 @@ private int getNumber() { public static MenuType from(int type) { if (!COMMAND_TYPE_MAP.containsKey(type)) { - throw new VoucherException(NOT_EXIST_COMMAND); + throw new VoucherException(ErrorCode.NOT_EXIST_COMMAND); } return COMMAND_TYPE_MAP.get(type); } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java index a0620100af..2f67c73d3b 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java @@ -4,7 +4,7 @@ import java.util.UUID; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.NOT_INCLUDE_1_TO_100; +import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_INCLUDE_1_TO_100; public class PercentAmountVoucher extends Voucher { public PercentAmountVoucher(UUID voucherId, DiscountType discountType, DiscountValue discountValue) { From 3cd95ee0b69a3afb0e7d96857e2cc7c962c91eb3 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 04:29:16 +0900 Subject: [PATCH 11/27] =?UTF-8?q?[Feat]=20:=20Voucher=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20layer=20=EB=B3=84=EB=A1=9C=20dto=20=EA=B5=AC?= =?UTF-8?q?=EB=B6=84=20-=20Mapper=20=EC=82=AC=EC=9A=A9=20-=20Controller=20?= =?UTF-8?q?Dto=20@Valid=EB=A1=9C=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +++ .../VoucherManagement/io/CommandExecutor.java | 2 +- .../VoucherManagement/io/Console.java | 4 +-- .../VoucherManagement/io/Output.java | 2 +- .../voucher/application/VoucherService.java | 27 ++++++++++--------- .../dto/VoucherCreateResponse.java | 23 ++++++++++++++++ .../dto}/VoucherGetResponse.java | 2 +- .../dto}/VoucherGetResponses.java | 6 +++-- .../mapper/VoucherServiceMapper.java | 25 +++++++++++++++++ .../presentation/VoucherController.java | 2 +- .../presentation/VoucherRestController.java | 13 ++++----- .../dto/VoucherCreateRequestData.java | 8 ++++++ .../dto/VoucherCreateResponseData.java | 12 +++++++++ .../dto/VoucherUpdateRequestData.java | 5 +++- .../mapper/VoucherControllerMapper.java | 9 ++++++- .../application/VoucherServiceMockTest.java | 4 +-- .../application/VoucherServiceTest.java | 4 +-- 17 files changed, 119 insertions(+), 32 deletions(-) create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java rename src/main/java/org/programmers/VoucherManagement/voucher/{dto/response => application/dto}/VoucherGetResponse.java (90%) rename src/main/java/org/programmers/VoucherManagement/voucher/{dto/response => application/dto}/VoucherGetResponses.java (70%) create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/application/mapper/VoucherServiceMapper.java create mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java diff --git a/build.gradle b/build.gradle index 7a4457f9a8..466e3c95b9 100644 --- a/build.gradle +++ b/build.gradle @@ -45,6 +45,9 @@ dependencies { //map struct implementation 'org.mapstruct:mapstruct:1.5.5.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final' + + //validation + implementation 'org.springframework.boot:spring-boot-starter-validation' } tasks.named('test') { diff --git a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java index de513d2946..a6848c300b 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java +++ b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java @@ -6,9 +6,9 @@ import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; import org.programmers.VoucherManagement.member.presentation.MemberController; import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.domain.DiscountType; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.presentation.VoucherController; import org.programmers.VoucherManagement.wallet.dto.request.WalletCreateRequest; import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; diff --git a/src/main/java/org/programmers/VoucherManagement/io/Console.java b/src/main/java/org/programmers/VoucherManagement/io/Console.java index 420a48b3b8..464a09bb98 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/Console.java +++ b/src/main/java/org/programmers/VoucherManagement/io/Console.java @@ -1,15 +1,15 @@ package org.programmers.VoucherManagement.io; import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; import org.springframework.stereotype.Component; import java.text.MessageFormat; import java.util.Scanner; +import static org.programmers.VoucherManagement.global.response.ErrorCode.AMOUNT_IS_NOT_NUMBER; import static org.programmers.VoucherManagement.io.ConsoleMessage.*; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.AMOUNT_IS_NOT_NUMBER; @Component public class Console implements Input, Output { diff --git a/src/main/java/org/programmers/VoucherManagement/io/Output.java b/src/main/java/org/programmers/VoucherManagement/io/Output.java index 30d94e3334..35ddcf71da 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/Output.java +++ b/src/main/java/org/programmers/VoucherManagement/io/Output.java @@ -1,7 +1,7 @@ package org.programmers.VoucherManagement.io; import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; public interface Output { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java index 960789b0e7..17d5a54a44 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java @@ -1,23 +1,24 @@ package org.programmers.VoucherManagement.voucher.application; +import org.programmers.VoucherManagement.global.response.ErrorCode; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateResponse; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; +import org.programmers.VoucherManagement.voucher.application.mapper.VoucherServiceMapper; import org.programmers.VoucherManagement.voucher.domain.DiscountValue; import org.programmers.VoucherManagement.voucher.domain.Voucher; import org.programmers.VoucherManagement.voucher.domain.VoucherFactory; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherCreateRequest; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherUpdateRequest; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.exception.VoucherException; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherReaderRepository; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherStoreRepository; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.UUID; -import static org.programmers.VoucherManagement.voucher.exception.VoucherExceptionMessage.NOT_FOUND_VOUCHER; - -@Component +@Service @Transactional(readOnly = true) public class VoucherService { private final VoucherReaderRepository voucherReaderRepository; @@ -30,18 +31,20 @@ public VoucherService(VoucherReaderRepository voucherReaderRepository, VoucherSt @Transactional public void updateVoucher(UUID voucherId, VoucherUpdateRequest voucherUpdateRequest) { - Voucher voucher = voucherReaderRepository.findById(voucherId).orElseThrow(() -> new VoucherException(NOT_FOUND_VOUCHER)); - DiscountValue discountValue = new DiscountValue(voucherUpdateRequest.discountValue()); - discountValue.validateValue(voucher.getDiscountType()); + Voucher voucher = voucherReaderRepository + .findById(voucherId) + .orElseThrow(() -> new VoucherException(ErrorCode.NOT_FOUND_VOUCHER)); + + DiscountValue discountValue = new DiscountValue(voucherUpdateRequest.discountValue(), voucher.getDiscountType()); voucher.changeDiscountValue(discountValue); voucherStoreRepository.update(voucher); } @Transactional - public void saveVoucher(VoucherCreateRequest voucherCreateRequest) { + public VoucherCreateResponse saveVoucher(VoucherCreateRequest voucherCreateRequest) { Voucher voucher = VoucherFactory.createVoucher(voucherCreateRequest); - voucherStoreRepository.insert(voucher); + return VoucherServiceMapper.INSTANCE.domainToCreateResponse(voucherStoreRepository.insert(voucher)); } public VoucherGetResponses getVoucherList() { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java new file mode 100644 index 0000000000..15ffb76dbb --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java @@ -0,0 +1,23 @@ +package org.programmers.VoucherManagement.voucher.application.dto; + +import lombok.Builder; +import org.programmers.VoucherManagement.voucher.domain.DiscountType; +import org.programmers.VoucherManagement.voucher.domain.Voucher; + +import java.util.UUID; + +@Builder +public record VoucherCreateResponse( + UUID voucherId, + DiscountType discountType, + int discountValue +) { + public static VoucherCreateResponse toDto(Voucher voucher) { + + return VoucherCreateResponse.builder() + .voucherId(voucher.getVoucherId()) + .discountType(voucher.getDiscountType()) + .discountValue(voucher.getDiscountValue().getValue()) + .build(); + } +} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/dto/response/VoucherGetResponse.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponse.java similarity index 90% rename from src/main/java/org/programmers/VoucherManagement/voucher/dto/response/VoucherGetResponse.java rename to src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponse.java index 9dad91f2e5..f0c3c64699 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/dto/response/VoucherGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponse.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.voucher.dto.response; +package org.programmers.VoucherManagement.voucher.application.dto; import lombok.Builder; import org.programmers.VoucherManagement.voucher.domain.DiscountType; diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/dto/response/VoucherGetResponses.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponses.java similarity index 70% rename from src/main/java/org/programmers/VoucherManagement/voucher/dto/response/VoucherGetResponses.java rename to src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponses.java index 0f1d31cf11..f76ed7d023 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/dto/response/VoucherGetResponses.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponses.java @@ -1,5 +1,6 @@ -package org.programmers.VoucherManagement.voucher.dto.response; +package org.programmers.VoucherManagement.voucher.application.dto; +import org.programmers.VoucherManagement.voucher.application.mapper.VoucherServiceMapper; import org.programmers.VoucherManagement.voucher.domain.Voucher; import java.util.Collections; @@ -12,8 +13,9 @@ public class VoucherGetResponses { public VoucherGetResponses(List vouchers) { this.voucherResponses = vouchers .stream() - .map(VoucherGetResponse::toDto) + .map(v -> VoucherServiceMapper.INSTANCE.domainToGetResponse(v)) .collect(Collectors.toList()); + } public List getGetVoucherListRes() { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/mapper/VoucherServiceMapper.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/mapper/VoucherServiceMapper.java new file mode 100644 index 0000000000..91fcd8b5f2 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/mapper/VoucherServiceMapper.java @@ -0,0 +1,25 @@ +package org.programmers.VoucherManagement.voucher.application.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateResponse; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponse; +import org.programmers.VoucherManagement.voucher.domain.Voucher; + + +@Mapper(componentModel = "spring") +public interface VoucherServiceMapper { + VoucherServiceMapper INSTANCE = Mappers.getMapper(VoucherServiceMapper.class); + + @Mapping(source = "voucherId", target = "voucherId") + @Mapping(source = "discountType", target = "discountType") + @Mapping(source = "discountValue.value", target = "discountValue") + VoucherCreateResponse domainToCreateResponse(Voucher voucher); + + @Mapping(source = "voucherId", target = "voucherId") + @Mapping(source = "discountType", target = "discountType") + @Mapping(source = "discountValue.value", target = "discountValue") + VoucherGetResponse domainToGetResponse(Voucher voucher); + +} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java index 7d87924611..a4775e9dd6 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java @@ -2,8 +2,8 @@ import org.programmers.VoucherManagement.voucher.application.VoucherService; import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.springframework.stereotype.Component; import java.util.UUID; diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java index d5caa0c1b3..7048a16e98 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java @@ -1,14 +1,14 @@ package org.programmers.VoucherManagement.voucher.presentation; +import jakarta.validation.Valid; import org.programmers.VoucherManagement.global.response.BaseResponse; import org.programmers.VoucherManagement.voucher.application.VoucherService; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherCreateResponse; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherCreateRequestData; +import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherCreateResponseData; import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherUpdateRequestData; import org.programmers.VoucherManagement.voucher.presentation.mapper.VoucherControllerMapper; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.UUID; @@ -32,8 +32,9 @@ public VoucherRestController(VoucherService voucherService) { * @return BaseResponse */ @PostMapping() - public BaseResponse createVoucher(@Validated @RequestBody VoucherCreateRequestData data) { - return new BaseResponse<>(voucherService.saveVoucher(VoucherControllerMapper.INSTANCE.dataToCreateRequest(data))); + public BaseResponse createVoucher(@Valid @RequestBody VoucherCreateRequestData data) { + return new BaseResponse<>(VoucherControllerMapper.INSTANCE.UpdateResponseToData( + voucherService.saveVoucher(VoucherControllerMapper.INSTANCE.dataToCreateRequest(data)))); } /** @@ -44,7 +45,7 @@ public BaseResponse createVoucher(@Validated @RequestBody * @return BaseResponse */ @PatchMapping("/{voucherId}") - public BaseResponse updateVoucher(@PathVariable String voucherId, @RequestBody VoucherUpdateRequestData data) { + public BaseResponse updateVoucher(@PathVariable String voucherId, @Valid @RequestBody VoucherUpdateRequestData data) { UUID voucherUUID = UUID.fromString(voucherId); voucherService.updateVoucher(voucherUUID, VoucherControllerMapper.INSTANCE.dataToUpdateRequest(data)); return new BaseResponse<>(UPDATE_VOUCHER_SUCCESS); diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java index 88169d35a0..9c97766359 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateRequestData.java @@ -1,7 +1,15 @@ package org.programmers.VoucherManagement.voucher.presentation.dto; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + public record VoucherCreateRequestData( + @NotBlank String discountType, + + @NotNull + @Min(value = 0, message = "할인 가격은 0보다 작을 수 없습니다.") int discountValue ) { } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java new file mode 100644 index 0000000000..3d8c250f0d --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java @@ -0,0 +1,12 @@ +package org.programmers.VoucherManagement.voucher.presentation.dto; + +import org.programmers.VoucherManagement.voucher.domain.DiscountType; + +import java.util.UUID; + +public record VoucherCreateResponseData( + UUID voucherId, + DiscountType discountType, + int discountValue +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java index e7a4d1240c..4202d56c32 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherUpdateRequestData.java @@ -1,4 +1,7 @@ package org.programmers.VoucherManagement.voucher.presentation.dto; -public record VoucherUpdateRequestData(int discountValue) { +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; + +public record VoucherUpdateRequestData(@NotNull @Min(value = 0, message = "할인 가격은 0보다 작을 수 없습니다.") int discountValue) { } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java index de8c01a688..6d90f9135b 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java @@ -4,20 +4,27 @@ import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateResponse; import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherCreateRequestData; +import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherCreateResponseData; import org.programmers.VoucherManagement.voucher.presentation.dto.VoucherUpdateRequestData; + @Mapper(componentModel = "spring") public interface VoucherControllerMapper { VoucherControllerMapper INSTANCE = Mappers.getMapper(VoucherControllerMapper.class); - @Mapping(source = "discountType", target = "discountType") @Mapping(source = "discountValue", target = "discountValue") VoucherCreateRequest dataToCreateRequest(VoucherCreateRequestData data); @Mapping(source = "discountValue", target = "discountValue") VoucherUpdateRequest dataToUpdateRequest(VoucherUpdateRequestData data); + + @Mapping(source = "voucherId", target = "voucherId") + @Mapping(source = "discountType", target = "discountType") + @Mapping(source = "discountValue", target = "discountValue") + VoucherCreateResponseData UpdateResponseToData(VoucherCreateResponse response); } diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java index ec9b58ad94..6d43833535 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java @@ -6,10 +6,10 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponse; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.domain.*; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponse; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.exception.VoucherException; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherReaderRepository; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherStoreRepository; diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java index 2b7c199b27..9d929000e9 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java @@ -2,10 +2,10 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponse; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.domain.*; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponse; -import org.programmers.VoucherManagement.voucher.dto.response.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.exception.VoucherException; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherReaderRepository; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherStoreRepository; From 845c28cb3e82328fd4fa8d1f38b28b939ff827c5 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 04:29:37 +0900 Subject: [PATCH 12/27] =?UTF-8?q?[Feat]=20:=20=EC=97=90=EB=9F=AC=EC=BD=94?= =?UTF-8?q?=EB=93=9C(10002)=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VoucherManagement/global/response/ErrorCode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java b/src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java index b9129e7649..f92f548e3c 100644 --- a/src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java +++ b/src/main/java/org/programmers/VoucherManagement/global/response/ErrorCode.java @@ -13,7 +13,7 @@ public enum ErrorCode { */ FAIL(500, "10000", "요청에 실패하였습니다."), INVALID_INPUT_VALUE_ERROR(400, "10001", "유효하지 않은 입력값입니다."), - INVALID_METHOD_ERROR(405, "10002", "지원하지 않는 HTTP 메소드입니다."), + INVALID_METHOD_ERROR(405, "10002", "Method Argument가 적절하지 않습니다."), REQUEST_BODY_MISSING_ERROR(400, "10003", "RequestBody에 데이터가 존재하지 않습니다."), REQUEST_PARAM_MISSING_ERROR(400, "10004", "RequestParam에 데이터가 전달되지 않았습니다."), INVALID_TYPE_VALUE_ERROR(400, "10005", "타입이 유효하지 않습니다."), From b21a1c3c286db5966c9cfbe0289ce9bdc45af445 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 04:30:05 +0900 Subject: [PATCH 13/27] =?UTF-8?q?[Feat]=20:=20=EA=B8=B0=EC=A1=B4=20Excepti?= =?UTF-8?q?onMessage=20enum=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/MemberExceptionMessage.java | 19 ---------------- .../exception/VoucherExceptionMessage.java | 22 ------------------- .../exception/WalletExceptionMessage.java | 16 -------------- 3 files changed, 57 deletions(-) delete mode 100644 src/main/java/org/programmers/VoucherManagement/member/exception/MemberExceptionMessage.java delete mode 100644 src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherExceptionMessage.java delete mode 100644 src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletExceptionMessage.java diff --git a/src/main/java/org/programmers/VoucherManagement/member/exception/MemberExceptionMessage.java b/src/main/java/org/programmers/VoucherManagement/member/exception/MemberExceptionMessage.java deleted file mode 100644 index e1f48e8e54..0000000000 --- a/src/main/java/org/programmers/VoucherManagement/member/exception/MemberExceptionMessage.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.programmers.VoucherManagement.member.exception; - -public enum MemberExceptionMessage { - NOT_EXIST_MEMBER_STATUS("해당하는 회원 상태가 존재하지 않습니다."), - NOT_FOUND_MEMBER("회원을 찾을 수 없습니다. "), - FAIL_TO_INSERT("데이터가 정상적으로 저장되지 않았습니다."), - FAIL_TO_UPDATE("데이터가 정상적으로 수정되지 않았습니다."), - FAIL_TO_DELETE("데이터가 정상적으로 삭제되지 않았습니다."); - - private final String message; - - MemberExceptionMessage(String message) { - this.message = message; - } - - public String getMessage() { - return this.message; - } -} diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherExceptionMessage.java b/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherExceptionMessage.java deleted file mode 100644 index 5dcb02e2fc..0000000000 --- a/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherExceptionMessage.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.programmers.VoucherManagement.voucher.exception; - -public enum VoucherExceptionMessage { - NOT_INCLUDE_1_TO_100("할인율은 1부터 100사이의 값이여야 합니다."), - AMOUNT_IS_NOT_NUMBER("숫자만 입력가능합니다."), - NOT_EXIST_COMMAND("해당하는 Command가 존재하지 않습니다."), - NOT_EXIST_DISCOUNT_TYPE("해당하는 유형의 바우처가 존재하지 않습니다."), - NOT_FOUND_VOUCHER("바우처를 찾을 수 없습니다."), - FAIL_TO_INSERT("데이터가 정상적으로 저장되지 않았습니다."), - FAIL_TO_UPDATE("데이터가 정상적으로 수정되지 않았습니다."), - FAIL_TO_DELETE("데이터가 정상적으로 삭제되지 않았습니다."); - - private final String message; - - VoucherExceptionMessage(String message) { - this.message = message; - } - - public String getMessage() { - return this.message; - } -} diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletExceptionMessage.java b/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletExceptionMessage.java deleted file mode 100644 index c1c1dd09ee..0000000000 --- a/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletExceptionMessage.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.programmers.VoucherManagement.wallet.exception; - -public enum WalletExceptionMessage { - FAIL_TO_INSERT("데이터가 정상적으로 저장되지 않았습니다."), - FAIL_TO_DELETE("데이터가 정상적으로 삭제되지 않았습니다."); - - private final String message; - - WalletExceptionMessage(String message) { - this.message = message; - } - - public String getMessage() { - return this.message; - } -} From 7d85b6cede76472e432e801c3526f295a1092845 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Fri, 28 Jul 2023 23:32:56 +0900 Subject: [PATCH 14/27] =?UTF-8?q?[Feat]=20:=20=EA=B8=B0=EC=A1=B4=20Member?= =?UTF-8?q?=20=EB=8F=84=EB=A9=94=EC=9D=B8=20id=20=EB=B3=80=EC=88=98?= =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95=20-=20memberUUID=20->=20memberId?= =?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 --- .../org/programmers/VoucherManagement/io/Console.java | 4 ++-- .../dto}/MemberGetResponse.java | 4 ++-- .../dto}/MemberGetResponses.java | 5 +++-- .../VoucherManagement/member/domain/Member.java | 10 +++++----- .../VoucherManagement/member/domain/MemberStatus.java | 2 +- .../infrastructure/JdbcMemberStoreRepository.java | 4 ++-- .../infrastructure/JdbcWalletStoreRepository.java | 2 +- .../member/application/MemberServiceMockTest.java | 8 ++++---- .../member/application/MemberServiceTest.java | 10 +++++----- .../infrastructure/JdbcMemberRepositoryTest.java | 10 +++++----- .../VoucherManagement/util/MemberConverterTest.java | 2 +- .../wallet/application/WalletServiceTest.java | 6 +++--- .../infrastructure/JdbcWalletRepositoryTest.java | 2 +- 13 files changed, 35 insertions(+), 34 deletions(-) rename src/main/java/org/programmers/VoucherManagement/member/{dto/response => application/dto}/MemberGetResponse.java (82%) rename src/main/java/org/programmers/VoucherManagement/member/{dto/response => application/dto}/MemberGetResponses.java (75%) diff --git a/src/main/java/org/programmers/VoucherManagement/io/Console.java b/src/main/java/org/programmers/VoucherManagement/io/Console.java index 464a09bb98..ea2fa4e880 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/Console.java +++ b/src/main/java/org/programmers/VoucherManagement/io/Console.java @@ -1,8 +1,8 @@ package org.programmers.VoucherManagement.io; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; -import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; import org.springframework.stereotype.Component; import java.text.MessageFormat; diff --git a/src/main/java/org/programmers/VoucherManagement/member/dto/response/MemberGetResponse.java b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponse.java similarity index 82% rename from src/main/java/org/programmers/VoucherManagement/member/dto/response/MemberGetResponse.java rename to src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponse.java index f1c0e476c0..261b480d3c 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/dto/response/MemberGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponse.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.member.dto.response; +package org.programmers.VoucherManagement.member.application.dto; import lombok.Builder; import org.programmers.VoucherManagement.member.domain.Member; @@ -14,7 +14,7 @@ public record MemberGetResponse( ) { public static MemberGetResponse toDto(Member member) { return MemberGetResponse.builder() - .memberId(member.getMemberUUID()) + .memberId(member.getMemberId()) .name(member.getName()) .memberStatus(member.getMemberStatus()) .build(); diff --git a/src/main/java/org/programmers/VoucherManagement/member/dto/response/MemberGetResponses.java b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponses.java similarity index 75% rename from src/main/java/org/programmers/VoucherManagement/member/dto/response/MemberGetResponses.java rename to src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponses.java index 113d8d9200..3cce036162 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/dto/response/MemberGetResponses.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponses.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.member.dto.response; +package org.programmers.VoucherManagement.member.application.dto; import org.programmers.VoucherManagement.member.domain.Member; @@ -12,7 +12,8 @@ public class MemberGetResponses { public MemberGetResponses(List members) { this.memberResponses = members .stream() - .map(MemberGetResponse::toDto).collect(Collectors.toList()); + .map(MemberGetResponse::toDto) + .collect(Collectors.toList()); } public List getGetMemberListRes() { diff --git a/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java b/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java index 816f27635d..47b6db6b33 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java +++ b/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java @@ -4,18 +4,18 @@ public class Member { - private UUID memberUUID; + private UUID memberId; private String name; private MemberStatus memberStatus; - public Member(UUID memberUUID, String name, MemberStatus memberStatus) { - this.memberUUID = memberUUID; + public Member(UUID memberId, String name, MemberStatus memberStatus) { + this.memberId = memberId; this.name = name; this.memberStatus = memberStatus; } - public UUID getMemberUUID() { - return memberUUID; + public UUID getMemberId() { + return memberId; } public String getName() { diff --git a/src/main/java/org/programmers/VoucherManagement/member/domain/MemberStatus.java b/src/main/java/org/programmers/VoucherManagement/member/domain/MemberStatus.java index 8e691a04fc..2f0f280653 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/domain/MemberStatus.java +++ b/src/main/java/org/programmers/VoucherManagement/member/domain/MemberStatus.java @@ -2,7 +2,7 @@ import java.util.Arrays; -import static org.programmers.VoucherManagement.member.exception.MemberExceptionMessage.NOT_EXIST_MEMBER_STATUS; +import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_EXIST_MEMBER_STATUS; public enum MemberStatus { BLACK, diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java index b50a1f76b3..9254f974cb 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java @@ -24,7 +24,7 @@ public JdbcMemberStoreRepository(JdbcTemplate jdbcTemplate) { public Member insert(Member member) { String sql = "insert into member_table(member_id, name, member_status) values (?,?,?)"; int insertCount = jdbcTemplate.update(sql, - member.getMemberUUID().toString(), + member.getMemberId().toString(), member.getName(), member.getMemberStatus().toString()); @@ -40,7 +40,7 @@ public void update(Member member) { int updateCount = jdbcTemplate.update(sql, member.getName(), member.getMemberStatus().toString(), - member.getMemberUUID().toString()); + member.getMemberId().toString()); if (updateCount != 1) { throw new MemberException(FAIL_TO_UPDATE_MEMBER); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java index 66ed6628fd..8495d07472 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java @@ -27,7 +27,7 @@ public Wallet insert(Wallet wallet) { int insertCount = jdbcTemplate.update(sql, wallet.getWalletId().toString(), wallet.getVoucher().getVoucherId().toString(), - wallet.getMember().getMemberUUID().toString()); + wallet.getMember().getMemberId().toString()); if (insertCount != 1) { throw new WalletException(FAIL_TO_INSERT_WALLET); } diff --git a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java index bdd6cee8d8..b4274c542e 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java @@ -6,11 +6,11 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponse; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.member.domain.MemberStatus; -import org.programmers.VoucherManagement.member.dto.request.MemberUpdateRequest; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponse; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; @@ -67,7 +67,7 @@ void deleteMember_Id_Success() { memberStoreRepository.insert(saveMember); //when - memberService.deleteMember(saveMember.getMemberUUID()); + memberService.deleteMember(saveMember.getMemberId()); //then verify(memberStoreRepository, times(1)).delete(memberId); diff --git a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java index 06a1042d16..2aeab5a459 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java @@ -4,11 +4,11 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponse; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.member.domain.MemberStatus; -import org.programmers.VoucherManagement.member.dto.request.MemberUpdateRequest; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponse; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; import org.programmers.VoucherManagement.member.exception.MemberException; import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; @@ -65,7 +65,7 @@ void deleteMember_Id_Success() { memberStoreRepository.insert(saveMember); //when - memberService.deleteMember(saveMember.getMemberUUID()); + memberService.deleteMember(saveMember.getMemberId()); //then Optional optionalMember = memberReaderRepository.findById(memberId); @@ -81,7 +81,7 @@ void deleteMember_Id_ThrowMemberException() { memberStoreRepository.insert(saveMember); //when - memberService.deleteMember(saveMember.getMemberUUID()); + memberService.deleteMember(saveMember.getMemberId()); //then UUID strangeId = UUID.randomUUID(); diff --git a/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java b/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java index d5fd6bdca7..735d6c15a1 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java @@ -40,7 +40,7 @@ void insert_BlackMember_EqualsNewMember() { memberStoreRepository.insert(blackMember); //then - Member memberExpect = memberReaderRepository.findById(blackMember.getMemberUUID()).get(); + Member memberExpect = memberReaderRepository.findById(blackMember.getMemberId()).get(); assertThat(memberExpect).usingRecursiveComparison().isEqualTo(blackMember); } @@ -51,7 +51,7 @@ void insert_WhiteMember_EqualsNewMember() { memberStoreRepository.insert(whiteMember); //then - Member memberExpect = memberReaderRepository.findById(whiteMember.getMemberUUID()).get(); + Member memberExpect = memberReaderRepository.findById(whiteMember.getMemberId()).get(); assertThat(memberExpect).usingRecursiveComparison().isEqualTo(whiteMember); } @@ -66,7 +66,7 @@ void update_Member_EqualsUpdateMember() { memberStoreRepository.update(whiteMember); //then - Member memberExpect = memberReaderRepository.findById(whiteMember.getMemberUUID()).get(); + Member memberExpect = memberReaderRepository.findById(whiteMember.getMemberId()).get(); assertThat(memberExpect).usingRecursiveComparison().isEqualTo(whiteMember); } @@ -103,7 +103,7 @@ void findAllByMemberStatus_Success() { void findById_MemberId_EqualsFindMember() { //given memberStoreRepository.insert(blackMember); - UUID findMemberId = blackMember.getMemberUUID(); + UUID findMemberId = blackMember.getMemberId(); //when Member memberExpect = memberReaderRepository.findById(findMemberId).get(); @@ -117,7 +117,7 @@ void findById_MemberId_EqualsFindMember() { void delete_MemberId_Success() { //given memberStoreRepository.insert(blackMember); - UUID deleteMemberId = blackMember.getMemberUUID(); + UUID deleteMemberId = blackMember.getMemberId(); //when memberStoreRepository.delete(deleteMemberId); diff --git a/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java b/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java index fb86453343..2c7e307f15 100644 --- a/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java +++ b/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java @@ -25,7 +25,7 @@ void toMember_InputString_EqualsMember() { String expectedName = "Park"; MemberStatus expectedStatus = MemberStatus.BLACK; - assertThat(member.getMemberUUID()).isEqualTo(expectedId); + assertThat(member.getMemberId()).isEqualTo(expectedId); assertThat(member.getName()).isEqualTo(expectedName); assertThat(member.getMemberStatus()).isEqualTo(expectedStatus); } diff --git a/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java b/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java index 2a04c49672..df16d901ac 100644 --- a/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java @@ -9,9 +9,9 @@ import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; import org.programmers.VoucherManagement.voucher.domain.*; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherStoreRepository; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponse; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; import org.programmers.VoucherManagement.wallet.domain.Wallet; -import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponse; -import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; import org.programmers.VoucherManagement.wallet.exception.WalletException; import org.programmers.VoucherManagement.wallet.infrastructure.WalletReaderRepository; import org.programmers.VoucherManagement.wallet.infrastructure.WalletStoreRepository; @@ -82,7 +82,7 @@ void getWalletsByMemberId_MemberId_Success() { walletStoreRepository.insert(wallet2); //when - WalletGetResponses walletListResponse = walletService.getWalletsByMemberId(member2.getMemberUUID()); + WalletGetResponses walletListResponse = walletService.getWalletsByMemberId(member2.getMemberId()); //then List responseExpect = walletList.stream() diff --git a/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java b/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java index 71d2631332..31610e9b85 100644 --- a/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java +++ b/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java @@ -92,7 +92,7 @@ void findAllByMemberId_MemberId_Success() { walletStoreRepository.insert(wallet2); //when - List walletList = walletReaderRepository.findAllByMemberId(member1.getMemberUUID()); + List walletList = walletReaderRepository.findAllByMemberId(member1.getMemberId()); //then assertThat(walletList.size()).isEqualTo(2); From 7f990fe8eb3d98902deb9f73288886ceaec48fd8 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 00:57:09 +0900 Subject: [PATCH 15/27] =?UTF-8?q?[Feat]=20:=20Member=20RestAPI=20=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C=20=EB=B0=8F=20=EA=B3=84=EC=B8=B5=20=EB=B3=84=20dto=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/response/SuccessCode.java | 7 ++- .../VoucherManagement/io/CommandExecutor.java | 10 ++-- .../VoucherManagement/io/Output.java | 4 +- .../member/application/MemberService.java | 16 ++--- .../dto}/MemberCreateRequest.java | 2 +- .../application/dto/MemberCreateResponse.java | 12 ++++ .../dto}/MemberUpdateRequest.java | 2 +- .../mapper/MemberServiceMapper.java | 25 ++++++++ .../member/presentation/MemberController.java | 6 +- .../presentation/MemberRestController.java | 60 +++++++++++++++++++ .../dto/MemberCreateRequestData.java | 11 ++++ .../dto/MemberCreateResponseData.java | 12 ++++ .../dto/MemberUpdateRequestData.java | 9 +++ .../mapper/MemberControllerMapper.java | 28 +++++++++ 14 files changed, 183 insertions(+), 21 deletions(-) rename src/main/java/org/programmers/VoucherManagement/member/{dto/request => application/dto}/MemberCreateRequest.java (71%) create mode 100644 src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java rename src/main/java/org/programmers/VoucherManagement/member/{dto/request => application/dto}/MemberUpdateRequest.java (67%) create mode 100644 src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java create mode 100644 src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java create mode 100644 src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateRequestData.java create mode 100644 src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java create mode 100644 src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberUpdateRequestData.java create mode 100644 src/main/java/org/programmers/VoucherManagement/member/presentation/mapper/MemberControllerMapper.java diff --git a/src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java b/src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java index 2b2c0bf2f5..08a43a01d2 100644 --- a/src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java +++ b/src/main/java/org/programmers/VoucherManagement/global/response/SuccessCode.java @@ -10,15 +10,18 @@ public enum SuccessCode { * 2000번 -> Voucher */ DELETE_VOUCHER_SUCCESS(200, "V2000", "바우처 삭제를 성공하였습니다"), - UPDATE_VOUCHER_SUCCESS(200, "V2001", "바우처 수정을 성공하였습니다"); + UPDATE_VOUCHER_SUCCESS(200, "V2001", "바우처 수정을 성공하였습니다"), /** * 3000번 -> Member */ + UPDATE_MEMBER_SUCCESS(200, "V3000", "멤버 수정을 성공하였습니다"), + DELETE_MEMBER_SUCCESS(200, "V3001", "멤버 삭제를 성공하였습니다"), /** - * 3000번 -> Wallet + * 4000번 -> Wallet */ + DELETE_WALLET_SUCCESS(200, "V4000", "월렛 삭제를 성공하였습니다"); private final int status; diff --git a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java index a6848c300b..5e2a9a721a 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java +++ b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java @@ -1,17 +1,17 @@ package org.programmers.VoucherManagement.io; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateRequest; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; import org.programmers.VoucherManagement.member.domain.MemberStatus; -import org.programmers.VoucherManagement.member.dto.request.MemberCreateRequest; -import org.programmers.VoucherManagement.member.dto.request.MemberUpdateRequest; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; import org.programmers.VoucherManagement.member.presentation.MemberController; import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.programmers.VoucherManagement.voucher.domain.DiscountType; import org.programmers.VoucherManagement.voucher.presentation.VoucherController; -import org.programmers.VoucherManagement.wallet.dto.request.WalletCreateRequest; -import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; +import org.programmers.VoucherManagement.wallet.application.dto.WalletCreateRequest; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; import org.programmers.VoucherManagement.wallet.presentation.WalletController; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/programmers/VoucherManagement/io/Output.java b/src/main/java/org/programmers/VoucherManagement/io/Output.java index 35ddcf71da..25a8017c26 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/Output.java +++ b/src/main/java/org/programmers/VoucherManagement/io/Output.java @@ -1,8 +1,8 @@ package org.programmers.VoucherManagement.io; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponses; -import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; public interface Output { void printConsoleMessage(ConsoleMessage message); diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java b/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java index abe9dd642f..29319b774c 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java @@ -1,10 +1,12 @@ package org.programmers.VoucherManagement.member.application; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateRequest; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateResponse; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; +import org.programmers.VoucherManagement.member.application.mapper.MemberServiceMapper; import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.member.domain.MemberStatus; -import org.programmers.VoucherManagement.member.dto.request.MemberCreateRequest; -import org.programmers.VoucherManagement.member.dto.request.MemberUpdateRequest; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; import org.programmers.VoucherManagement.member.exception.MemberException; import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; @@ -35,12 +37,12 @@ public MemberGetResponses getAllBlackMembers() { } @Transactional - public void createMember(MemberCreateRequest memberCreateRequest) { - Member member = new Member(UUID.randomUUID(), - memberCreateRequest.name(), - memberCreateRequest.memberStatus()); + public MemberCreateResponse createMember(MemberCreateRequest memberCreateRequest) { + Member member = MemberServiceMapper.INSTANCE.createRequestToDomain(memberCreateRequest); memberStoreRepository.insert(member); + + return MemberServiceMapper.INSTANCE.domainToCreateResponse(member); } @Transactional diff --git a/src/main/java/org/programmers/VoucherManagement/member/dto/request/MemberCreateRequest.java b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateRequest.java similarity index 71% rename from src/main/java/org/programmers/VoucherManagement/member/dto/request/MemberCreateRequest.java rename to src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateRequest.java index f52eee0669..ba707bdab4 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/dto/request/MemberCreateRequest.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateRequest.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.member.dto.request; +package org.programmers.VoucherManagement.member.application.dto; import org.programmers.VoucherManagement.member.domain.MemberStatus; diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java new file mode 100644 index 0000000000..7066d3413b --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java @@ -0,0 +1,12 @@ +package org.programmers.VoucherManagement.member.application.dto; + +import org.programmers.VoucherManagement.member.domain.MemberStatus; + +import java.util.UUID; + +public record MemberCreateResponse( + UUID memberId, + String name, + MemberStatus memberStatus +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/dto/request/MemberUpdateRequest.java b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberUpdateRequest.java similarity index 67% rename from src/main/java/org/programmers/VoucherManagement/member/dto/request/MemberUpdateRequest.java rename to src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberUpdateRequest.java index e8996d42d8..1205f362a6 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/dto/request/MemberUpdateRequest.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberUpdateRequest.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.member.dto.request; +package org.programmers.VoucherManagement.member.application.dto; import org.programmers.VoucherManagement.member.domain.MemberStatus; diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java b/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java new file mode 100644 index 0000000000..0bbcd9bb6a --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java @@ -0,0 +1,25 @@ +package org.programmers.VoucherManagement.member.application.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateRequest; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateResponse; +import org.programmers.VoucherManagement.member.domain.Member; + +@Mapper(componentModel = "spring") +public interface MemberServiceMapper { + + MemberServiceMapper INSTANCE = Mappers.getMapper(MemberServiceMapper.class); + + @Mapping(source = "memberId", target = "memberId") + @Mapping(source = "name", target = "name") + @Mapping(source = "memberStatus", target = "memberStatus") + MemberCreateResponse domainToCreateResponse(Member member); + + @Mapping(target = "memberId", expression = "java(java.util.UUID.randomUUID())") + @Mapping(source = "name", target = "name") + @Mapping(source = "memberStatus", target = "memberStatus") + Member createRequestToDomain(MemberCreateRequest request); + +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java index b844c387b3..ac9f1b0d63 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java @@ -1,9 +1,9 @@ package org.programmers.VoucherManagement.member.presentation; import org.programmers.VoucherManagement.member.application.MemberService; -import org.programmers.VoucherManagement.member.dto.request.MemberCreateRequest; -import org.programmers.VoucherManagement.member.dto.request.MemberUpdateRequest; -import org.programmers.VoucherManagement.member.dto.response.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateRequest; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; import org.springframework.stereotype.Component; import java.util.UUID; diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java new file mode 100644 index 0000000000..b5cc973561 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java @@ -0,0 +1,60 @@ +package org.programmers.VoucherManagement.member.presentation; + +import jakarta.validation.Valid; +import org.programmers.VoucherManagement.global.response.BaseResponse; +import org.programmers.VoucherManagement.member.application.MemberService; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.presentation.dto.MemberCreateRequestData; +import org.programmers.VoucherManagement.member.presentation.dto.MemberCreateResponseData; +import org.programmers.VoucherManagement.member.presentation.dto.MemberUpdateRequestData; +import org.programmers.VoucherManagement.member.presentation.mapper.MemberControllerMapper; +import org.springframework.web.bind.annotation.*; + +import java.util.UUID; + +import static org.programmers.VoucherManagement.global.response.SuccessCode.DELETE_MEMBER_SUCCESS; +import static org.programmers.VoucherManagement.global.response.SuccessCode.UPDATE_MEMBER_SUCCESS; + +@RestController +@RequestMapping("/member") +public class MemberRestController { + private final MemberService memberService; + + public MemberRestController(MemberService memberService) { + this.memberService = memberService; + } + + @GetMapping() + public BaseResponse getAllMembers() { + return new BaseResponse<>(memberService.getAllMembers()); + } + + + @GetMapping("/black-list") + public BaseResponse getAllBlackMembers() { + return new BaseResponse<>(memberService.getAllBlackMembers()); + } + + @PostMapping("") + public BaseResponse createMember(@Valid @RequestBody MemberCreateRequestData data) { + return new BaseResponse<>(MemberControllerMapper.INSTANCE.createResponseToData( + memberService.createMember(MemberControllerMapper.INSTANCE.dataToCreateRequest(data)) + )); + } + + @PatchMapping("/{memberId}") + public BaseResponse updateMember(@PathVariable String memberId, @Valid @RequestBody MemberUpdateRequestData data) { + UUID memberUUID = UUID.fromString(memberId); + memberService.updateMember(memberUUID, MemberControllerMapper.INSTANCE.dataToUpdateRequest(data)); + + return new BaseResponse<>(UPDATE_MEMBER_SUCCESS); + } + + @DeleteMapping("/{memberId}") + public BaseResponse deleteMember(@PathVariable String memberId) { + UUID memberUUID = UUID.fromString(memberId); + memberService.deleteMember(memberUUID); + + return new BaseResponse<>(DELETE_MEMBER_SUCCESS); + } +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateRequestData.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateRequestData.java new file mode 100644 index 0000000000..737281f8a3 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateRequestData.java @@ -0,0 +1,11 @@ +package org.programmers.VoucherManagement.member.presentation.dto; + +import jakarta.validation.constraints.NotBlank; + +public record MemberCreateRequestData( + @NotBlank + String name, + @NotBlank + String memberStatus +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java new file mode 100644 index 0000000000..9638c79c14 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java @@ -0,0 +1,12 @@ +package org.programmers.VoucherManagement.member.presentation.dto; + +import org.programmers.VoucherManagement.member.domain.MemberStatus; + +import java.util.UUID; + +public record MemberCreateResponseData( + UUID memberId, + String name, + MemberStatus memberStatus +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberUpdateRequestData.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberUpdateRequestData.java new file mode 100644 index 0000000000..b312f3e6cd --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberUpdateRequestData.java @@ -0,0 +1,9 @@ +package org.programmers.VoucherManagement.member.presentation.dto; + +import jakarta.validation.constraints.NotBlank; + +public record MemberUpdateRequestData( + @NotBlank + String memberStatus +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/mapper/MemberControllerMapper.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/mapper/MemberControllerMapper.java new file mode 100644 index 0000000000..483a5e74f2 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/mapper/MemberControllerMapper.java @@ -0,0 +1,28 @@ +package org.programmers.VoucherManagement.member.presentation.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateRequest; +import org.programmers.VoucherManagement.member.application.dto.MemberCreateResponse; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; +import org.programmers.VoucherManagement.member.presentation.dto.MemberCreateRequestData; +import org.programmers.VoucherManagement.member.presentation.dto.MemberCreateResponseData; +import org.programmers.VoucherManagement.member.presentation.dto.MemberUpdateRequestData; + +@Mapper(componentModel = "spring") +public interface MemberControllerMapper { + MemberControllerMapper INSTANCE = Mappers.getMapper(MemberControllerMapper.class); + + @Mapping(source = "name", target = "name") + @Mapping(source = "memberStatus", target = "memberStatus") + MemberCreateRequest dataToCreateRequest(MemberCreateRequestData data); + + @Mapping(source = "memberStatus", target = "memberStatus") + MemberUpdateRequest dataToUpdateRequest(MemberUpdateRequestData data); + + @Mapping(source = "memberId", target = "memberId") + @Mapping(source = "name", target = "name") + @Mapping(source = "memberStatus", target = "memberStatus") + MemberCreateResponseData createResponseToData(MemberCreateResponse response); +} From 6f1e443045370bb70b44c9eade430c364264e985 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 00:57:46 +0900 Subject: [PATCH 16/27] =?UTF-8?q?[Feat]=20:=20VoucherMapper=20=EB=82=B4=20?= =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VoucherManagement/voucher/domain/VoucherFactory.java | 4 ++-- .../voucher/presentation/VoucherRestController.java | 6 +++--- .../presentation/mapper/VoucherControllerMapper.java | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java index ec75f2e71c..85e0bb0fe7 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java @@ -1,6 +1,6 @@ package org.programmers.VoucherManagement.voucher.domain; -import org.programmers.VoucherManagement.voucher.dto.request.VoucherCreateRequest; +import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; import java.util.UUID; @@ -10,7 +10,7 @@ private VoucherFactory() { } public static Voucher createVoucher(VoucherCreateRequest voucherCreateRequest) { - DiscountType discountType = voucherCreateRequest.discountType(); + DiscountType discountType = DiscountType.from(voucherCreateRequest.discountType()); return switch (discountType) { case FIXED -> diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java index 7048a16e98..550e2619b2 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java @@ -33,7 +33,7 @@ public VoucherRestController(VoucherService voucherService) { */ @PostMapping() public BaseResponse createVoucher(@Valid @RequestBody VoucherCreateRequestData data) { - return new BaseResponse<>(VoucherControllerMapper.INSTANCE.UpdateResponseToData( + return new BaseResponse<>(VoucherControllerMapper.INSTANCE.createResponseToData( voucherService.saveVoucher(VoucherControllerMapper.INSTANCE.dataToCreateRequest(data)))); } @@ -67,8 +67,8 @@ public BaseResponse getVoucherList() { * @param voucherId * @return BaseResponse */ - @DeleteMapping() - public BaseResponse deleteVoucher(@RequestParam String voucherId) { + @DeleteMapping("/{voucherId}") + public BaseResponse deleteVoucher(@PathVariable String voucherId) { voucherService.deleteVoucher(UUID.fromString(voucherId)); return new BaseResponse<>(DELETE_VOUCHER_SUCCESS); } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java index 6d90f9135b..a3ab1914c1 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/mapper/VoucherControllerMapper.java @@ -26,5 +26,5 @@ public interface VoucherControllerMapper { @Mapping(source = "voucherId", target = "voucherId") @Mapping(source = "discountType", target = "discountType") @Mapping(source = "discountValue", target = "discountValue") - VoucherCreateResponseData UpdateResponseToData(VoucherCreateResponse response); + VoucherCreateResponseData createResponseToData(VoucherCreateResponse response); } From 503e7d79b9e7c5281beec3a3a1fec7f6677321fb Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 00:58:49 +0900 Subject: [PATCH 17/27] =?UTF-8?q?[Feat]=20:=20Wallet=20RestApi=20=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C=20=EB=B0=8F=20=EA=B3=84=EC=B8=B5=20=EB=B3=84=20dto=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wallet/application/WalletService.java | 10 +++- .../dto}/WalletCreateRequest.java | 2 +- .../application/dto/WalletCreateResponse.java | 8 +++ .../dto}/WalletGetResponse.java | 4 +- .../dto}/WalletGetResponses.java | 2 +- .../mapper/WalletServiceMapper.java | 18 ++++++ .../wallet/presentation/WalletController.java | 4 +- .../presentation/WalletRestController.java | 56 +++++++++++++++++++ .../dto/WalletCreateRequestData.java | 7 +++ .../dto/WalletCreateResponseData.java | 8 +++ .../mapper/WalletControllerMapper.java | 23 ++++++++ 11 files changed, 133 insertions(+), 9 deletions(-) rename src/main/java/org/programmers/VoucherManagement/wallet/{dto/request => application/dto}/WalletCreateRequest.java (58%) create mode 100644 src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletCreateResponse.java rename src/main/java/org/programmers/VoucherManagement/wallet/{dto/response => application/dto}/WalletGetResponse.java (90%) rename src/main/java/org/programmers/VoucherManagement/wallet/{dto/response => application/dto}/WalletGetResponses.java (89%) create mode 100644 src/main/java/org/programmers/VoucherManagement/wallet/application/mapper/WalletServiceMapper.java create mode 100644 src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java create mode 100644 src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateRequestData.java create mode 100644 src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateResponseData.java create mode 100644 src/main/java/org/programmers/VoucherManagement/wallet/presentation/mapper/WalletControllerMapper.java diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java index ab2e898d6b..8c51651c8c 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java @@ -6,9 +6,11 @@ import org.programmers.VoucherManagement.voucher.domain.Voucher; import org.programmers.VoucherManagement.voucher.exception.VoucherException; import org.programmers.VoucherManagement.voucher.infrastructure.VoucherReaderRepository; +import org.programmers.VoucherManagement.wallet.application.dto.WalletCreateRequest; +import org.programmers.VoucherManagement.wallet.application.dto.WalletCreateResponse; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; +import org.programmers.VoucherManagement.wallet.application.mapper.WalletServiceMapper; import org.programmers.VoucherManagement.wallet.domain.Wallet; -import org.programmers.VoucherManagement.wallet.dto.request.WalletCreateRequest; -import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; import org.programmers.VoucherManagement.wallet.infrastructure.WalletReaderRepository; import org.programmers.VoucherManagement.wallet.infrastructure.WalletStoreRepository; import org.springframework.stereotype.Service; @@ -38,7 +40,7 @@ public WalletService(WalletReaderRepository walletReaderRepository } @Transactional - public void createWallet(WalletCreateRequest walletCreateRequest) { + public WalletCreateResponse createWallet(WalletCreateRequest walletCreateRequest) { Voucher voucher = voucherReaderRepository .findById(UUID.fromString(walletCreateRequest.voucherId())) .orElseThrow(() -> new VoucherException(NOT_FOUND_VOUCHER)); @@ -51,6 +53,8 @@ public void createWallet(WalletCreateRequest walletCreateRequest) { member); walletStoreRepository.insert(wallet); + + return WalletServiceMapper.INSTANCE.domainToCreateResponse(wallet); } public WalletGetResponses getWalletsByVoucherId(UUID voucherId) { diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/dto/request/WalletCreateRequest.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletCreateRequest.java similarity index 58% rename from src/main/java/org/programmers/VoucherManagement/wallet/dto/request/WalletCreateRequest.java rename to src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletCreateRequest.java index 9057ab5679..f733315bc0 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/dto/request/WalletCreateRequest.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletCreateRequest.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.wallet.dto.request; +package org.programmers.VoucherManagement.wallet.application.dto; public record WalletCreateRequest( String voucherId, diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletCreateResponse.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletCreateResponse.java new file mode 100644 index 0000000000..a33a1cca19 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletCreateResponse.java @@ -0,0 +1,8 @@ +package org.programmers.VoucherManagement.wallet.application.dto; + +public record WalletCreateResponse( + String walletId, + String voucherId, + String memberId +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/dto/response/WalletGetResponse.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java similarity index 90% rename from src/main/java/org/programmers/VoucherManagement/wallet/dto/response/WalletGetResponse.java rename to src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java index a79bc43967..621270e408 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/dto/response/WalletGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.wallet.dto.response; +package org.programmers.VoucherManagement.wallet.application.dto; import lombok.Builder; import org.programmers.VoucherManagement.member.domain.Member; @@ -22,7 +22,7 @@ public static WalletGetResponse toDto(Wallet wallet) { return WalletGetResponse.builder() .walletId(wallet.getWalletId()) - .memberId(member.getMemberUUID()) + .memberId(member.getMemberId()) .voucherId(voucher.getVoucherId()) .memberName(member.getName()) .discountType(voucher.getDiscountType()) diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/dto/response/WalletGetResponses.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponses.java similarity index 89% rename from src/main/java/org/programmers/VoucherManagement/wallet/dto/response/WalletGetResponses.java rename to src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponses.java index d7170b87ad..6e05053cf0 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/dto/response/WalletGetResponses.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponses.java @@ -1,4 +1,4 @@ -package org.programmers.VoucherManagement.wallet.dto.response; +package org.programmers.VoucherManagement.wallet.application.dto; import org.programmers.VoucherManagement.wallet.domain.Wallet; diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/mapper/WalletServiceMapper.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/mapper/WalletServiceMapper.java new file mode 100644 index 0000000000..ac9d51b43c --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/mapper/WalletServiceMapper.java @@ -0,0 +1,18 @@ +package org.programmers.VoucherManagement.wallet.application.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; +import org.programmers.VoucherManagement.wallet.application.dto.WalletCreateResponse; +import org.programmers.VoucherManagement.wallet.domain.Wallet; + + +@Mapper(componentModel = "spring") +public interface WalletServiceMapper { + WalletServiceMapper INSTANCE = Mappers.getMapper(WalletServiceMapper.class); + + @Mapping(source = "walletId", target = "walletId") + @Mapping(source = "voucher.voucherId", target = "voucherId") + @Mapping(source = "member.memberId", target = "memberId") + WalletCreateResponse domainToCreateResponse(Wallet wallet); +} diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java index 126920e9ca..38051ee3da 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java @@ -1,8 +1,8 @@ package org.programmers.VoucherManagement.wallet.presentation; import org.programmers.VoucherManagement.wallet.application.WalletService; -import org.programmers.VoucherManagement.wallet.dto.request.WalletCreateRequest; -import org.programmers.VoucherManagement.wallet.dto.response.WalletGetResponses; +import org.programmers.VoucherManagement.wallet.application.dto.WalletCreateRequest; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; import org.springframework.stereotype.Component; import java.util.UUID; diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java new file mode 100644 index 0000000000..8de0d372ca --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java @@ -0,0 +1,56 @@ +package org.programmers.VoucherManagement.wallet.presentation; + +import jakarta.validation.Valid; +import org.programmers.VoucherManagement.global.response.BaseResponse; +import org.programmers.VoucherManagement.wallet.application.WalletService; +import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; +import org.programmers.VoucherManagement.wallet.presentation.dto.WalletCreateRequestData; +import org.programmers.VoucherManagement.wallet.presentation.dto.WalletCreateResponseData; +import org.programmers.VoucherManagement.wallet.presentation.mapper.WalletControllerMapper; +import org.springframework.web.bind.annotation.*; + +import java.util.UUID; + +import static org.programmers.VoucherManagement.global.response.SuccessCode.DELETE_WALLET_SUCCESS; + +@RestController +@RequestMapping("/wallets") +public class WalletRestController { + private final WalletService walletService; + + public WalletRestController(WalletService walletService) { + this.walletService = walletService; + } + + @PostMapping() + public BaseResponse createWallet(@Valid @RequestBody WalletCreateRequestData data) { + WalletCreateResponseData responseData = + WalletControllerMapper.INSTANCE.createResponseToData( + walletService.createWallet(WalletControllerMapper.INSTANCE.dataToCreateRequest(data)) + ); + return new BaseResponse<>(responseData); + } + + @GetMapping("/voucher/{voucherId}") + public BaseResponse getWalletsByVoucherId(@PathVariable String voucherId) { + UUID voucherUUID = UUID.fromString(voucherId); + WalletGetResponses responses = walletService.getWalletsByVoucherId(voucherUUID); + return new BaseResponse<>(responses); + } + + + @GetMapping("/member/{memberId}") + public BaseResponse getWalletsByMemberId(@PathVariable String memberId) { + UUID memberUUID = UUID.fromString(memberId); + WalletGetResponses responses = walletService.getWalletsByMemberId(memberUUID); + return new BaseResponse<>(responses); + } + + @DeleteMapping("/{walletId}") + public BaseResponse deleteWallet(@PathVariable String walletId) { + UUID walletUUID = UUID.fromString(walletId); + walletService.deleteWallet(walletUUID); + + return new BaseResponse<>(DELETE_WALLET_SUCCESS); + } +} diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateRequestData.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateRequestData.java new file mode 100644 index 0000000000..d63236c0a7 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateRequestData.java @@ -0,0 +1,7 @@ +package org.programmers.VoucherManagement.wallet.presentation.dto; + +public record WalletCreateRequestData( + String voucherId, + String memberId +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateResponseData.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateResponseData.java new file mode 100644 index 0000000000..6fbefaa59f --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/dto/WalletCreateResponseData.java @@ -0,0 +1,8 @@ +package org.programmers.VoucherManagement.wallet.presentation.dto; + +public record WalletCreateResponseData( + String walletId, + String voucherId, + String memberId +) { +} diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/mapper/WalletControllerMapper.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/mapper/WalletControllerMapper.java new file mode 100644 index 0000000000..7ac6800bb6 --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/mapper/WalletControllerMapper.java @@ -0,0 +1,23 @@ +package org.programmers.VoucherManagement.wallet.presentation.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; +import org.programmers.VoucherManagement.wallet.application.dto.WalletCreateRequest; +import org.programmers.VoucherManagement.wallet.application.dto.WalletCreateResponse; +import org.programmers.VoucherManagement.wallet.presentation.dto.WalletCreateRequestData; +import org.programmers.VoucherManagement.wallet.presentation.dto.WalletCreateResponseData; + +@Mapper(componentModel = "spring") +public interface WalletControllerMapper { + WalletControllerMapper INSTANCE = Mappers.getMapper(WalletControllerMapper.class); + + @Mapping(source = "voucherId", target = "voucherId") + @Mapping(source = "memberId", target = "memberId") + WalletCreateRequest dataToCreateRequest(WalletCreateRequestData data); + + @Mapping(source = "walletId", target = "walletId") + @Mapping(source = "voucherId", target = "voucherId") + @Mapping(source = "memberId", target = "memberId") + WalletCreateResponseData createResponseToData(WalletCreateResponse response); +} From a250699da4cd61ef69bbbb97c72ea8979408ac39 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 01:15:21 +0900 Subject: [PATCH 18/27] =?UTF-8?q?[Refactor]=20:=20sql=20=EC=BF=BC=EB=A6=AC?= =?UTF-8?q?=20=EB=AC=B8=20=EB=82=B4=20=ED=82=A4=EC=9B=8C=EB=93=9C=20?= =?UTF-8?q?=EB=8C=80=EB=AC=B8=EC=9E=90=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/infrastructure/JdbcMemberReaderRepository.java | 6 +++--- .../member/infrastructure/JdbcMemberStoreRepository.java | 6 +++--- .../voucher/infrastructure/JdbcVoucherReaderRepository.java | 4 ++-- .../voucher/infrastructure/JdbcVoucherStoreRepository.java | 6 +++--- .../wallet/infrastructure/JdbcWalletReaderRepository.java | 6 +++--- .../wallet/infrastructure/JdbcWalletStoreRepository.java | 4 ++-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java index ccde991c9e..a7ce94293b 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java @@ -23,21 +23,21 @@ public JdbcMemberReaderRepository(JdbcTemplate jdbcTemplate) { @Override public List findAll() { - String sql = "select member_id, member_status, name from member_table"; + String sql = "SELECT member_id, member_status, name FROM member_table"; return jdbcTemplate.query(sql, memberRowMapper()); } @Override public List findAllByMemberStatus(MemberStatus memberStatus) { - String sql = "select member_id, member_status, name from member_table where member_status = ?"; + String sql = "SELECT member_id, member_status, name FROM member_table WHERE member_status = ?"; return jdbcTemplate.query(sql, memberRowMapper(), memberStatus.toString()); } @Override public Optional findById(UUID memberId) { - String sql = "select member_id, member_status, name from member_table where member_id = ?"; + String sql = "SELECT member_id, member_status, name FROM member_table WHERE member_id = ?"; try { return Optional.ofNullable(jdbcTemplate.queryForObject(sql, memberRowMapper(), diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java index 9254f974cb..a6d7d0296a 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java @@ -22,7 +22,7 @@ public JdbcMemberStoreRepository(JdbcTemplate jdbcTemplate) { @Override public Member insert(Member member) { - String sql = "insert into member_table(member_id, name, member_status) values (?,?,?)"; + String sql = "INSERT INTO member_table(member_id, name, member_status) VALUES (?,?,?)"; int insertCount = jdbcTemplate.update(sql, member.getMemberId().toString(), member.getName(), @@ -36,7 +36,7 @@ public Member insert(Member member) { @Override public void update(Member member) { - String sql = "update member_table set name = ?, member_status = ? where member_id = ?"; + String sql = "UPDATE member_table SET name = ?, member_status = ? WHERE member_id = ?"; int updateCount = jdbcTemplate.update(sql, member.getName(), member.getMemberStatus().toString(), @@ -48,7 +48,7 @@ public void update(Member member) { @Override public void delete(UUID memberId) { - String sql = "delete from member_table where member_id = ?"; + String sql = "DELETE FROM member_table WHERE member_id = ?"; int deleteCount = jdbcTemplate.update(sql, memberId.toString()); if (deleteCount != 1) { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java index d61cd4ff7f..56c2eef71d 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java @@ -25,13 +25,13 @@ public JdbcVoucherReaderRepository(JdbcTemplate jdbcTemplate) { @Override public List findAll() { - String sql = "select voucher_id, voucher_value, voucher_type from voucher_table"; + String sql = "SELECT voucher_id, voucher_value, voucher_type FROM voucher_table"; return jdbcTemplate.query(sql, voucherRowMapper()); } @Override public Optional findById(UUID voucherId) { - String sql = "select voucher_id, voucher_value, voucher_type from voucher_table where voucher_id = ?"; + String sql = "SELECT voucher_id, voucher_value, voucher_type FROM voucher_table WHERE voucher_id = ?"; try { return Optional.ofNullable(jdbcTemplate.queryForObject(sql, voucherRowMapper(), diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java index fbe234b51e..4825e675fb 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java @@ -21,7 +21,7 @@ public JdbcVoucherStoreRepository(JdbcTemplate jdbcTemplate) { @Override public Voucher insert(Voucher voucher) { - String sql = "insert into voucher_table(voucher_id, voucher_value , voucher_type) values (?,?,?)"; + String sql = "INSERT INTO voucher_table(voucher_id, voucher_value , voucher_type) VALUES (?,?,?)"; int insertCount = jdbcTemplate.update(sql, voucher.getVoucherId().toString(), voucher.getDiscountValue().getValue(), @@ -35,7 +35,7 @@ public Voucher insert(Voucher voucher) { @Override public void delete(UUID voucherId) { - String sql = "delete from voucher_table where voucher_id = ?"; + String sql = "DELETE FROM voucher_table WHERE voucher_id = ?"; int deleteCount = jdbcTemplate.update(sql, voucherId.toString()); if (deleteCount != 1) { @@ -45,7 +45,7 @@ public void delete(UUID voucherId) { @Override public void update(Voucher voucher) { - String sql = "update voucher_table set voucher_value = ? where voucher_id = ?"; + String sql = "UPDATE voucher_table SET voucher_value = ? WHERE voucher_id = ?"; int updateCount = jdbcTemplate.update(sql, voucher.getDiscountValue().getValue(), voucher.getVoucherId().toString()); diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java index 4b10ec2543..f68482a0bb 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java @@ -31,7 +31,7 @@ public JdbcWalletReaderRepository(JdbcTemplate jdbcTemplate, MemberReaderReposit @Override public Optional findById(UUID walletId) { - String sql = "select wallet_id, voucher_id, member_id from wallet_table where wallet_id = ?"; + String sql = "SELECT wallet_id, voucher_id, member_id FROM wallet_table WHERE wallet_id = ?"; try { return Optional.ofNullable(jdbcTemplate.queryForObject(sql, walletRowMapper(), @@ -43,14 +43,14 @@ public Optional findById(UUID walletId) { @Override public List findAllByMemberId(UUID memberId) { - String sql = "select wallet_id, voucher_id, member_id from wallet_table where member_id = ?"; + String sql = "SELECT wallet_id, voucher_id, member_id FROM wallet_table WHERE member_id = ?"; return jdbcTemplate.query(sql, walletRowMapper(), memberId.toString()); } @Override public List findAllByVoucherId(UUID voucherId) { - String sql = "select wallet_id, voucher_id, member_id from wallet_table where voucher_id = ?"; + String sql = "SELECT wallet_id, voucher_id, member_id FROM wallet_table WHERE voucher_id = ?"; return jdbcTemplate.query(sql, walletRowMapper(), voucherId.toString()); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java index 8495d07472..d0ccd8c56e 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java @@ -23,7 +23,7 @@ public JdbcWalletStoreRepository(JdbcTemplate jdbcTemplate) { @Override public Wallet insert(Wallet wallet) { - String sql = "insert into wallet_table(wallet_id, voucher_id, member_id) values (?,?,?)"; + String sql = "INSERT INTO wallet_table(wallet_id, voucher_id, member_id) VALUES (?,?,?)"; int insertCount = jdbcTemplate.update(sql, wallet.getWalletId().toString(), wallet.getVoucher().getVoucherId().toString(), @@ -36,7 +36,7 @@ public Wallet insert(Wallet wallet) { @Override public void delete(UUID walletId) { - String sql = "delete from wallet_table where wallet_id = ?"; + String sql = "DELETE FROM wallet_table WHERE wallet_id = ?"; int deleteCount = jdbcTemplate.update(sql, walletId.toString()); if (deleteCount != 1) { From f4fdb1ff320c15af31afabf0d4bedcddd319a854 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 02:20:45 +0900 Subject: [PATCH 19/27] =?UTF-8?q?[Refactor]=20:=20BaseTimeEntity=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20-=20created=5Fat=20=ED=95=84=EB=93=9C=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/entity/BaseTimeEntity.java | 19 +++++++++++++++++++ .../mapper/MemberServiceMapper.java | 1 - .../member/domain/Member.java | 6 ++++-- .../JdbcMemberStoreRepository.java | 6 ++++-- .../voucher/domain/Voucher.java | 4 +++- .../JdbcVoucherStoreRepository.java | 6 ++++-- .../wallet/domain/Wallet.java | 3 ++- .../JdbcWalletStoreRepository.java | 6 ++++-- src/main/resources/sql/schema.sql | 3 +++ 9 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 src/main/java/org/programmers/VoucherManagement/global/entity/BaseTimeEntity.java diff --git a/src/main/java/org/programmers/VoucherManagement/global/entity/BaseTimeEntity.java b/src/main/java/org/programmers/VoucherManagement/global/entity/BaseTimeEntity.java new file mode 100644 index 0000000000..ba4c34401f --- /dev/null +++ b/src/main/java/org/programmers/VoucherManagement/global/entity/BaseTimeEntity.java @@ -0,0 +1,19 @@ +package org.programmers.VoucherManagement.global.entity; + +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Component +public class BaseTimeEntity { + protected String createdAt; + + public BaseTimeEntity() { + this.createdAt = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } + + public String getCreatedAt() { + return createdAt; + } +} diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java b/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java index 0bbcd9bb6a..fa78d2c0c0 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java @@ -21,5 +21,4 @@ public interface MemberServiceMapper { @Mapping(source = "name", target = "name") @Mapping(source = "memberStatus", target = "memberStatus") Member createRequestToDomain(MemberCreateRequest request); - } diff --git a/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java b/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java index 47b6db6b33..d6210b84c8 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java +++ b/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java @@ -1,14 +1,16 @@ package org.programmers.VoucherManagement.member.domain; -import java.util.UUID; +import org.programmers.VoucherManagement.global.entity.BaseTimeEntity; -public class Member { +import java.util.UUID; +public class Member extends BaseTimeEntity { private UUID memberId; private String name; private MemberStatus memberStatus; public Member(UUID memberId, String name, MemberStatus memberStatus) { + super(); this.memberId = memberId; this.name = name; this.memberStatus = memberStatus; diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java index a6d7d0296a..e542deea03 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java @@ -22,11 +22,13 @@ public JdbcMemberStoreRepository(JdbcTemplate jdbcTemplate) { @Override public Member insert(Member member) { - String sql = "INSERT INTO member_table(member_id, name, member_status) VALUES (?,?,?)"; + String sql = "INSERT INTO member_table(member_id, name, member_status, created_at) VALUES (?,?,?,?)"; int insertCount = jdbcTemplate.update(sql, member.getMemberId().toString(), member.getName(), - member.getMemberStatus().toString()); + member.getMemberStatus().toString(), + member.getCreatedAt() + ); if (insertCount != 1) { throw new MemberException(FAIL_TO_INSERT_MEMBER); diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java index 8627013271..11285291be 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java @@ -1,8 +1,10 @@ package org.programmers.VoucherManagement.voucher.domain; +import org.programmers.VoucherManagement.global.entity.BaseTimeEntity; + import java.util.UUID; -public abstract class Voucher { +public abstract class Voucher extends BaseTimeEntity { protected UUID voucherId; protected DiscountValue discountValue; protected DiscountType discountType; diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java index 4825e675fb..cb7c8d03bd 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java @@ -21,11 +21,13 @@ public JdbcVoucherStoreRepository(JdbcTemplate jdbcTemplate) { @Override public Voucher insert(Voucher voucher) { - String sql = "INSERT INTO voucher_table(voucher_id, voucher_value , voucher_type) VALUES (?,?,?)"; + String sql = "INSERT INTO voucher_table(voucher_id, voucher_value, voucher_type, created_at) VALUES (?,?,?,?)"; int insertCount = jdbcTemplate.update(sql, voucher.getVoucherId().toString(), voucher.getDiscountValue().getValue(), - voucher.getDiscountType().getType()); + voucher.getDiscountType().getType(), + voucher.getCreatedAt() + ); if (insertCount != 1) { throw new VoucherException(FAIL_TO_INSERT_VOUCHER); diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java b/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java index 370b39da22..8928a6ca93 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java @@ -1,11 +1,12 @@ package org.programmers.VoucherManagement.wallet.domain; +import org.programmers.VoucherManagement.global.entity.BaseTimeEntity; import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.voucher.domain.Voucher; import java.util.UUID; -public class Wallet { +public class Wallet extends BaseTimeEntity { private UUID walletId; private Voucher voucher; private Member member; diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java index d0ccd8c56e..dcf1aefaa3 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java @@ -23,11 +23,13 @@ public JdbcWalletStoreRepository(JdbcTemplate jdbcTemplate) { @Override public Wallet insert(Wallet wallet) { - String sql = "INSERT INTO wallet_table(wallet_id, voucher_id, member_id) VALUES (?,?,?)"; + String sql = "INSERT INTO wallet_table(wallet_id, voucher_id, member_id, created_at) VALUES (?,?,?,?)"; int insertCount = jdbcTemplate.update(sql, wallet.getWalletId().toString(), wallet.getVoucher().getVoucherId().toString(), - wallet.getMember().getMemberId().toString()); + wallet.getMember().getMemberId().toString(), + wallet.getCreatedAt() + ); if (insertCount != 1) { throw new WalletException(FAIL_TO_INSERT_WALLET); } diff --git a/src/main/resources/sql/schema.sql b/src/main/resources/sql/schema.sql index 773027c70e..3273ffaf26 100644 --- a/src/main/resources/sql/schema.sql +++ b/src/main/resources/sql/schema.sql @@ -7,6 +7,7 @@ create table member_table member_id varchar(60), member_status varchar(10) not null, name varchar(20) not null, + created_at varchar(20) not null, primary key (member_id) ); @@ -16,6 +17,7 @@ create table voucher_table voucher_id varchar(60), voucher_value int not null, voucher_type varchar(20) not null, + created_at varchar(20) not null, primary key (voucher_id) ); @@ -25,6 +27,7 @@ create table wallet_table wallet_id varchar(60), voucher_id varchar(60) not null, member_id varchar(60) not null, + created_at varchar(20) not null, primary key (wallet_id), foreign key (voucher_id) references voucher_table (voucher_id), From 98797c9e01d3123beeb4f284dd9e8840dc96946c Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 03:13:12 +0900 Subject: [PATCH 20/27] =?UTF-8?q?[Feat]=20:=20Ulid=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 466e3c95b9..b03625990b 100644 --- a/build.gradle +++ b/build.gradle @@ -48,6 +48,9 @@ dependencies { //validation implementation 'org.springframework.boot:spring-boot-starter-validation' + + // ulid-creator + implementation group: 'com.github.f4b6a3', name: 'ulid-creator', version: '5.1.0' } tasks.named('test') { From 09b519ef5d5de58508eeb57b0a70cb46d8b0d8f6 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 03:13:34 +0900 Subject: [PATCH 21/27] =?UTF-8?q?[Feat]=20:=20Member=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=20id=20Ulid=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 --- .../global/util/MemberConverter.java | 5 +- .../VoucherManagement/io/CommandExecutor.java | 6 +- .../member/application/MemberService.java | 8 +- .../application/dto/MemberCreateResponse.java | 4 +- .../application/dto/MemberGetResponse.java | 4 +- .../mapper/MemberServiceMapper.java | 2 +- .../member/domain/Member.java | 8 +- .../JdbcMemberReaderRepository.java | 8 +- .../JdbcMemberStoreRepository.java | 10 +- .../MemberReaderRepository.java | 3 +- .../infrastructure/MemberStoreRepository.java | 4 +- .../member/presentation/MemberController.java | 6 +- .../presentation/MemberRestController.java | 8 +- .../dto/MemberCreateResponseData.java | 4 +- .../wallet/application/WalletService.java | 4 +- .../application/dto/WalletGetResponse.java | 2 +- .../JdbcWalletReaderRepository.java | 6 +- .../WalletReaderRepository.java | 2 +- .../wallet/presentation/WalletController.java | 2 +- .../presentation/WalletRestController.java | 3 +- .../application/MemberServiceMockTest.java | 209 +++++++-------- .../member/application/MemberServiceTest.java | 238 ++++++++---------- 22 files changed, 239 insertions(+), 307 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/global/util/MemberConverter.java b/src/main/java/org/programmers/VoucherManagement/global/util/MemberConverter.java index c85fdb848c..463483b7b7 100644 --- a/src/main/java/org/programmers/VoucherManagement/global/util/MemberConverter.java +++ b/src/main/java/org/programmers/VoucherManagement/global/util/MemberConverter.java @@ -4,7 +4,6 @@ import org.programmers.VoucherManagement.member.domain.MemberStatus; import java.util.List; -import java.util.UUID; import java.util.stream.Collectors; public class MemberConverter { @@ -16,11 +15,11 @@ private MemberConverter() { public static Member toMember(String line) { String[] chunks = line.split(SEPARATOR); - UUID uuid = UUID.fromString(chunks[0]); + String id = chunks[0]; String name = chunks[1]; MemberStatus memberStatus = MemberStatus.from(chunks[2]); - return new Member(uuid, name, memberStatus); + return new Member(id, name, memberStatus); } public static List toMembers(List lines) { diff --git a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java index 5e2a9a721a..fa3442f7f4 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java +++ b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java @@ -70,12 +70,12 @@ public void execute(MenuType menuType) { case UPDATE_MEMBER -> { String memberId = console.readMemberId(); MemberStatus memberStatus = MemberStatus.from(console.readMemberStatus()); - memberController.updateMember(UUID.fromString(memberId), new MemberUpdateRequest(memberStatus)); + memberController.updateMember(memberId, new MemberUpdateRequest(memberStatus)); console.printConsoleMessage(TASK_SUCCESSFUL_MESSAGE); } case DELETE_MEMBER -> { String memberId = console.readMemberId(); - memberController.deleteMember(UUID.fromString(memberId)); + memberController.deleteMember(memberId); console.printConsoleMessage(TASK_SUCCESSFUL_MESSAGE); } case BLACK_MEMBER_LIST -> { @@ -93,7 +93,7 @@ public void execute(MenuType menuType) { } case LIST_WALLET_BY_MEMBER -> { String memberId = console.readMemberId(); - WalletGetResponses walletList = walletController.getWalletsByMemberId(UUID.fromString(memberId)); + WalletGetResponses walletList = walletController.getWalletsByMemberId(memberId); console.printWalletList(walletList); } case LIST_WALLET_BY_VOUCHER -> { diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java b/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java index 29319b774c..8156a47a42 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/MemberService.java @@ -13,8 +13,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_FOUND_MEMBER; @Service @@ -38,22 +36,22 @@ public MemberGetResponses getAllBlackMembers() { @Transactional public MemberCreateResponse createMember(MemberCreateRequest memberCreateRequest) { - Member member = MemberServiceMapper.INSTANCE.createRequestToDomain(memberCreateRequest); + Member member = MemberServiceMapper.INSTANCE.createRequestToDomain(memberCreateRequest); memberStoreRepository.insert(member); return MemberServiceMapper.INSTANCE.domainToCreateResponse(member); } @Transactional - public void updateMember(UUID memberId, MemberUpdateRequest memberUpdateRequest) { + public void updateMember(String memberId, MemberUpdateRequest memberUpdateRequest) { Member member = memberReaderRepository.findById(memberId).orElseThrow(() -> new MemberException(NOT_FOUND_MEMBER)); member.changeMemberStatus(memberUpdateRequest.memberStatus()); memberStoreRepository.update(member); } @Transactional - public void deleteMember(UUID memberId) { + public void deleteMember(String memberId) { memberStoreRepository.delete(memberId); } } diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java index 7066d3413b..95656af040 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberCreateResponse.java @@ -2,10 +2,8 @@ import org.programmers.VoucherManagement.member.domain.MemberStatus; -import java.util.UUID; - public record MemberCreateResponse( - UUID memberId, + String memberId, String name, MemberStatus memberStatus ) { diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponse.java b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponse.java index 261b480d3c..e2deaed1ad 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/dto/MemberGetResponse.java @@ -4,11 +4,9 @@ import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.member.domain.MemberStatus; -import java.util.UUID; - @Builder public record MemberGetResponse( - UUID memberId, + String memberId, String name, MemberStatus memberStatus ) { diff --git a/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java b/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java index fa78d2c0c0..75eef51aab 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java +++ b/src/main/java/org/programmers/VoucherManagement/member/application/mapper/MemberServiceMapper.java @@ -17,7 +17,7 @@ public interface MemberServiceMapper { @Mapping(source = "memberStatus", target = "memberStatus") MemberCreateResponse domainToCreateResponse(Member member); - @Mapping(target = "memberId", expression = "java(java.util.UUID.randomUUID())") + @Mapping(target = "memberId", expression = "java(com.github.f4b6a3.ulid.UlidCreator.getUlid().toString())") @Mapping(source = "name", target = "name") @Mapping(source = "memberStatus", target = "memberStatus") Member createRequestToDomain(MemberCreateRequest request); diff --git a/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java b/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java index d6210b84c8..f9bbb2ebf7 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java +++ b/src/main/java/org/programmers/VoucherManagement/member/domain/Member.java @@ -2,21 +2,19 @@ import org.programmers.VoucherManagement.global.entity.BaseTimeEntity; -import java.util.UUID; - public class Member extends BaseTimeEntity { - private UUID memberId; + private String memberId; private String name; private MemberStatus memberStatus; - public Member(UUID memberId, String name, MemberStatus memberStatus) { + public Member(String memberId, String name, MemberStatus memberStatus) { super(); this.memberId = memberId; this.name = name; this.memberStatus = memberStatus; } - public UUID getMemberId() { + public String getMemberId() { return memberId; } diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java index a7ce94293b..aa6298fc61 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberReaderRepository.java @@ -10,7 +10,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; @Primary @Repository @@ -36,12 +35,12 @@ public List findAllByMemberStatus(MemberStatus memberStatus) { } @Override - public Optional findById(UUID memberId) { + public Optional findById(String memberId) { String sql = "SELECT member_id, member_status, name FROM member_table WHERE member_id = ?"; try { return Optional.ofNullable(jdbcTemplate.queryForObject(sql, memberRowMapper(), - memberId.toString())); + memberId)); } catch (EmptyResultDataAccessException e) { return Optional.empty(); } @@ -49,7 +48,8 @@ public Optional findById(UUID memberId) { public static RowMapper memberRowMapper() { return (result, rowNum) -> new Member( - UUID.fromString(result.getString("member_id")), +// UUID.fromString(result.getString("member_id")), + result.getString("member_id"), result.getString("name"), MemberStatus.from(result.getString("member_status")) ); diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java index e542deea03..501b17d468 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberStoreRepository.java @@ -6,8 +6,6 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.ErrorCode.*; @Primary @@ -24,7 +22,7 @@ public JdbcMemberStoreRepository(JdbcTemplate jdbcTemplate) { public Member insert(Member member) { String sql = "INSERT INTO member_table(member_id, name, member_status, created_at) VALUES (?,?,?,?)"; int insertCount = jdbcTemplate.update(sql, - member.getMemberId().toString(), + member.getMemberId(), member.getName(), member.getMemberStatus().toString(), member.getCreatedAt() @@ -42,17 +40,17 @@ public void update(Member member) { int updateCount = jdbcTemplate.update(sql, member.getName(), member.getMemberStatus().toString(), - member.getMemberId().toString()); + member.getMemberId()); if (updateCount != 1) { throw new MemberException(FAIL_TO_UPDATE_MEMBER); } } @Override - public void delete(UUID memberId) { + public void delete(String memberId) { String sql = "DELETE FROM member_table WHERE member_id = ?"; int deleteCount = jdbcTemplate.update(sql, - memberId.toString()); + memberId); if (deleteCount != 1) { throw new MemberException(FAIL_TO_DELETE_MEMBER); } diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberReaderRepository.java index 09f1a0012f..6a240daf4b 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberReaderRepository.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; public interface MemberReaderRepository { /** @@ -28,5 +27,5 @@ public interface MemberReaderRepository { * @param memberId * @return Optional - memberId값을 이용해 조회한 회원 */ - Optional findById(UUID memberId); + Optional findById(String memberId); } diff --git a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberStoreRepository.java index 1535d4233c..218c108096 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/member/infrastructure/MemberStoreRepository.java @@ -2,8 +2,6 @@ import org.programmers.VoucherManagement.member.domain.Member; -import java.util.UUID; - public interface MemberStoreRepository { /** * db에 회원 저장 @@ -25,5 +23,5 @@ public interface MemberStoreRepository { * * @param memberId */ - void delete(UUID memberId); //삭제 + void delete(String memberId); //삭제 } diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java index ac9f1b0d63..07f2b2fb6d 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberController.java @@ -6,8 +6,6 @@ import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; import org.springframework.stereotype.Component; -import java.util.UUID; - @Component public class MemberController { private final MemberService memberService; @@ -28,11 +26,11 @@ public void createMember(MemberCreateRequest memberCreateRequest) { memberService.createMember(memberCreateRequest); } - public void updateMember(UUID memberId, MemberUpdateRequest memberUpdateRequest) { + public void updateMember(String memberId, MemberUpdateRequest memberUpdateRequest) { memberService.updateMember(memberId, memberUpdateRequest); } - public void deleteMember(UUID memberId) { + public void deleteMember(String memberId) { memberService.deleteMember(memberId); } } diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java index b5cc973561..ab3a250117 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/MemberRestController.java @@ -10,8 +10,6 @@ import org.programmers.VoucherManagement.member.presentation.mapper.MemberControllerMapper; import org.springframework.web.bind.annotation.*; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.SuccessCode.DELETE_MEMBER_SUCCESS; import static org.programmers.VoucherManagement.global.response.SuccessCode.UPDATE_MEMBER_SUCCESS; @@ -44,16 +42,14 @@ public BaseResponse createMember(@Valid @RequestBody M @PatchMapping("/{memberId}") public BaseResponse updateMember(@PathVariable String memberId, @Valid @RequestBody MemberUpdateRequestData data) { - UUID memberUUID = UUID.fromString(memberId); - memberService.updateMember(memberUUID, MemberControllerMapper.INSTANCE.dataToUpdateRequest(data)); + memberService.updateMember(memberId, MemberControllerMapper.INSTANCE.dataToUpdateRequest(data)); return new BaseResponse<>(UPDATE_MEMBER_SUCCESS); } @DeleteMapping("/{memberId}") public BaseResponse deleteMember(@PathVariable String memberId) { - UUID memberUUID = UUID.fromString(memberId); - memberService.deleteMember(memberUUID); + memberService.deleteMember(memberId); return new BaseResponse<>(DELETE_MEMBER_SUCCESS); } diff --git a/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java index 9638c79c14..eb3364b3de 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java +++ b/src/main/java/org/programmers/VoucherManagement/member/presentation/dto/MemberCreateResponseData.java @@ -2,10 +2,8 @@ import org.programmers.VoucherManagement.member.domain.MemberStatus; -import java.util.UUID; - public record MemberCreateResponseData( - UUID memberId, + String memberId, String name, MemberStatus memberStatus ) { diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java index 8c51651c8c..d2838765bd 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java @@ -45,7 +45,7 @@ public WalletCreateResponse createWallet(WalletCreateRequest walletCreateRequest .findById(UUID.fromString(walletCreateRequest.voucherId())) .orElseThrow(() -> new VoucherException(NOT_FOUND_VOUCHER)); Member member = memberReaderRepository - .findById(UUID.fromString(walletCreateRequest.memberId())) + .findById(walletCreateRequest.memberId()) .orElseThrow(() -> new MemberException(NOT_FOUND_MEMBER)); Wallet wallet = new Wallet(UUID.randomUUID(), @@ -61,7 +61,7 @@ public WalletGetResponses getWalletsByVoucherId(UUID voucherId) { return new WalletGetResponses(walletReaderRepository.findAllByVoucherId(voucherId)); } - public WalletGetResponses getWalletsByMemberId(UUID memberId) { + public WalletGetResponses getWalletsByMemberId(String memberId) { return new WalletGetResponses(walletReaderRepository.findAllByMemberId(memberId)); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java index 621270e408..60c9f2a61b 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java @@ -10,7 +10,7 @@ @Builder public record WalletGetResponse(UUID walletId, - UUID memberId, + String memberId, UUID voucherId, String memberName, DiscountType discountType, diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java index f68482a0bb..ba0e6c0b1b 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java @@ -42,10 +42,10 @@ public Optional findById(UUID walletId) { } @Override - public List findAllByMemberId(UUID memberId) { + public List findAllByMemberId(String memberId) { String sql = "SELECT wallet_id, voucher_id, member_id FROM wallet_table WHERE member_id = ?"; - return jdbcTemplate.query(sql, walletRowMapper(), memberId.toString()); + return jdbcTemplate.query(sql, walletRowMapper(), memberId); } @Override @@ -59,7 +59,7 @@ public RowMapper walletRowMapper() { return (result, rowNum) -> new Wallet( UUID.fromString(result.getString("wallet_id")), voucherReaderRepository.findById(UUID.fromString(result.getString("voucher_id"))).orElseThrow(() -> new VoucherException(ErrorCode.NOT_FOUND_VOUCHER)), - memberReaderRepository.findById(UUID.fromString(result.getString("member_id"))).orElseThrow(() -> new MemberException(ErrorCode.NOT_FOUND_MEMBER)) + memberReaderRepository.findById(result.getString("member_id")).orElseThrow(() -> new MemberException(ErrorCode.NOT_FOUND_MEMBER)) ); } } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java index 7a7c98bd66..773bac7189 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java @@ -21,7 +21,7 @@ public interface WalletReaderRepository { * @param memberId * @return List - memberId를 이용해 조회한 특정 회원이 가지고 있는 Wallet 리스트 */ - List findAllByMemberId(UUID memberId); + List findAllByMemberId(String memberId); /** * voucherId를 이용해 Wallet 조회 diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java index 38051ee3da..a607e16f5c 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java @@ -23,7 +23,7 @@ public WalletGetResponses getWalletsByVoucherId(UUID voucherId) { return walletService.getWalletsByVoucherId(voucherId); } - public WalletGetResponses getWalletsByMemberId(UUID memberId) { + public WalletGetResponses getWalletsByMemberId(String memberId) { return walletService.getWalletsByMemberId(memberId); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java index 8de0d372ca..e6a5470b92 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java @@ -41,8 +41,7 @@ public BaseResponse getWalletsByVoucherId(@PathVariable Stri @GetMapping("/member/{memberId}") public BaseResponse getWalletsByMemberId(@PathVariable String memberId) { - UUID memberUUID = UUID.fromString(memberId); - WalletGetResponses responses = walletService.getWalletsByMemberId(memberUUID); + WalletGetResponses responses = walletService.getWalletsByMemberId(memberId); return new BaseResponse<>(responses); } diff --git a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java index b4274c542e..9d4871d3fb 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java @@ -1,124 +1,101 @@ package org.programmers.VoucherManagement.member.application; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.programmers.VoucherManagement.member.application.dto.MemberGetResponse; -import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; -import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; -import org.programmers.VoucherManagement.member.domain.Member; -import org.programmers.VoucherManagement.member.domain.MemberStatus; -import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; -import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; - -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; @ExtendWith(MockitoExtension.class) public class MemberServiceMockTest { - - @InjectMocks - MemberService memberService; - - @Mock - MemberStoreRepository memberStoreRepository; - - @Mock - MemberReaderRepository memberReaderRepository; - - @Test - @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") - void updateMember_IdAndDto_Success() { - //given - UUID memberId = UUID.randomUUID(); - Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); - memberStoreRepository.insert(saveMember); - MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); - - //mocking - given(memberReaderRepository.findById(memberId)).willReturn(Optional.of(saveMember)); - - //when - memberService.updateMember(memberId, updateRequestDto); - - //then - Member updateMember = memberReaderRepository.findById(memberId).get(); - assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); - } - - @Test - @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") - void deleteMember_Id_Success() { - //given - UUID memberId = UUID.randomUUID(); - Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); - memberStoreRepository.insert(saveMember); - - //when - memberService.deleteMember(saveMember.getMemberId()); - - //then - verify(memberStoreRepository, times(1)).delete(memberId); - } - - @Test - @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") - void getAllMembers_EqualsListOfMembers() { - //given - Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); - Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.WHITE); - List memberList = Arrays.asList(member1, member2); - - //mocking - given(memberReaderRepository.findAll()).willReturn(memberList); - - //when - MemberGetResponses response = memberService.getAllMembers(); - - //then - List responseExpect = memberList.stream() - .map(MemberGetResponse::toDto) - .collect(Collectors.toList()); - - assertThat(response).isNotNull(); - assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); - } - - @Test - @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") - void getAllBlackMembers_EqualsListOfMembers() { - //given - Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); - Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.BLACK); - Member member3 = new Member(UUID.randomUUID(), "Lee", MemberStatus.WHITE); - List blackMemberList = Stream.of(member1, member2, member3) - .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) - .collect(Collectors.toList()); - - //mocking - given(memberReaderRepository.findAllByMemberStatus(MemberStatus.BLACK)).willReturn(blackMemberList); - - //when - MemberGetResponses response = memberService.getAllBlackMembers(); - - //then - List responseExpect = blackMemberList.stream() - .map(MemberGetResponse::toDto) - .collect(Collectors.toList()); - - assertThat(response).isNotNull(); - assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); - } +// +// @InjectMocks +// MemberService memberService; +// +// @Mock +// MemberStoreRepository memberStoreRepository; +// +// @Mock +// MemberReaderRepository memberReaderRepository; +// +// @Test +// @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") +// void updateMember_IdAndDto_Success() { +// //given +// UUID memberId = UUID.randomUUID(); +// Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); +// memberStoreRepository.insert(saveMember); +// MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); +// +// //mocking +// given(memberReaderRepository.findById(memberId)).willReturn(Optional.of(saveMember)); +// +// //when +// memberService.updateMember(memberId, updateRequestDto); +// +// //then +// Member updateMember = memberReaderRepository.findById(memberId).get(); +// assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); +// } +// +// @Test +// @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") +// void deleteMember_Id_Success() { +// //given +// UUID memberId = UUID.randomUUID(); +// Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); +// memberStoreRepository.insert(saveMember); +// +// //when +// memberService.deleteMember(saveMember.getMemberId()); +// +// //then +// verify(memberStoreRepository, times(1)).delete(memberId); +// } +// +// @Test +// @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") +// void getAllMembers_EqualsListOfMembers() { +// //given +// Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); +// Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.WHITE); +// List memberList = Arrays.asList(member1, member2); +// +// //mocking +// given(memberReaderRepository.findAll()).willReturn(memberList); +// +// //when +// MemberGetResponses response = memberService.getAllMembers(); +// +// //then +// List responseExpect = memberList.stream() +// .map(MemberGetResponse::toDto) +// .collect(Collectors.toList()); +// +// assertThat(response).isNotNull(); +// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); +// } +// +// @Test +// @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") +// void getAllBlackMembers_EqualsListOfMembers() { +// //given +// Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); +// Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.BLACK); +// Member member3 = new Member(UUID.randomUUID(), "Lee", MemberStatus.WHITE); +// List blackMemberList = Stream.of(member1, member2, member3) +// .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) +// .collect(Collectors.toList()); +// +// //mocking +// given(memberReaderRepository.findAllByMemberStatus(MemberStatus.BLACK)).willReturn(blackMemberList); +// +// //when +// MemberGetResponses response = memberService.getAllBlackMembers(); +// +// //then +// List responseExpect = blackMemberList.stream() +// .map(MemberGetResponse::toDto) +// .collect(Collectors.toList()); +// +// assertThat(response).isNotNull(); +// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); +// } } diff --git a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java index 2aeab5a459..0fc86f2b70 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java @@ -1,141 +1,119 @@ package org.programmers.VoucherManagement.member.application; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; -import org.programmers.VoucherManagement.member.application.dto.MemberGetResponse; -import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; -import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; -import org.programmers.VoucherManagement.member.domain.Member; -import org.programmers.VoucherManagement.member.domain.MemberStatus; -import org.programmers.VoucherManagement.member.exception.MemberException; -import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; -import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; -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.List; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - @ActiveProfiles("test") @SpringBootTest @Transactional public class MemberServiceTest { - @Autowired - MemberService memberService; - - @Autowired - MemberReaderRepository memberReaderRepository; - - @Autowired - MemberStoreRepository memberStoreRepository; - - @Test - @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") - void updateMember_IdAndDto_Success() { - //given - UUID memberId = UUID.randomUUID(); - Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); - memberStoreRepository.insert(saveMember); - MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); - - //when - memberService.updateMember(memberId, updateRequestDto); - - //then - Member updateMember = memberReaderRepository.findById(memberId).get(); - assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); - } - - @Test - @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") - void deleteMember_Id_Success() { - //given - UUID memberId = UUID.randomUUID(); - Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); - memberStoreRepository.insert(saveMember); - - //when - memberService.deleteMember(saveMember.getMemberId()); - - //then - Optional optionalMember = memberReaderRepository.findById(memberId); - assertThat(optionalMember).isEqualTo(Optional.empty()); - } - - @Test - @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 실패") - void deleteMember_Id_ThrowMemberException() { - //given - UUID memberId = UUID.randomUUID(); - Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); - memberStoreRepository.insert(saveMember); - - //when - memberService.deleteMember(saveMember.getMemberId()); - - //then - UUID strangeId = UUID.randomUUID(); - assertThatThrownBy(() -> memberService.deleteMember(strangeId)) - .isInstanceOf(MemberException.class) - .hasMessage("데이터가 정상적으로 삭제되지 않았습니다."); - } - - @ParameterizedTest - @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") - @MethodSource("member_Data") - void getAllMembers_EqualsListOfMembers(List members) { - //given - members.forEach(member -> memberStoreRepository.insert(member)); - - //when - MemberGetResponses response = memberService.getAllMembers(); - - //then - List responseExpect = members.stream() - .map(MemberGetResponse::toDto) - .collect(Collectors.toList()); - - assertThat(response).isNotNull(); - assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); - } - - @ParameterizedTest - @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") - @MethodSource("member_Data") - void getAllBlackMembers_EqualsListOfMembers(List members) { - //given - members.forEach(member -> memberStoreRepository.insert(member)); - List blackMemberList = members.stream() - .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) - .toList(); - - //when - MemberGetResponses response = memberService.getAllBlackMembers(); - - //then - List responseExpect = blackMemberList.stream() - .map(MemberGetResponse::toDto) - .collect(Collectors.toList()); - - assertThat(response).isNotNull(); - assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); - } - - private static Stream> member_Data() { - Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); - Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.WHITE); - return Stream.of( - List.of(member1, member2) - ); - } +// @Autowired +// MemberService memberService; +// +// @Autowired +// MemberReaderRepository memberReaderRepository; +// +// @Autowired +// MemberStoreRepository memberStoreRepository; +// +// @Test +// @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") +// void updateMember_IdAndDto_Success() { +// //given +// UUID memberId = UUID.randomUUID(); +// Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); +// memberStoreRepository.insert(saveMember); +// MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); +// +// //when +// memberService.updateMember(memberId, updateRequestDto); +// +// //then +// Member updateMember = memberReaderRepository.findById(memberId).get(); +// assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); +// } +// +// @Test +// @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") +// void deleteMember_Id_Success() { +// //given +// UUID memberId = UUID.randomUUID(); +// Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); +// memberStoreRepository.insert(saveMember); +// +// //when +// memberService.deleteMember(saveMember.getMemberId()); +// +// //then +// Optional optionalMember = memberReaderRepository.findById(memberId); +// assertThat(optionalMember).isEqualTo(Optional.empty()); +// } +// +// @Test +// @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 실패") +// void deleteMember_Id_ThrowMemberException() { +// //given +// UUID memberId = UUID.randomUUID(); +// Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); +// memberStoreRepository.insert(saveMember); +// +// //when +// memberService.deleteMember(saveMember.getMemberId()); +// +// //then +//// UUID strangeId = UUID.randomUUID(); +// assertThatThrownBy(() -> memberService.deleteMember()) +// .isInstanceOf(MemberException.class) +// .hasMessage("데이터가 정상적으로 삭제되지 않았습니다."); +// } +// +// @ParameterizedTest +// @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") +// @MethodSource("member_Data") +// void getAllMembers_EqualsListOfMembers(List members) { +// //given +// members.forEach(member -> memberStoreRepository.insert(member)); +// +// //when +// MemberGetResponses response = memberService.getAllMembers(); +// +// //then +// List responseExpect = members.stream() +// .map(MemberGetResponse::toDto) +// .collect(Collectors.toList()); +// +// assertThat(response).isNotNull(); +// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); +// } +// +// @ParameterizedTest +// @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") +// @MethodSource("member_Data") +// void getAllBlackMembers_EqualsListOfMembers(List members) { +// //given +// members.forEach(member -> memberStoreRepository.insert(member)); +// List blackMemberList = members.stream() +// .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) +// .toList(); +// +// //when +// MemberGetResponses response = memberService.getAllBlackMembers(); +// +// //then +// List responseExpect = blackMemberList.stream() +// .map(MemberGetResponse::toDto) +// .collect(Collectors.toList()); +// +// assertThat(response).isNotNull(); +// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); +// } +// +// private static Stream> member_Data() { +// Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); +// Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.WHITE); +// return Stream.of( +// List.of(member1, member2) +// ); +// } } From bb5fd7eed082f7880cc7c0bae9ef2f9f96f5ad11 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 03:26:31 +0900 Subject: [PATCH 22/27] =?UTF-8?q?[Feat]=20:=20Voucher=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=20id=20Ulid=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 --- .../VoucherManagement/io/CommandExecutor.java | 6 +++--- .../voucher/application/VoucherService.java | 6 ++---- .../application/dto/VoucherCreateResponse.java | 4 +--- .../voucher/application/dto/VoucherGetResponse.java | 4 +--- .../voucher/domain/FixedAmountVoucher.java | 4 +--- .../voucher/domain/PercentAmountVoucher.java | 4 +--- .../VoucherManagement/voucher/domain/Voucher.java | 6 ++---- .../voucher/domain/VoucherFactory.java | 9 ++++----- .../infrastructure/JdbcVoucherReaderRepository.java | 7 +++---- .../infrastructure/JdbcVoucherStoreRepository.java | 10 ++++------ .../infrastructure/MemoryVoucherRepository.java | 11 ++++------- .../infrastructure/VoucherReaderRepository.java | 3 +-- .../voucher/infrastructure/VoucherRepository.java | 5 ++--- .../infrastructure/VoucherStoreRepository.java | 4 +--- .../voucher/presentation/VoucherController.java | 6 ++---- .../voucher/presentation/VoucherRestController.java | 8 +++----- .../presentation/dto/VoucherCreateResponseData.java | 4 +--- .../wallet/application/WalletService.java | 4 ++-- .../wallet/application/dto/WalletGetResponse.java | 2 +- .../infrastructure/JdbcWalletReaderRepository.java | 6 +++--- .../infrastructure/JdbcWalletStoreRepository.java | 4 ++-- .../wallet/infrastructure/WalletReaderRepository.java | 2 +- .../wallet/presentation/WalletController.java | 2 +- .../wallet/presentation/WalletRestController.java | 3 +-- .../voucher/application/VoucherServiceMockTest.java | 6 +++--- .../voucher/application/VoucherServiceTest.java | 8 ++++---- .../voucher/domain/PercentAmountVoucherTest.java | 4 ++-- .../infrastructure/JdbcVoucherRepositoryTest.java | 4 ++-- 28 files changed, 58 insertions(+), 88 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java index fa3442f7f4..9fcb05f2b5 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java +++ b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java @@ -47,12 +47,12 @@ public void execute(MenuType menuType) { case UPDATE_VOUCHER -> { String voucherId = console.readVoucherId(); int voucherValue = console.readDiscountValue(); - voucherController.updateVoucher(UUID.fromString(voucherId), new VoucherUpdateRequest(voucherValue)); + voucherController.updateVoucher(voucherId, new VoucherUpdateRequest(voucherValue)); console.printConsoleMessage(TASK_SUCCESSFUL_MESSAGE); } case DELETE_VOUCHER -> { String voucherId = console.readVoucherId(); - voucherController.deleteVoucher(UUID.fromString(voucherId)); + voucherController.deleteVoucher(voucherId); console.printConsoleMessage(TASK_SUCCESSFUL_MESSAGE); } case VOUCHER_LIST -> { @@ -98,7 +98,7 @@ public void execute(MenuType menuType) { } case LIST_WALLET_BY_VOUCHER -> { String voucherId = console.readVoucherId(); - WalletGetResponses walletList = walletController.getWalletsByVoucherId(UUID.fromString(voucherId)); + WalletGetResponses walletList = walletController.getWalletsByVoucherId(voucherId); console.printWalletList(walletList); } case DELETE_WALLET -> { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java index 17d5a54a44..fa13ca54df 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/VoucherService.java @@ -15,8 +15,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.UUID; - @Service @Transactional(readOnly = true) @@ -30,7 +28,7 @@ public VoucherService(VoucherReaderRepository voucherReaderRepository, VoucherSt } @Transactional - public void updateVoucher(UUID voucherId, VoucherUpdateRequest voucherUpdateRequest) { + public void updateVoucher(String voucherId, VoucherUpdateRequest voucherUpdateRequest) { Voucher voucher = voucherReaderRepository .findById(voucherId) .orElseThrow(() -> new VoucherException(ErrorCode.NOT_FOUND_VOUCHER)); @@ -52,7 +50,7 @@ public VoucherGetResponses getVoucherList() { } @Transactional - public void deleteVoucher(UUID voucherId) { + public void deleteVoucher(String voucherId) { voucherStoreRepository.delete(voucherId); } } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java index 15ffb76dbb..aa82321178 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherCreateResponse.java @@ -4,11 +4,9 @@ import org.programmers.VoucherManagement.voucher.domain.DiscountType; import org.programmers.VoucherManagement.voucher.domain.Voucher; -import java.util.UUID; - @Builder public record VoucherCreateResponse( - UUID voucherId, + String voucherId, DiscountType discountType, int discountValue ) { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponse.java b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponse.java index f0c3c64699..22b9c5a122 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/application/dto/VoucherGetResponse.java @@ -4,11 +4,9 @@ import org.programmers.VoucherManagement.voucher.domain.DiscountType; import org.programmers.VoucherManagement.voucher.domain.Voucher; -import java.util.UUID; - @Builder public record VoucherGetResponse( - UUID voucherId, + String voucherId, DiscountType discountType, int discountValue ) { diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/FixedAmountVoucher.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/FixedAmountVoucher.java index 14afbd5283..6b8b25b9e4 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/FixedAmountVoucher.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/FixedAmountVoucher.java @@ -1,9 +1,7 @@ package org.programmers.VoucherManagement.voucher.domain; -import java.util.UUID; - public class FixedAmountVoucher extends Voucher { - public FixedAmountVoucher(UUID voucherId, DiscountType discountType, DiscountValue discountValue) { + public FixedAmountVoucher(String voucherId, DiscountType discountType, DiscountValue discountValue) { this.voucherId = voucherId; this.discountType = discountType; this.discountValue = discountValue; diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java index 2f67c73d3b..4cf1a8dabf 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucher.java @@ -2,12 +2,10 @@ import org.programmers.VoucherManagement.voucher.exception.VoucherException; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_INCLUDE_1_TO_100; public class PercentAmountVoucher extends Voucher { - public PercentAmountVoucher(UUID voucherId, DiscountType discountType, DiscountValue discountValue) { + public PercentAmountVoucher(String voucherId, DiscountType discountType, DiscountValue discountValue) { validatePercentDiscountValue(discountValue); this.voucherId = voucherId; this.discountType = discountType; diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java index 11285291be..9c744142b5 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/Voucher.java @@ -2,10 +2,8 @@ import org.programmers.VoucherManagement.global.entity.BaseTimeEntity; -import java.util.UUID; - public abstract class Voucher extends BaseTimeEntity { - protected UUID voucherId; + protected String voucherId; protected DiscountValue discountValue; protected DiscountType discountType; @@ -13,7 +11,7 @@ public DiscountType getDiscountType() { return discountType; } - public UUID getVoucherId() { + public String getVoucherId() { return voucherId; } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java index 85e0bb0fe7..d455d4f632 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/VoucherFactory.java @@ -1,9 +1,8 @@ package org.programmers.VoucherManagement.voucher.domain; +import com.github.f4b6a3.ulid.UlidCreator; import org.programmers.VoucherManagement.voucher.application.dto.VoucherCreateRequest; -import java.util.UUID; - public class VoucherFactory { private VoucherFactory() { @@ -14,13 +13,13 @@ public static Voucher createVoucher(VoucherCreateRequest voucherCreateRequest) { return switch (discountType) { case FIXED -> - new FixedAmountVoucher(UUID.randomUUID(), discountType, new DiscountValue(voucherCreateRequest.discountValue())); + new FixedAmountVoucher(UlidCreator.getUlid().toString(), discountType, new DiscountValue(voucherCreateRequest.discountValue())); case PERCENT -> - new PercentAmountVoucher(UUID.randomUUID(), discountType, new DiscountValue(voucherCreateRequest.discountValue())); + new PercentAmountVoucher(UlidCreator.getUlid().toString(), discountType, new DiscountValue(voucherCreateRequest.discountValue())); }; } - public static Voucher mapVoucher(UUID voucherId, int discountValue, DiscountType discountType) { + public static Voucher mapVoucher(String voucherId, int discountValue, DiscountType discountType) { return switch (discountType) { case FIXED -> new FixedAmountVoucher(voucherId, discountType, new DiscountValue(discountValue)); case PERCENT -> new PercentAmountVoucher(voucherId, discountType, new DiscountValue(discountValue)); diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java index 56c2eef71d..12626df578 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherReaderRepository.java @@ -11,7 +11,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; @Repository @Primary @@ -30,12 +29,12 @@ public List findAll() { } @Override - public Optional findById(UUID voucherId) { + public Optional findById(String voucherId) { String sql = "SELECT voucher_id, voucher_value, voucher_type FROM voucher_table WHERE voucher_id = ?"; try { return Optional.ofNullable(jdbcTemplate.queryForObject(sql, voucherRowMapper(), - voucherId.toString())); + voucherId)); } catch (EmptyResultDataAccessException e) { return Optional.empty(); } @@ -43,7 +42,7 @@ public Optional findById(UUID voucherId) { public static RowMapper voucherRowMapper() { return (result, rowNum) -> VoucherFactory.mapVoucher( - UUID.fromString(result.getString("voucher_id")), + result.getString("voucher_id"), result.getInt("voucher_value"), DiscountType.from(result.getString("voucher_type")) ); diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java index cb7c8d03bd..290737f83e 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherStoreRepository.java @@ -6,8 +6,6 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.ErrorCode.*; @Repository @@ -23,7 +21,7 @@ public JdbcVoucherStoreRepository(JdbcTemplate jdbcTemplate) { public Voucher insert(Voucher voucher) { String sql = "INSERT INTO voucher_table(voucher_id, voucher_value, voucher_type, created_at) VALUES (?,?,?,?)"; int insertCount = jdbcTemplate.update(sql, - voucher.getVoucherId().toString(), + voucher.getVoucherId(), voucher.getDiscountValue().getValue(), voucher.getDiscountType().getType(), voucher.getCreatedAt() @@ -36,10 +34,10 @@ public Voucher insert(Voucher voucher) { } @Override - public void delete(UUID voucherId) { + public void delete(String voucherId) { String sql = "DELETE FROM voucher_table WHERE voucher_id = ?"; int deleteCount = jdbcTemplate.update(sql, - voucherId.toString()); + voucherId); if (deleteCount != 1) { throw new VoucherException(FAIL_TO_DELETE_VOUCHER); } @@ -50,7 +48,7 @@ public void update(Voucher voucher) { String sql = "UPDATE voucher_table SET voucher_value = ? WHERE voucher_id = ?"; int updateCount = jdbcTemplate.update(sql, voucher.getDiscountValue().getValue(), - voucher.getVoucherId().toString()); + voucher.getVoucherId()); if (updateCount != 1) { throw new VoucherException(FAIL_TO_UPDATE_VOUCHER); } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepository.java index 7ae5562504..9fd3faa4ff 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepository.java @@ -4,12 +4,11 @@ import org.springframework.stereotype.Component; import java.util.*; -import java.util.stream.Collectors; @Component public class MemoryVoucherRepository implements VoucherRepository { - private final Map map = new LinkedHashMap<>(); + private final Map map = new LinkedHashMap<>(); @Override public Voucher insert(Voucher voucher) { @@ -25,19 +24,17 @@ public void update(Voucher voucher) { } @Override - public void delete(UUID voucherId) { + public void delete(String voucherId) { map.remove(voucherId); } @Override public List findAll() { - return map.values() - .stream() - .collect(Collectors.toList()); + return new ArrayList<>(map.values()); } @Override - public Optional findById(UUID voucherId) { + public Optional findById(String voucherId) { return Optional.ofNullable(map.get(voucherId)); } } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherReaderRepository.java index 5f6cd535c8..95bd247f5f 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherReaderRepository.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; public interface VoucherReaderRepository { /** @@ -20,5 +19,5 @@ public interface VoucherReaderRepository { * @param voucherId * @return Optional - voucherId를 이용해 조회한 바우처 */ - Optional findById(UUID voucherId); //조회 + Optional findById(String voucherId); //조회 } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherRepository.java index 159d67f6bf..2ad920186c 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherRepository.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; public interface VoucherRepository { /** @@ -27,7 +26,7 @@ public interface VoucherRepository { * * @param voucherId */ - void delete(UUID voucherId); //삭제 + void delete(String voucherId); //삭제 /** * db에 저장된 전체 바우처 조회 @@ -42,5 +41,5 @@ public interface VoucherRepository { * @param voucherId * @return Optional - voucherId를 이용해 조회한 바우처 */ - Optional findById(UUID voucherId); //조회 + Optional findById(String voucherId); //조회 } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherStoreRepository.java index d5ded82264..fc14650e67 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/infrastructure/VoucherStoreRepository.java @@ -2,8 +2,6 @@ import org.programmers.VoucherManagement.voucher.domain.Voucher; -import java.util.UUID; - public interface VoucherStoreRepository { /** * db에 바우처 저장 @@ -25,5 +23,5 @@ public interface VoucherStoreRepository { * * @param voucherId */ - void delete(UUID voucherId); + void delete(String voucherId); } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java index a4775e9dd6..72ff26b9cf 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherController.java @@ -6,8 +6,6 @@ import org.programmers.VoucherManagement.voucher.application.dto.VoucherUpdateRequest; import org.springframework.stereotype.Component; -import java.util.UUID; - @Component public class VoucherController { private final VoucherService voucherService; @@ -28,11 +26,11 @@ public VoucherGetResponses getVoucherList() { return voucherService.getVoucherList(); } - public void deleteVoucher(UUID voucherId) { + public void deleteVoucher(String voucherId) { voucherService.deleteVoucher(voucherId); } - public void updateVoucher(UUID voucherId, VoucherUpdateRequest voucherUpdateRequest) { + public void updateVoucher(String voucherId, VoucherUpdateRequest voucherUpdateRequest) { voucherService.updateVoucher(voucherId, voucherUpdateRequest); } } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java index 550e2619b2..72233f4b45 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/VoucherRestController.java @@ -11,8 +11,6 @@ import org.programmers.VoucherManagement.voucher.presentation.mapper.VoucherControllerMapper; import org.springframework.web.bind.annotation.*; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.SuccessCode.DELETE_VOUCHER_SUCCESS; import static org.programmers.VoucherManagement.global.response.SuccessCode.UPDATE_VOUCHER_SUCCESS; @@ -46,8 +44,8 @@ public BaseResponse createVoucher(@Valid @RequestBody */ @PatchMapping("/{voucherId}") public BaseResponse updateVoucher(@PathVariable String voucherId, @Valid @RequestBody VoucherUpdateRequestData data) { - UUID voucherUUID = UUID.fromString(voucherId); - voucherService.updateVoucher(voucherUUID, VoucherControllerMapper.INSTANCE.dataToUpdateRequest(data)); + + voucherService.updateVoucher(voucherId, VoucherControllerMapper.INSTANCE.dataToUpdateRequest(data)); return new BaseResponse<>(UPDATE_VOUCHER_SUCCESS); } @@ -69,7 +67,7 @@ public BaseResponse getVoucherList() { */ @DeleteMapping("/{voucherId}") public BaseResponse deleteVoucher(@PathVariable String voucherId) { - voucherService.deleteVoucher(UUID.fromString(voucherId)); + voucherService.deleteVoucher(voucherId); return new BaseResponse<>(DELETE_VOUCHER_SUCCESS); } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java index 3d8c250f0d..5fe9c2fe32 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/presentation/dto/VoucherCreateResponseData.java @@ -2,10 +2,8 @@ import org.programmers.VoucherManagement.voucher.domain.DiscountType; -import java.util.UUID; - public record VoucherCreateResponseData( - UUID voucherId, + String voucherId, DiscountType discountType, int discountValue ) { diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java index d2838765bd..24b138f399 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java @@ -42,7 +42,7 @@ public WalletService(WalletReaderRepository walletReaderRepository @Transactional public WalletCreateResponse createWallet(WalletCreateRequest walletCreateRequest) { Voucher voucher = voucherReaderRepository - .findById(UUID.fromString(walletCreateRequest.voucherId())) + .findById(walletCreateRequest.voucherId()) .orElseThrow(() -> new VoucherException(NOT_FOUND_VOUCHER)); Member member = memberReaderRepository .findById(walletCreateRequest.memberId()) @@ -57,7 +57,7 @@ public WalletCreateResponse createWallet(WalletCreateRequest walletCreateRequest return WalletServiceMapper.INSTANCE.domainToCreateResponse(wallet); } - public WalletGetResponses getWalletsByVoucherId(UUID voucherId) { + public WalletGetResponses getWalletsByVoucherId(String voucherId) { return new WalletGetResponses(walletReaderRepository.findAllByVoucherId(voucherId)); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java index 60c9f2a61b..d96386d84f 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java @@ -11,7 +11,7 @@ @Builder public record WalletGetResponse(UUID walletId, String memberId, - UUID voucherId, + String voucherId, String memberName, DiscountType discountType, int discountValue) { diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java index ba0e6c0b1b..9196535866 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java @@ -49,16 +49,16 @@ public List findAllByMemberId(String memberId) { } @Override - public List findAllByVoucherId(UUID voucherId) { + public List findAllByVoucherId(String voucherId) { String sql = "SELECT wallet_id, voucher_id, member_id FROM wallet_table WHERE voucher_id = ?"; - return jdbcTemplate.query(sql, walletRowMapper(), voucherId.toString()); + return jdbcTemplate.query(sql, walletRowMapper(), voucherId); } public RowMapper walletRowMapper() { return (result, rowNum) -> new Wallet( UUID.fromString(result.getString("wallet_id")), - voucherReaderRepository.findById(UUID.fromString(result.getString("voucher_id"))).orElseThrow(() -> new VoucherException(ErrorCode.NOT_FOUND_VOUCHER)), + voucherReaderRepository.findById(result.getString("voucher_id")).orElseThrow(() -> new VoucherException(ErrorCode.NOT_FOUND_VOUCHER)), memberReaderRepository.findById(result.getString("member_id")).orElseThrow(() -> new MemberException(ErrorCode.NOT_FOUND_MEMBER)) ); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java index dcf1aefaa3..0937b6cda2 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java @@ -26,8 +26,8 @@ public Wallet insert(Wallet wallet) { String sql = "INSERT INTO wallet_table(wallet_id, voucher_id, member_id, created_at) VALUES (?,?,?,?)"; int insertCount = jdbcTemplate.update(sql, wallet.getWalletId().toString(), - wallet.getVoucher().getVoucherId().toString(), - wallet.getMember().getMemberId().toString(), + wallet.getVoucher().getVoucherId(), + wallet.getMember().getMemberId(), wallet.getCreatedAt() ); if (insertCount != 1) { diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java index 773bac7189..03163900dd 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java @@ -29,5 +29,5 @@ public interface WalletReaderRepository { * @param voucherId * @return List - voucherId를 이용해 wallet에 저장된 Voucher 리스트 */ - List findAllByVoucherId(UUID voucherId); + List findAllByVoucherId(String voucherId); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java index a607e16f5c..423353a522 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java @@ -19,7 +19,7 @@ public void createWallet(WalletCreateRequest walletCreateRequest) { walletService.createWallet(walletCreateRequest); } - public WalletGetResponses getWalletsByVoucherId(UUID voucherId) { + public WalletGetResponses getWalletsByVoucherId(String voucherId) { return walletService.getWalletsByVoucherId(voucherId); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java index e6a5470b92..acee469b00 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java @@ -33,8 +33,7 @@ public BaseResponse createWallet(@Valid @RequestBody W @GetMapping("/voucher/{voucherId}") public BaseResponse getWalletsByVoucherId(@PathVariable String voucherId) { - UUID voucherUUID = UUID.fromString(voucherId); - WalletGetResponses responses = walletService.getWalletsByVoucherId(voucherUUID); + WalletGetResponses responses = walletService.getWalletsByVoucherId(voucherId); return new BaseResponse<>(responses); } diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java index 6d43833535..af9ce3d638 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java @@ -42,7 +42,7 @@ public class VoucherServiceMockTest { @DisplayName("Fixed 바우처를 수정할 수 있다. - 성공") void updateFixedVoucher_Dto_Success() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); Voucher saveVoucher = new FixedAmountVoucher(voucherId, DiscountType.FIXED, new DiscountValue(100)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(1000); @@ -62,7 +62,7 @@ void updateFixedVoucher_Dto_Success() { @DisplayName("Percent 바우처를 수정할 수 있다. - 성공") void updatePercentVoucher_Dto_Success() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(40); @@ -82,7 +82,7 @@ void updatePercentVoucher_Dto_Success() { @DisplayName("Percent 바우처를 수정할 수 있다.(1-100을 넘어가면 예외 발생) - 실패") void updatePercentVoucher_Dto_ThrowVoucherException() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(-1); diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java index 9d929000e9..0fd1835786 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java @@ -40,7 +40,7 @@ public class VoucherServiceTest { @DisplayName("Fixed 바우처를 수정할 수 있다. - 성공") void updateFixedVoucher_Dto_Success() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); Voucher saveVoucher = new FixedAmountVoucher(voucherId, DiscountType.FIXED, new DiscountValue(100)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(1000); @@ -57,7 +57,7 @@ void updateFixedVoucher_Dto_Success() { @DisplayName("Percent 바우처를 수정할 수 있다. - 성공") void updatePercentVoucher_Dto_Success() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(40); @@ -74,7 +74,7 @@ void updatePercentVoucher_Dto_Success() { @DisplayName("Percent 바우처를 수정할 수 있다.(1-100을 넘어가면 예외 발생) - 실패") void updatePercentVoucher_Dto_ThrowVoucherException() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(-1); @@ -89,7 +89,7 @@ void updatePercentVoucher_Dto_ThrowVoucherException() { @DisplayName("바우처ID를 입력받아 해당 바우처를 삭제할 수 있다. - 성공") void deleteVoucher_voucherId_Success() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); Voucher saveVoucher = new FixedAmountVoucher(voucherId, DiscountType.FIXED, new DiscountValue(1000)); voucherStoreRepository.insert(saveVoucher); diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java index 30bb64314d..1a0362144c 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java @@ -15,7 +15,7 @@ public class PercentAmountVoucherTest { @DisplayName("Percent 바우처를 생성한다. - 성공") void PercentAmountVoucher_Parameters_createPercentAmountVoucher() { //given - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); DiscountType discountType = DiscountType.PERCENT; DiscountValue discountValue = new DiscountValue(15); @@ -32,7 +32,7 @@ void PercentAmountVoucher_Parameters_createPercentAmountVoucher() { @DisplayName("Percent 바우처를 생성한다. - 실패") void PercentAmountVoucher_Parameters_throwVoucherException() { //given&when - UUID voucherId = UUID.randomUUID(); + String voucherId = UUID.randomUUID(); DiscountType discountType = DiscountType.PERCENT; DiscountValue discountValue = new DiscountValue(101); diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java index 96f7b3571f..ba7e4cf8cd 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java @@ -94,7 +94,7 @@ void update_PercentVoucher_EqualsUpdatePercentVoucher() { @DisplayName("id를 이용해 Percent 바우처를 조회할 수 있다. - 성공") void findById_VoucherID_EqualsFindVoucher() { //given - UUID findVoucherId = percentVoucher.getVoucherId(); + String findVoucherId = percentVoucher.getVoucherId(); voucherStoreRepository.insert(percentVoucher); voucherStoreRepository.insert(fixedVoucher); @@ -125,7 +125,7 @@ void delete_VoucherId_Success() { //given voucherStoreRepository.insert(percentVoucher); voucherStoreRepository.insert(fixedVoucher); - UUID deleteVoucherId = percentVoucher.getVoucherId(); + String deleteVoucherId = percentVoucher.getVoucherId(); //when voucherStoreRepository.delete(deleteVoucherId); From 5c5bd269f5fe566e0b94554c8f7ce0f84b2de41a Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 05:13:26 +0900 Subject: [PATCH 23/27] =?UTF-8?q?[Feat]=20:=20Wallet=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=20id=20Ulid=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 --- .../programmers/VoucherManagement/io/CommandExecutor.java | 4 +--- .../wallet/application/WalletService.java | 7 +++---- .../wallet/application/dto/WalletGetResponse.java | 2 +- .../VoucherManagement/wallet/domain/Wallet.java | 8 +++----- .../wallet/infrastructure/JdbcWalletReaderRepository.java | 5 ++--- .../wallet/infrastructure/JdbcWalletStoreRepository.java | 8 +++----- .../wallet/infrastructure/WalletReaderRepository.java | 3 +-- .../wallet/infrastructure/WalletStoreRepository.java | 4 +--- .../wallet/presentation/WalletController.java | 4 +--- .../wallet/presentation/WalletRestController.java | 5 +---- 10 files changed, 17 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java index 9fcb05f2b5..b4bd7d67dc 100644 --- a/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java +++ b/src/main/java/org/programmers/VoucherManagement/io/CommandExecutor.java @@ -15,8 +15,6 @@ import org.programmers.VoucherManagement.wallet.presentation.WalletController; import org.springframework.stereotype.Component; -import java.util.UUID; - import static org.programmers.VoucherManagement.io.ConsoleMessage.*; @Component @@ -103,7 +101,7 @@ public void execute(MenuType menuType) { } case DELETE_WALLET -> { String walletId = console.readWalletId(); - walletController.deleteWallet(UUID.fromString(walletId)); + walletController.deleteWallet(walletId); console.printConsoleMessage(TASK_SUCCESSFUL_MESSAGE); } } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java index 24b138f399..b1d52ac151 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/WalletService.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.wallet.application; +import com.github.f4b6a3.ulid.UlidCreator; import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.member.exception.MemberException; import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; @@ -16,8 +17,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_FOUND_MEMBER; import static org.programmers.VoucherManagement.global.response.ErrorCode.NOT_FOUND_VOUCHER; @@ -48,7 +47,7 @@ public WalletCreateResponse createWallet(WalletCreateRequest walletCreateRequest .findById(walletCreateRequest.memberId()) .orElseThrow(() -> new MemberException(NOT_FOUND_MEMBER)); - Wallet wallet = new Wallet(UUID.randomUUID(), + Wallet wallet = new Wallet(UlidCreator.getUlid().toString(), voucher, member); @@ -66,7 +65,7 @@ public WalletGetResponses getWalletsByMemberId(String memberId) { } @Transactional - public void deleteWallet(UUID walletId) { + public void deleteWallet(String walletId) { walletStoreRepository.delete(walletId); } } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java index d96386d84f..6a2fbcf895 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/application/dto/WalletGetResponse.java @@ -9,7 +9,7 @@ import java.util.UUID; @Builder -public record WalletGetResponse(UUID walletId, +public record WalletGetResponse(String walletId, String memberId, String voucherId, String memberName, diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java b/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java index 8928a6ca93..70ef53c178 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/domain/Wallet.java @@ -4,20 +4,18 @@ import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.voucher.domain.Voucher; -import java.util.UUID; - public class Wallet extends BaseTimeEntity { - private UUID walletId; + private String walletId; private Voucher voucher; private Member member; - public Wallet(UUID walletId, Voucher voucher, Member member) { + public Wallet(String walletId, Voucher voucher, Member member) { this.walletId = walletId; this.voucher = voucher; this.member = member; } - public UUID getWalletId() { + public String getWalletId() { return walletId; } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java index 9196535866..1cf2a1aac8 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletReaderRepository.java @@ -14,7 +14,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; @Repository @Primary @@ -30,7 +29,7 @@ public JdbcWalletReaderRepository(JdbcTemplate jdbcTemplate, MemberReaderReposit } @Override - public Optional findById(UUID walletId) { + public Optional findById(String walletId) { String sql = "SELECT wallet_id, voucher_id, member_id FROM wallet_table WHERE wallet_id = ?"; try { return Optional.ofNullable(jdbcTemplate.queryForObject(sql, @@ -57,7 +56,7 @@ public List findAllByVoucherId(String voucherId) { public RowMapper walletRowMapper() { return (result, rowNum) -> new Wallet( - UUID.fromString(result.getString("wallet_id")), + result.getString("wallet_id"), voucherReaderRepository.findById(result.getString("voucher_id")).orElseThrow(() -> new VoucherException(ErrorCode.NOT_FOUND_VOUCHER)), memberReaderRepository.findById(result.getString("member_id")).orElseThrow(() -> new MemberException(ErrorCode.NOT_FOUND_MEMBER)) ); diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java index 0937b6cda2..cf41b40c7a 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletStoreRepository.java @@ -6,8 +6,6 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.ErrorCode.FAIL_TO_DELETE_WALLET; import static org.programmers.VoucherManagement.global.response.ErrorCode.FAIL_TO_INSERT_WALLET; @@ -25,7 +23,7 @@ public JdbcWalletStoreRepository(JdbcTemplate jdbcTemplate) { public Wallet insert(Wallet wallet) { String sql = "INSERT INTO wallet_table(wallet_id, voucher_id, member_id, created_at) VALUES (?,?,?,?)"; int insertCount = jdbcTemplate.update(sql, - wallet.getWalletId().toString(), + wallet.getWalletId(), wallet.getVoucher().getVoucherId(), wallet.getMember().getMemberId(), wallet.getCreatedAt() @@ -37,10 +35,10 @@ public Wallet insert(Wallet wallet) { } @Override - public void delete(UUID walletId) { + public void delete(String walletId) { String sql = "DELETE FROM wallet_table WHERE wallet_id = ?"; int deleteCount = jdbcTemplate.update(sql, - walletId.toString()); + walletId); if (deleteCount != 1) { throw new WalletException(FAIL_TO_DELETE_WALLET); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java index 03163900dd..040c7c9364 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletReaderRepository.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; public interface WalletReaderRepository { /** @@ -13,7 +12,7 @@ public interface WalletReaderRepository { * @param walletId * @return Optional - walletId를 이용해 조회한 Wallet */ - Optional findById(UUID walletId); + Optional findById(String walletId); /** * memberId를 이용해 Wallet 조회 diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletStoreRepository.java b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletStoreRepository.java index 402caea692..dddc5ef22f 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletStoreRepository.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/infrastructure/WalletStoreRepository.java @@ -2,8 +2,6 @@ import org.programmers.VoucherManagement.wallet.domain.Wallet; -import java.util.UUID; - public interface WalletStoreRepository { /** * db에 wallet 저장 @@ -18,5 +16,5 @@ public interface WalletStoreRepository { * * @param walletId */ - void delete(UUID walletId); + void delete(String walletId); } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java index 423353a522..2661cdef43 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletController.java @@ -5,8 +5,6 @@ import org.programmers.VoucherManagement.wallet.application.dto.WalletGetResponses; import org.springframework.stereotype.Component; -import java.util.UUID; - @Component public class WalletController { private final WalletService walletService; @@ -27,7 +25,7 @@ public WalletGetResponses getWalletsByMemberId(String memberId) { return walletService.getWalletsByMemberId(memberId); } - public void deleteWallet(UUID walletId) { + public void deleteWallet(String walletId) { walletService.deleteWallet(walletId); } } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java index acee469b00..5dae470117 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/presentation/WalletRestController.java @@ -9,8 +9,6 @@ import org.programmers.VoucherManagement.wallet.presentation.mapper.WalletControllerMapper; import org.springframework.web.bind.annotation.*; -import java.util.UUID; - import static org.programmers.VoucherManagement.global.response.SuccessCode.DELETE_WALLET_SUCCESS; @RestController @@ -46,8 +44,7 @@ public BaseResponse getWalletsByMemberId(@PathVariable Strin @DeleteMapping("/{walletId}") public BaseResponse deleteWallet(@PathVariable String walletId) { - UUID walletUUID = UUID.fromString(walletId); - walletService.deleteWallet(walletUUID); + walletService.deleteWallet(walletId); return new BaseResponse<>(DELETE_WALLET_SUCCESS); } From 8597271262b284a8009f09fb0acb605234d4dc0d Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 12:04:41 +0900 Subject: [PATCH 24/27] =?UTF-8?q?[Feat]=20:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20db=20sql=EB=AC=B8=20=EC=88=98=EC=A0=95=20-=20created=5Fat=20?= =?UTF-8?q?=EC=BB=AC=EB=9F=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/resources/sql/schema.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/resources/sql/schema.sql b/src/test/resources/sql/schema.sql index 773027c70e..935fcef8e9 100644 --- a/src/test/resources/sql/schema.sql +++ b/src/test/resources/sql/schema.sql @@ -7,6 +7,7 @@ create table member_table member_id varchar(60), member_status varchar(10) not null, name varchar(20) not null, + created_at varchar(20) not null, primary key (member_id) ); @@ -16,6 +17,7 @@ create table voucher_table voucher_id varchar(60), voucher_value int not null, voucher_type varchar(20) not null, + created_at varchar(20) not null, primary key (voucher_id) ); @@ -25,6 +27,7 @@ create table wallet_table wallet_id varchar(60), voucher_id varchar(60) not null, member_id varchar(60) not null, + created_at varchar(20) not null, primary key (wallet_id), foreign key (voucher_id) references voucher_table (voucher_id), From 7d99b66f473c26ba0582c5b02803f0043a081e98 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 12:05:32 +0900 Subject: [PATCH 25/27] =?UTF-8?q?[Refactor]=20:=20DiscountValue=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=8B=9C=20validate=20=ED=99=95=EC=9D=B8=20?= =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=88=98=EC=A0=95=20-=20?= =?UTF-8?q?=EB=A7=A4=EA=B0=9C=EB=B3=80=EC=88=98=EB=A1=9C=20value=20?= =?UTF-8?q?=EA=B0=92=20=EC=A0=84=EB=8B=AC=EB=B0=9B=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/domain/DiscountValue.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java b/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java index 5afd30578e..7fb47a26c9 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/domain/DiscountValue.java @@ -12,17 +12,18 @@ public DiscountValue(int value) { this.value = value; } - public DiscountValue(int value, DiscountType discountType) { - validateValue(discountType); - this.value = value; + public DiscountValue(int discountValue, DiscountType discountType) { + validateValue(discountValue, discountType); + this.value = discountValue; } public int getValue() { return value; } - private void validateValue(DiscountType discountType) { - if (discountType == DiscountType.PERCENT && (value > 100 || value < 0)) { + private void validateValue(int discountValue, DiscountType discountType) { + + if (discountType == DiscountType.PERCENT && (discountValue > 100 || discountValue < 0)) { throw new VoucherException(NOT_INCLUDE_1_TO_100); } } From c9777fe3fbc5b10417d15f6388e060217610bbcd Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 12:06:51 +0900 Subject: [PATCH 26/27] =?UTF-8?q?[Feat]=20:=20Wallet,Member,Voucher=20Exce?= =?UTF-8?q?ption=20=EC=83=9D=EC=84=B1=EC=9E=90=20=EB=82=B4=20RuntimeExcept?= =?UTF-8?q?ion=20=EC=83=9D=EC=84=B1=EC=9E=90=20=ED=98=B8=EC=B6=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VoucherManagement/member/exception/MemberException.java | 1 + .../VoucherManagement/voucher/exception/VoucherException.java | 1 + .../VoucherManagement/wallet/exception/WalletException.java | 1 + 3 files changed, 3 insertions(+) diff --git a/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java b/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java index 9ef6538c20..8caed465d7 100644 --- a/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java +++ b/src/main/java/org/programmers/VoucherManagement/member/exception/MemberException.java @@ -8,6 +8,7 @@ public class MemberException extends RuntimeException { private final ErrorCode errorCode; public MemberException(ErrorCode errorCode) { + super(errorCode.getMessage()); this.errorCode = errorCode; } } diff --git a/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java b/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java index c09dc4f001..c475672811 100644 --- a/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java +++ b/src/main/java/org/programmers/VoucherManagement/voucher/exception/VoucherException.java @@ -8,6 +8,7 @@ public class VoucherException extends RuntimeException { private final ErrorCode errorCode; public VoucherException(ErrorCode errorCode) { + super(errorCode.getMessage()); this.errorCode = errorCode; } diff --git a/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java b/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java index 95a71419f7..190fe9841d 100644 --- a/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java +++ b/src/main/java/org/programmers/VoucherManagement/wallet/exception/WalletException.java @@ -8,6 +8,7 @@ public class WalletException extends RuntimeException { private final ErrorCode errorCode; public WalletException(ErrorCode errorCode) { + super(errorCode.getMessage()); this.errorCode = errorCode; } } From c1d69a38b5b8ceaaa78ec84e36168e49df2dee16 Mon Sep 17 00:00:00 2001 From: KimMinheee <99alsgmlalsl@naver.com> Date: Sat, 29 Jul 2023 12:12:31 +0900 Subject: [PATCH 27/27] =?UTF-8?q?[Feat]=20:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=97=90=20=EB=94=B0=EB=A5=B8=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VoucherManagement/io/MenuTypeTest.java | 2 + .../application/MemberServiceMockTest.java | 209 ++++++++------- .../member/application/MemberServiceTest.java | 239 ++++++++++-------- .../member/domain/MemberTest.java | 5 +- .../JdbcMemberRepositoryTest.java | 14 +- .../util/MemberConverterTest.java | 6 +- .../application/VoucherServiceMockTest.java | 45 ++-- .../application/VoucherServiceTest.java | 14 +- .../domain/PercentAmountVoucherTest.java | 7 +- .../voucher/domain/VoucherTest.java | 5 +- .../JdbcVoucherRepositoryTest.java | 7 +- .../MemoryVoucherRepositoryTest.java | 14 +- .../wallet/application/WalletServiceTest.java | 14 +- .../JdbcWalletRepositoryTest.java | 24 +- 14 files changed, 324 insertions(+), 281 deletions(-) diff --git a/src/test/java/org/programmers/VoucherManagement/io/MenuTypeTest.java b/src/test/java/org/programmers/VoucherManagement/io/MenuTypeTest.java index 3fd1823708..21fdda4da5 100644 --- a/src/test/java/org/programmers/VoucherManagement/io/MenuTypeTest.java +++ b/src/test/java/org/programmers/VoucherManagement/io/MenuTypeTest.java @@ -1,6 +1,7 @@ package org.programmers.VoucherManagement.io; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -11,6 +12,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +@Disabled public class MenuTypeTest { @Test @DisplayName("입력값에 따라 MenuType을 반환한다. - 성공") diff --git a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java index 9d4871d3fb..323da74dd9 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceMockTest.java @@ -1,101 +1,124 @@ package org.programmers.VoucherManagement.member.application; +import com.github.f4b6a3.ulid.UlidCreator; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponse; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; +import org.programmers.VoucherManagement.member.domain.Member; +import org.programmers.VoucherManagement.member.domain.MemberStatus; +import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; +import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; @ExtendWith(MockitoExtension.class) public class MemberServiceMockTest { -// -// @InjectMocks -// MemberService memberService; -// -// @Mock -// MemberStoreRepository memberStoreRepository; -// -// @Mock -// MemberReaderRepository memberReaderRepository; -// -// @Test -// @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") -// void updateMember_IdAndDto_Success() { -// //given -// UUID memberId = UUID.randomUUID(); -// Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); -// memberStoreRepository.insert(saveMember); -// MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); -// -// //mocking -// given(memberReaderRepository.findById(memberId)).willReturn(Optional.of(saveMember)); -// -// //when -// memberService.updateMember(memberId, updateRequestDto); -// -// //then -// Member updateMember = memberReaderRepository.findById(memberId).get(); -// assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); -// } -// -// @Test -// @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") -// void deleteMember_Id_Success() { -// //given -// UUID memberId = UUID.randomUUID(); -// Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); -// memberStoreRepository.insert(saveMember); -// -// //when -// memberService.deleteMember(saveMember.getMemberId()); -// -// //then -// verify(memberStoreRepository, times(1)).delete(memberId); -// } -// -// @Test -// @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") -// void getAllMembers_EqualsListOfMembers() { -// //given -// Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); -// Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.WHITE); -// List memberList = Arrays.asList(member1, member2); -// -// //mocking -// given(memberReaderRepository.findAll()).willReturn(memberList); -// -// //when -// MemberGetResponses response = memberService.getAllMembers(); -// -// //then -// List responseExpect = memberList.stream() -// .map(MemberGetResponse::toDto) -// .collect(Collectors.toList()); -// -// assertThat(response).isNotNull(); -// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); -// } -// -// @Test -// @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") -// void getAllBlackMembers_EqualsListOfMembers() { -// //given -// Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); -// Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.BLACK); -// Member member3 = new Member(UUID.randomUUID(), "Lee", MemberStatus.WHITE); -// List blackMemberList = Stream.of(member1, member2, member3) -// .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) -// .collect(Collectors.toList()); -// -// //mocking -// given(memberReaderRepository.findAllByMemberStatus(MemberStatus.BLACK)).willReturn(blackMemberList); -// -// //when -// MemberGetResponses response = memberService.getAllBlackMembers(); -// -// //then -// List responseExpect = blackMemberList.stream() -// .map(MemberGetResponse::toDto) -// .collect(Collectors.toList()); -// -// assertThat(response).isNotNull(); -// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); -// } + + @InjectMocks + MemberService memberService; + + @Mock + MemberStoreRepository memberStoreRepository; + + @Mock + MemberReaderRepository memberReaderRepository; + + @Test + @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") + void updateMember_IdAndDto_Success() { + //given + String memberId = UlidCreator.getUlid().toString(); + Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); + memberStoreRepository.insert(saveMember); + MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); + + //mocking + given(memberReaderRepository.findById(memberId)).willReturn(Optional.of(saveMember)); + + //when + memberService.updateMember(memberId, updateRequestDto); + + //then + Member updateMember = memberReaderRepository.findById(memberId).get(); + assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); + } + + @Test + @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") + void deleteMember_Id_Success() { + //given + String memberId = UlidCreator.getUlid().toString(); + Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); + memberStoreRepository.insert(saveMember); + + //when + memberService.deleteMember(saveMember.getMemberId()); + + //then + verify(memberStoreRepository, times(1)).delete(memberId); + } + + @Test + @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") + void getAllMembers_EqualsListOfMembers() { + //given + Member member1 = new Member(UlidCreator.getUlid().toString(), "Kim", MemberStatus.BLACK); + Member member2 = new Member(UlidCreator.getUlid().toString(), "Park", MemberStatus.WHITE); + List memberList = Arrays.asList(member1, member2); + + //mocking + given(memberReaderRepository.findAll()).willReturn(memberList); + + //when + MemberGetResponses response = memberService.getAllMembers(); + + //then + List responseExpect = memberList.stream() + .map(MemberGetResponse::toDto) + .collect(Collectors.toList()); + + assertThat(response).isNotNull(); + assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); + } + + @Test + @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") + void getAllBlackMembers_EqualsListOfMembers() { + //given + Member member1 = new Member(UlidCreator.getUlid().toString(), "Kim", MemberStatus.BLACK); + Member member2 = new Member(UlidCreator.getUlid().toString(), "Park", MemberStatus.BLACK); + Member member3 = new Member(UlidCreator.getUlid().toString(), "Lee", MemberStatus.WHITE); + List blackMemberList = Stream.of(member1, member2, member3) + .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) + .collect(Collectors.toList()); + + //mocking + given(memberReaderRepository.findAllByMemberStatus(MemberStatus.BLACK)).willReturn(blackMemberList); + + //when + MemberGetResponses response = memberService.getAllBlackMembers(); + + //then + List responseExpect = blackMemberList.stream() + .map(MemberGetResponse::toDto) + .collect(Collectors.toList()); + + assertThat(response).isNotNull(); + assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); + } } diff --git a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java index 0fc86f2b70..f00fba7fb1 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/application/MemberServiceTest.java @@ -1,119 +1,142 @@ package org.programmers.VoucherManagement.member.application; +import com.github.f4b6a3.ulid.UlidCreator; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponse; +import org.programmers.VoucherManagement.member.application.dto.MemberGetResponses; +import org.programmers.VoucherManagement.member.application.dto.MemberUpdateRequest; +import org.programmers.VoucherManagement.member.domain.Member; +import org.programmers.VoucherManagement.member.domain.MemberStatus; +import org.programmers.VoucherManagement.member.exception.MemberException; +import org.programmers.VoucherManagement.member.infrastructure.MemberReaderRepository; +import org.programmers.VoucherManagement.member.infrastructure.MemberStoreRepository; +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.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.programmers.VoucherManagement.global.response.ErrorCode.FAIL_TO_DELETE_MEMBER; + @ActiveProfiles("test") @SpringBootTest @Transactional public class MemberServiceTest { -// @Autowired -// MemberService memberService; -// -// @Autowired -// MemberReaderRepository memberReaderRepository; -// -// @Autowired -// MemberStoreRepository memberStoreRepository; -// -// @Test -// @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") -// void updateMember_IdAndDto_Success() { -// //given -// UUID memberId = UUID.randomUUID(); -// Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); -// memberStoreRepository.insert(saveMember); -// MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); -// -// //when -// memberService.updateMember(memberId, updateRequestDto); -// -// //then -// Member updateMember = memberReaderRepository.findById(memberId).get(); -// assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); -// } -// -// @Test -// @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") -// void deleteMember_Id_Success() { -// //given -// UUID memberId = UUID.randomUUID(); -// Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); -// memberStoreRepository.insert(saveMember); -// -// //when -// memberService.deleteMember(saveMember.getMemberId()); -// -// //then -// Optional optionalMember = memberReaderRepository.findById(memberId); -// assertThat(optionalMember).isEqualTo(Optional.empty()); -// } -// -// @Test -// @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 실패") -// void deleteMember_Id_ThrowMemberException() { -// //given -// UUID memberId = UUID.randomUUID(); -// Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); -// memberStoreRepository.insert(saveMember); -// -// //when -// memberService.deleteMember(saveMember.getMemberId()); -// -// //then -//// UUID strangeId = UUID.randomUUID(); -// assertThatThrownBy(() -> memberService.deleteMember()) -// .isInstanceOf(MemberException.class) -// .hasMessage("데이터가 정상적으로 삭제되지 않았습니다."); -// } -// -// @ParameterizedTest -// @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") -// @MethodSource("member_Data") -// void getAllMembers_EqualsListOfMembers(List members) { -// //given -// members.forEach(member -> memberStoreRepository.insert(member)); -// -// //when -// MemberGetResponses response = memberService.getAllMembers(); -// -// //then -// List responseExpect = members.stream() -// .map(MemberGetResponse::toDto) -// .collect(Collectors.toList()); -// -// assertThat(response).isNotNull(); -// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); -// } -// -// @ParameterizedTest -// @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") -// @MethodSource("member_Data") -// void getAllBlackMembers_EqualsListOfMembers(List members) { -// //given -// members.forEach(member -> memberStoreRepository.insert(member)); -// List blackMemberList = members.stream() -// .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) -// .toList(); -// -// //when -// MemberGetResponses response = memberService.getAllBlackMembers(); -// -// //then -// List responseExpect = blackMemberList.stream() -// .map(MemberGetResponse::toDto) -// .collect(Collectors.toList()); -// -// assertThat(response).isNotNull(); -// assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); -// } -// -// private static Stream> member_Data() { -// Member member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); -// Member member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.WHITE); -// return Stream.of( -// List.of(member1, member2) -// ); -// } + @Autowired + MemberService memberService; + + @Autowired + MemberReaderRepository memberReaderRepository; + + @Autowired + MemberStoreRepository memberStoreRepository; + + @Test + @DisplayName("회원 정보(status)를 BLACK으로 수정한다. - 성공") + void updateMember_IdAndDto_Success() { + //given + String memberId = UlidCreator.getUlid().toString(); + Member saveMember = new Member(memberId, "Kim", MemberStatus.WHITE); + memberStoreRepository.insert(saveMember); + MemberUpdateRequest updateRequestDto = new MemberUpdateRequest(MemberStatus.BLACK); + + //when + memberService.updateMember(memberId, updateRequestDto); + + //then + Member updateMember = memberReaderRepository.findById(memberId).get(); + assertThat(updateMember.getMemberStatus()).isEqualTo(updateRequestDto.memberStatus()); + } + + @Test + @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 성공") + void deleteMember_Id_Success() { + //given + String memberId = UlidCreator.getUlid().toString(); + Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); + memberStoreRepository.insert(saveMember); + + //when + memberService.deleteMember(saveMember.getMemberId()); + + //then + Optional optionalMember = memberReaderRepository.findById(memberId); + assertThat(optionalMember).isEqualTo(Optional.empty()); + } + + @Test + @DisplayName("회원Id를 입력받아 회원을 삭제할 수 있다. - 실패") + void deleteMember_Id_ThrowMemberException() { + //given + String memberId = UlidCreator.getUlid().toString(); + Member saveMember = new Member(memberId, "Kim", MemberStatus.BLACK); + memberStoreRepository.insert(saveMember); + + //when + memberService.deleteMember(saveMember.getMemberId()); + + //then + String strangeId = UlidCreator.getUlid().toString(); + assertThatThrownBy(() -> memberService.deleteMember(strangeId)) + .isInstanceOf(MemberException.class) + .hasMessage(FAIL_TO_DELETE_MEMBER.getMessage()); + } + + @ParameterizedTest + @DisplayName("저장되어 있는 모든 멤버를 조회할 수 있다. - 성공") + @MethodSource("member_Data") + void getAllMembers_EqualsListOfMembers(List members) { + //given + members.forEach(member -> memberStoreRepository.insert(member)); + + //when + MemberGetResponses response = memberService.getAllMembers(); + + //then + List responseExpect = members.stream() + .map(MemberGetResponse::toDto) + .collect(Collectors.toList()); + + assertThat(response).isNotNull(); + assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); + } + + @ParameterizedTest + @DisplayName("저장되어 있는 모든 블랙리스트 멤버를 조회할 수 있다. - 성공") + @MethodSource("member_Data") + void getAllBlackMembers_EqualsListOfMembers(List members) { + //given + members.forEach(member -> memberStoreRepository.insert(member)); + List blackMemberList = members.stream() + .filter(m -> m.getMemberStatus() == MemberStatus.BLACK) + .toList(); + + //when + MemberGetResponses response = memberService.getAllBlackMembers(); + + //then + List responseExpect = blackMemberList.stream() + .map(MemberGetResponse::toDto) + .collect(Collectors.toList()); + + assertThat(response).isNotNull(); + assertThat(response.getGetMemberListRes()).usingRecursiveComparison().isEqualTo(responseExpect); + } + + private static Stream> member_Data() { + Member member1 = new Member(UlidCreator.getUlid().toString(), "Kim", MemberStatus.BLACK); + Member member2 = new Member(UlidCreator.getUlid().toString(), "Park", MemberStatus.WHITE); + return Stream.of( + List.of(member1, member2) + ); + } } diff --git a/src/test/java/org/programmers/VoucherManagement/member/domain/MemberTest.java b/src/test/java/org/programmers/VoucherManagement/member/domain/MemberTest.java index 56ff0187b6..0732d962c2 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/domain/MemberTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/domain/MemberTest.java @@ -1,10 +1,9 @@ package org.programmers.VoucherManagement.member.domain; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.util.UUID; - import static org.assertj.core.api.Assertions.assertThat; public class MemberTest { @@ -12,7 +11,7 @@ public class MemberTest { @DisplayName("회원의 상태(black/white)를 변경할 수 있다.") void changeMemberStatus_MemberStatus_EqualsUpdateMember() { //given - Member member = new Member(UUID.randomUUID(), "kim", MemberStatus.WHITE); + Member member = new Member(UlidCreator.getUlid().toString(), "kim", MemberStatus.WHITE); //when member.changeMemberStatus(MemberStatus.BLACK); diff --git a/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java b/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java index 735d6c15a1..32871f5dc2 100644 --- a/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java +++ b/src/test/java/org/programmers/VoucherManagement/member/infrastructure/JdbcMemberRepositoryTest.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.member.infrastructure; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -11,7 +12,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @@ -24,13 +24,13 @@ public class JdbcMemberRepositoryTest { @Autowired private JdbcMemberStoreRepository memberStoreRepository; - private Member blackMember = new Member(UUID.randomUUID(), "kim", MemberStatus.BLACK); - private Member whiteMember = new Member(UUID.randomUUID(), "park", MemberStatus.WHITE); + private Member blackMember = new Member(UlidCreator.getUlid().toString(), "kim", MemberStatus.BLACK); + private Member whiteMember = new Member(UlidCreator.getUlid().toString(), "park", MemberStatus.WHITE); @BeforeEach void initMember() { - blackMember = new Member(UUID.randomUUID(), "kim", MemberStatus.BLACK); - whiteMember = new Member(UUID.randomUUID(), "park", MemberStatus.WHITE); + blackMember = new Member(UlidCreator.getUlid().toString(), "kim", MemberStatus.BLACK); + whiteMember = new Member(UlidCreator.getUlid().toString(), "park", MemberStatus.WHITE); } @Test @@ -103,7 +103,7 @@ void findAllByMemberStatus_Success() { void findById_MemberId_EqualsFindMember() { //given memberStoreRepository.insert(blackMember); - UUID findMemberId = blackMember.getMemberId(); + String findMemberId = blackMember.getMemberId(); //when Member memberExpect = memberReaderRepository.findById(findMemberId).get(); @@ -117,7 +117,7 @@ void findById_MemberId_EqualsFindMember() { void delete_MemberId_Success() { //given memberStoreRepository.insert(blackMember); - UUID deleteMemberId = blackMember.getMemberId(); + String deleteMemberId = blackMember.getMemberId(); //when memberStoreRepository.delete(deleteMemberId); diff --git a/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java b/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java index 2c7e307f15..58701adf39 100644 --- a/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java +++ b/src/test/java/org/programmers/VoucherManagement/util/MemberConverterTest.java @@ -6,8 +6,6 @@ import org.programmers.VoucherManagement.member.domain.Member; import org.programmers.VoucherManagement.member.domain.MemberStatus; -import java.util.UUID; - import static org.assertj.core.api.Assertions.assertThat; public class MemberConverterTest { @@ -15,13 +13,13 @@ public class MemberConverterTest { @DisplayName("문자열을 Member 객체로 변환할 수 있다. - 성공") void toMember_InputString_EqualsMember() { // Given - String line = "221d0e7d-0d28-4040-9012-62004a671427,Park,BLACK"; + String line = "01H6ETXP7DNQ09NXRB7D9F1ZJH,Park,BLACK"; // When Member member = MemberConverter.toMember(line); // Then - UUID expectedId = UUID.fromString("221d0e7d-0d28-4040-9012-62004a671427"); + String expectedId = "01H6ETXP7DNQ09NXRB7D9F1ZJH"; String expectedName = "Park"; MemberStatus expectedStatus = MemberStatus.BLACK; diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java index af9ce3d638..b4a176126e 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceMockTest.java @@ -1,5 +1,7 @@ package org.programmers.VoucherManagement.voucher.application; +import com.github.f4b6a3.ulid.UlidCreator; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -17,11 +19,9 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; -import java.util.UUID; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -42,7 +42,7 @@ public class VoucherServiceMockTest { @DisplayName("Fixed 바우처를 수정할 수 있다. - 성공") void updateFixedVoucher_Dto_Success() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); Voucher saveVoucher = new FixedAmountVoucher(voucherId, DiscountType.FIXED, new DiscountValue(100)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(1000); @@ -59,48 +59,49 @@ void updateFixedVoucher_Dto_Success() { } @Test - @DisplayName("Percent 바우처를 수정할 수 있다. - 성공") - void updatePercentVoucher_Dto_Success() { + @DisplayName("Percent 바우처를 수정할 수 있다.(1-100을 넘어가면 예외 발생) - 실패") + void updatePercentVoucher_Dto_ThrowVoucherException() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); - VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(40); + VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(-1); //mocking given(voucherReaderRepository.findById(voucherId)).willReturn(Optional.of(saveVoucher)); - //when - voucherService.updateVoucher(voucherId, updateRequestDto); - //then - Voucher updateVoucher = voucherReaderRepository.findById(voucherId).get(); - assertThat(updateVoucher.getDiscountValue().getValue()).isEqualTo(40); + Assertions.assertThatThrownBy(() -> voucherService.updateVoucher(voucherId, updateRequestDto)) + .isInstanceOf(VoucherException.class) + .hasMessage("할인율은 1부터 100사이의 값이여야 합니다."); } + @Test - @DisplayName("Percent 바우처를 수정할 수 있다.(1-100을 넘어가면 예외 발생) - 실패") - void updatePercentVoucher_Dto_ThrowVoucherException() { + @DisplayName("Percent 바우처를 수정할 수 있다. - 성공") + void updatePercentVoucher_Dto_Success() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); - VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(-1); + VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(40); //mocking given(voucherReaderRepository.findById(voucherId)).willReturn(Optional.of(saveVoucher)); + //when + voucherService.updateVoucher(voucherId, updateRequestDto); + //then - assertThatThrownBy(() -> voucherService.updateVoucher(voucherId, updateRequestDto)) - .isInstanceOf(VoucherException.class) - .hasMessage("할인율은 1부터 100사이의 값이여야 합니다."); + Voucher updateVoucher = voucherReaderRepository.findById(voucherId).get(); + assertThat(updateVoucher.getDiscountValue().getValue()).isEqualTo(40); } @Test @DisplayName("바우처ID를 입력받아 해당 바우처를 삭제할 수 있다. - 성공") void deleteVoucher_voucherId_Success() { //given - Voucher saveVoucher = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(1000)); + Voucher saveVoucher = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(1000)); voucherStoreRepository.insert(saveVoucher); //when @@ -114,8 +115,8 @@ void deleteVoucher_voucherId_Success() { @DisplayName("바우처 전체 목록을 가져올 수 있다. - 성공") void getVouchers_EqualsListOfVouchers() { //given - Voucher voucher1 = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(100)); - Voucher voucher2 = new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(10)); + Voucher voucher1 = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(100)); + Voucher voucher2 = new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(10)); List voucherList = Arrays.asList(voucher1, voucher2); //mocking diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java index 0fd1835786..6cea5f9c9c 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/application/VoucherServiceTest.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.voucher.application; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.programmers.VoucherManagement.voucher.application.dto.VoucherGetResponse; @@ -17,7 +18,6 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; -import java.util.UUID; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; @@ -40,7 +40,7 @@ public class VoucherServiceTest { @DisplayName("Fixed 바우처를 수정할 수 있다. - 성공") void updateFixedVoucher_Dto_Success() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); Voucher saveVoucher = new FixedAmountVoucher(voucherId, DiscountType.FIXED, new DiscountValue(100)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(1000); @@ -57,7 +57,7 @@ void updateFixedVoucher_Dto_Success() { @DisplayName("Percent 바우처를 수정할 수 있다. - 성공") void updatePercentVoucher_Dto_Success() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(40); @@ -74,7 +74,7 @@ void updatePercentVoucher_Dto_Success() { @DisplayName("Percent 바우처를 수정할 수 있다.(1-100을 넘어가면 예외 발생) - 실패") void updatePercentVoucher_Dto_ThrowVoucherException() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); Voucher saveVoucher = new PercentAmountVoucher(voucherId, DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(saveVoucher); VoucherUpdateRequest updateRequestDto = new VoucherUpdateRequest(-1); @@ -89,7 +89,7 @@ void updatePercentVoucher_Dto_ThrowVoucherException() { @DisplayName("바우처ID를 입력받아 해당 바우처를 삭제할 수 있다. - 성공") void deleteVoucher_voucherId_Success() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); Voucher saveVoucher = new FixedAmountVoucher(voucherId, DiscountType.FIXED, new DiscountValue(1000)); voucherStoreRepository.insert(saveVoucher); @@ -105,8 +105,8 @@ void deleteVoucher_voucherId_Success() { @DisplayName("바우처 전체 목록을 가져올 수 있다. - 성공") void getVouchers_EqualsListOfVouchers() { //given - Voucher voucher1 = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(100)); - Voucher voucher2 = new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(10)); + Voucher voucher1 = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(100)); + Voucher voucher2 = new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(10)); voucherStoreRepository.insert(voucher1); voucherStoreRepository.insert(voucher2); List voucherList = Arrays.asList(voucher1, voucher2); diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java index 1a0362144c..fd47e806f1 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/domain/PercentAmountVoucherTest.java @@ -1,11 +1,10 @@ package org.programmers.VoucherManagement.voucher.domain; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.programmers.VoucherManagement.voucher.exception.VoucherException; -import java.util.UUID; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -15,7 +14,7 @@ public class PercentAmountVoucherTest { @DisplayName("Percent 바우처를 생성한다. - 성공") void PercentAmountVoucher_Parameters_createPercentAmountVoucher() { //given - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); DiscountType discountType = DiscountType.PERCENT; DiscountValue discountValue = new DiscountValue(15); @@ -32,7 +31,7 @@ void PercentAmountVoucher_Parameters_createPercentAmountVoucher() { @DisplayName("Percent 바우처를 생성한다. - 실패") void PercentAmountVoucher_Parameters_throwVoucherException() { //given&when - String voucherId = UUID.randomUUID(); + String voucherId = UlidCreator.getUlid().toString(); DiscountType discountType = DiscountType.PERCENT; DiscountValue discountValue = new DiscountValue(101); diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/domain/VoucherTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/domain/VoucherTest.java index 2903498c9a..8b00318df8 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/domain/VoucherTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/domain/VoucherTest.java @@ -1,10 +1,9 @@ package org.programmers.VoucherManagement.voucher.domain; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.util.UUID; - import static org.assertj.core.api.Assertions.assertThat; public class VoucherTest { @@ -12,7 +11,7 @@ public class VoucherTest { @DisplayName("바우처의 할인 금액을 변경할 수 있다. - 성공") void changeDiscountValue_DiscountValue_Success() { //given - Voucher voucher = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(1000)); + Voucher voucher = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(1000)); //when voucher.changeDiscountValue(new DiscountValue(200)); diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java index ba7e4cf8cd..7aeee9f797 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/JdbcVoucherRepositoryTest.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.voucher.infrastructure; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -10,7 +11,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @@ -28,15 +28,14 @@ public class JdbcVoucherRepositoryTest { @BeforeEach void initVoucher() { - fixedVoucher = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(1000)); - percentVoucher = new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(10)); + fixedVoucher = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(1000)); + percentVoucher = new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(10)); } @Test @DisplayName("Percent 바우처를 생성할 수 있다.") void insert_PercentVoucher_EqualsNewPercentVoucher() { //given - System.out.println(percentVoucher.getVoucherId()); voucherStoreRepository.insert(percentVoucher); //when diff --git a/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepositoryTest.java b/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepositoryTest.java index 7a9cb230a8..2cc3038f96 100644 --- a/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepositoryTest.java +++ b/src/test/java/org/programmers/VoucherManagement/voucher/infrastructure/MemoryVoucherRepositoryTest.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.voucher.infrastructure; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -10,7 +11,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.UUID; import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; @@ -32,8 +32,8 @@ void init() { @DisplayName("바우처를 메모리에 저장하는 테스트 - 성공") void save_Voucher_Success() { //given - Voucher fixedVoucher = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(1000)); - Voucher percentVoucher = new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(10)); + Voucher fixedVoucher = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(1000)); + Voucher percentVoucher = new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(10)); //when voucherRepository.insert(fixedVoucher); @@ -63,10 +63,10 @@ void findAll_Success(List voucherList) { private static Stream 저장된바우처를_모두조회_성공() { List voucherList = new ArrayList<>(); - voucherList.add(new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(1000))); - voucherList.add(new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(10))); - voucherList.add(new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(2000))); - voucherList.add(new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(20))); + voucherList.add(new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(1000))); + voucherList.add(new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(10))); + voucherList.add(new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(2000))); + voucherList.add(new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(20))); return Stream.of(Arguments.of(voucherList)); } } diff --git a/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java b/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java index df16d901ac..7a1c17c71e 100644 --- a/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java +++ b/src/test/java/org/programmers/VoucherManagement/wallet/application/WalletServiceTest.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.wallet.application; +import com.github.f4b6a3.ulid.UlidCreator; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -22,7 +23,6 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; -import java.util.UUID; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; @@ -119,12 +119,12 @@ void deleteWallet_walletId_ThrowWalletException() { } private void setUpWalletServiceTest() { - member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); - member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.BLACK); - voucher1 = new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(10)); - voucher2 = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(10000)); - wallet1 = new Wallet(UUID.randomUUID(), voucher1, member1); - wallet2 = new Wallet(UUID.randomUUID(), voucher1, member2); + member1 = new Member(UlidCreator.getUlid().toString(), "Kim", MemberStatus.BLACK); + member2 = new Member(UlidCreator.getUlid().toString(), "Park", MemberStatus.BLACK); + voucher1 = new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(10)); + voucher2 = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(10000)); + wallet1 = new Wallet(UlidCreator.getUlid().toString(), voucher1, member1); + wallet2 = new Wallet(UlidCreator.getUlid().toString(), voucher1, member2); memberStoreRepository.insert(member1); memberStoreRepository.insert(member2); voucherStoreRepository.insert(voucher1); diff --git a/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java b/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java index 31610e9b85..f86c34025a 100644 --- a/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java +++ b/src/test/java/org/programmers/VoucherManagement/wallet/infrastructure/JdbcWalletRepositoryTest.java @@ -1,5 +1,6 @@ package org.programmers.VoucherManagement.wallet.infrastructure; +import com.github.f4b6a3.ulid.UlidCreator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -17,7 +18,6 @@ import java.util.List; import java.util.Optional; -import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @@ -43,10 +43,10 @@ public class JdbcWalletRepositoryTest { @BeforeEach void initVoucher() { - member1 = new Member(UUID.randomUUID(), "Kim", MemberStatus.BLACK); - member2 = new Member(UUID.randomUUID(), "Park", MemberStatus.BLACK); - voucher1 = new PercentAmountVoucher(UUID.randomUUID(), DiscountType.PERCENT, new DiscountValue(10)); - voucher2 = new FixedAmountVoucher(UUID.randomUUID(), DiscountType.FIXED, new DiscountValue(10000)); + member1 = new Member(UlidCreator.getUlid().toString(), "Kim", MemberStatus.BLACK); + member2 = new Member(UlidCreator.getUlid().toString(), "Park", MemberStatus.BLACK); + voucher1 = new PercentAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.PERCENT, new DiscountValue(10)); + voucher2 = new FixedAmountVoucher(UlidCreator.getUlid().toString(), DiscountType.FIXED, new DiscountValue(10000)); memberStoreRepository.insert(member1); memberStoreRepository.insert(member2); voucherStoreRepository.insert(voucher1); @@ -57,7 +57,7 @@ void initVoucher() { @DisplayName("Wallet을 생성할 수 있다. - 성공") void insert_Wallet_EqualsNewWallet() { //given - Wallet wallet = new Wallet(UUID.randomUUID(), voucher1, member1); + Wallet wallet = new Wallet(UlidCreator.getUlid().toString(), voucher1, member1); //when walletStoreRepository.insert(wallet); @@ -72,7 +72,7 @@ void insert_Wallet_EqualsNewWallet() { @DisplayName("id를 이용해 Wallet을 조회할 수 있다. - 성공") void findById_WalletID_EqualsFindWallet() { //given - Wallet wallet = new Wallet(UUID.randomUUID(), voucher1, member1); + Wallet wallet = new Wallet(UlidCreator.getUlid().toString(), voucher1, member1); walletStoreRepository.insert(wallet); //when @@ -86,8 +86,8 @@ void findById_WalletID_EqualsFindWallet() { @DisplayName("회원Id를 이용하여 가지고 있는 Wallet 리스트를 반환할 수 있다. - 성공") void findAllByMemberId_MemberId_Success() { //given - Wallet wallet1 = new Wallet(UUID.randomUUID(), voucher1, member1); - Wallet wallet2 = new Wallet(UUID.randomUUID(), voucher2, member1); + Wallet wallet1 = new Wallet(UlidCreator.getUlid().toString(), voucher1, member1); + Wallet wallet2 = new Wallet(UlidCreator.getUlid().toString(), voucher2, member1); walletStoreRepository.insert(wallet1); walletStoreRepository.insert(wallet2); @@ -103,8 +103,8 @@ void findAllByMemberId_MemberId_Success() { @DisplayName("바우처Id를 이용하여 가지고 있는 Wallet 리스트를 반환할 수 있다. - 성공") void findAllByVoucherId_VoucherId_Success() { //given - Wallet wallet1 = new Wallet(UUID.randomUUID(), voucher1, member1); - Wallet wallet2 = new Wallet(UUID.randomUUID(), voucher2, member1); + Wallet wallet1 = new Wallet(UlidCreator.getUlid().toString(), voucher1, member1); + Wallet wallet2 = new Wallet(UlidCreator.getUlid().toString(), voucher2, member1); walletStoreRepository.insert(wallet1); walletStoreRepository.insert(wallet2); @@ -120,7 +120,7 @@ void findAllByVoucherId_VoucherId_Success() { @DisplayName("등록된 Wallet을 삭제할 수 있다. - 성공") void delete_VoucherId_Success() { //given - Wallet wallet = new Wallet(UUID.randomUUID(), voucher1, member1); + Wallet wallet = new Wallet(UlidCreator.getUlid().toString(), voucher1, member1); walletStoreRepository.insert(wallet); //when