From dba1e6973e4aa4c6189de7643614aa627e1f69ea Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 16:51:24 +0900 Subject: [PATCH 1/8] =?UTF-8?q?FEAT=20:=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20lent=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/example/lent/LentController.java" | 7 +++++-- .../main/java/com/example/lent/domain/CabinetConfig.java" | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" index be46233..748b106 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" @@ -2,13 +2,16 @@ import com.example.lent.dto.LentRequest; import com.example.lent.dto.LentResponse; +import lombok.RequiredArgsConstructor; /*컨트롤러는 뭘까요?*/ /*컨트롤러는 왜 인터페이스가 없어도 될까요?*/ +@RequiredArgsConstructor public class LentController { - private LentService lentService; + + private final LentService lentService; public LentResponse lent(LentRequest request) { - return null; + return lentService.lent(request); } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" new file mode 100644 index 0000000..4ed86d8 --- /dev/null +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" @@ -0,0 +1,4 @@ +package com.example.lent.domain; + +public class CabinetConfig { +} From 8161417749631cd05fba7d6336ebf9f05b01a83e Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 16:55:37 +0900 Subject: [PATCH 2/8] =?UTF-8?q?FEAT=20:=20=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=EC=9D=98=20lent=20=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84=20&&?= =?UTF-8?q?=20Cabinet=20=EC=97=94=ED=8B=B0=ED=8B=B0=EC=97=90=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B0=94=EA=BE=B8=EB=8A=94=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/lent/LentServiceImpl.java" | 61 ++++++++++++++++++- .../com/example/lent/domain/Cabinet.java" | 7 ++- .../example/lent/domain/CabinetConfig.java" | 2 + 3 files changed, 67 insertions(+), 3 deletions(-) diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" index 4ecff32..8517636 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" @@ -1,12 +1,71 @@ package com.example.lent; +import static com.example.lent.domain.CabinetConfig.LENDING_PERIOD; + +import com.example.lent.domain.Cabinet; +import com.example.lent.domain.CabinetStatus; +import com.example.lent.domain.LentHistory; +import com.example.lent.domain.User; import com.example.lent.dto.LentRequest; import com.example.lent.dto.LentResponse; +import com.example.lent.testutil.CabinetRepository; +import com.example.lent.testutil.UserRepository; +import java.util.List; +import lombok.RequiredArgsConstructor; /*서비스는 뭘까요?*/ +@RequiredArgsConstructor public class LentServiceImpl implements LentService { + + private final LentHistoryRepository lentHistoryRepository; + private final CabinetRepository cabinetRepository; + private final UserRepository userRepository; + @Override public LentResponse lent(LentRequest request) { - return null; + Cabinet findCabinet = cabinetRepository.findAll() + .stream() + .filter(cabinet -> cabinet.getCabinetId() == request.getCabinetId()) + .findFirst() + .orElseThrow(() -> new RuntimeException( + request.getCabinetId() + "번 사물함이 존재하지 않습니다"));//TODO: 커스텀 예외 클래스 만들기 + + User findUser = userRepository.findById(request.getUserId()); + List lentHistoryList = lentHistoryRepository.findAll(); + + // 사물함의 상태가 사용중인 경우 + if (findCabinet.getCabinetStatus() == CabinetStatus.FULL) { + throw new RuntimeException("이미 사용 중인 사물함입니다."); + } + + // 유저가 현재 사물함을 대여중인 경우 + boolean isUserLent = lentHistoryList.stream() + .findFirst() + .filter(lentHistory -> lentHistory.getLentUserName() == findUser.getName()) + .isPresent(); // TODO: 가독성이 안좋으니 메서드로 빼기? + if (isUserLent) { + throw new RuntimeException("이미 대여 중인 유저입니다."); + } + + // 사용 정지 상태인 유저인 경우 + if (findUser.isBanned()) { + throw new RuntimeException("사용 정지상태인 유저입니다."); + } + + findCabinet.changeStatus(CabinetStatus.FULL); + cabinetRepository.save(findCabinet); + + LentHistory lentHistory = lentHistoryRepository.save(new LentHistory( + findCabinet.getCabinetId(), + findUser.getUserId(), + findUser.getName(), + request.getCreatedAt(), + request.getCreatedAt().plusDays(LENDING_PERIOD))); + + return new LentResponse(lentHistory.getLentHistoryId(), + lentHistory.getCabinetId(), + findUser.getName(), + lentHistory.getCreatedAt(), + lentHistory.getExpiredAt()); } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/Cabinet.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/Cabinet.java" index d86aa42..69d62a1 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/Cabinet.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/Cabinet.java" @@ -1,12 +1,11 @@ package com.example.lent.domain; -import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.RequiredArgsConstructor; /*Entity가 뭘까요?*/ @Getter public class Cabinet { + private Long cabinetId; private CabinetStatus cabinetStatus; @@ -18,4 +17,8 @@ public Cabinet(CabinetStatus status) { public void id(Long id) { this.cabinetId = id; } + + public void changeStatus(CabinetStatus status) { + this.cabinetStatus = status; + } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" index 4ed86d8..59e8d3e 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/CabinetConfig.java" @@ -1,4 +1,6 @@ package com.example.lent.domain; public class CabinetConfig { + + public static final int LENDING_PERIOD = 31; } From e27fb7cf51eca94898771437633f1888a16d8909 Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 16:56:48 +0900 Subject: [PATCH 3/8] =?UTF-8?q?FEAT=20:=20=EB=A6=AC=ED=8C=8C=EC=A7=80?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=20save,=20findAll=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lent/LentHistoryRepositoryImpl.java" | 10 ++++---- .../com/example/lent/domain/LentHistory.java" | 23 +++++++++++-------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" index 96cff00..def5b8f 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" @@ -1,23 +1,25 @@ package com.example.lent; import com.example.lent.domain.LentHistory; - import java.util.ArrayList; import java.util.List; /*리포지토리는 뭘까요?*/ public class LentHistoryRepositoryImpl implements LentHistoryRepository { - private static Long ID_SEQUENCE = 1L; + /*실제 DB를 사용하지 않으므로 내부 Collection으로 대체합니다. - Collection이 뭘까요?*/ private static final List TABLE = new ArrayList<>(); + private Long ID_SEQUENCE = 1L; @Override public LentHistory save(LentHistory lentHistory) { - return null; + lentHistory.setId(ID_SEQUENCE++); + TABLE.add(lentHistory); + return lentHistory; } @Override public List findAll() { - return null; + return List.copyOf(TABLE); } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/LentHistory.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/LentHistory.java" index d7f3169..63e84c1 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/LentHistory.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/domain/LentHistory.java" @@ -1,26 +1,29 @@ package com.example.lent.domain; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - import java.time.LocalDateTime; +import lombok.Getter; /*Entity가 뭘까요?*/ @Getter public class LentHistory { + + private final Long userId; + private final Long cabinetId; + private final String lentUserName; + private final LocalDateTime createdAt; + private final LocalDateTime expiredAt; private Long lentHistoryId; - private Long userId; - private Long cabinetId; - private String lentUserName; - private LocalDateTime createdAt; - private LocalDateTime expiredAt; - public LentHistory(Long cabinetId, Long userId, String lentUserName, LocalDateTime createdAt, LocalDateTime expiredAt) { + public LentHistory(Long cabinetId, Long userId, String lentUserName, LocalDateTime createdAt, + LocalDateTime expiredAt) { this.cabinetId = cabinetId; this.userId = userId; this.lentUserName = lentUserName; this.createdAt = createdAt; this.expiredAt = expiredAt; } + + public void setId(Long id) { + this.lentHistoryId = id; + } } From 3dcd5cd8f80d3b88f58c4f51719354d0837275f1 Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 17:01:09 +0900 Subject: [PATCH 4/8] =?UTF-8?q?FIX=20:=20lent=EC=9D=98=20=EC=9C=A0?= =?UTF-8?q?=ED=9A=A8=EC=84=B1=20=EC=B2=B4=ED=81=AC=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/lent/LentServiceImpl.java" | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" index 8517636..19239bf 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" @@ -21,18 +21,9 @@ public class LentServiceImpl implements LentService { private final CabinetRepository cabinetRepository; private final UserRepository userRepository; - @Override - public LentResponse lent(LentRequest request) { - Cabinet findCabinet = cabinetRepository.findAll() - .stream() - .filter(cabinet -> cabinet.getCabinetId() == request.getCabinetId()) - .findFirst() - .orElseThrow(() -> new RuntimeException( - request.getCabinetId() + "번 사물함이 존재하지 않습니다"));//TODO: 커스텀 예외 클래스 만들기 - - User findUser = userRepository.findById(request.getUserId()); - List lentHistoryList = lentHistoryRepository.findAll(); - + private static void checkCabinetAvailabilityAndUserStatus(Cabinet findCabinet, + List lentHistoryList, + User findUser) { // 사물함의 상태가 사용중인 경우 if (findCabinet.getCabinetStatus() == CabinetStatus.FULL) { throw new RuntimeException("이미 사용 중인 사물함입니다."); @@ -51,6 +42,21 @@ public LentResponse lent(LentRequest request) { if (findUser.isBanned()) { throw new RuntimeException("사용 정지상태인 유저입니다."); } + } + + @Override + public LentResponse lent(LentRequest request) { + Cabinet findCabinet = cabinetRepository.findAll() + .stream() + .filter(cabinet -> cabinet.getCabinetId() == request.getCabinetId()) + .findFirst() + .orElseThrow(() -> new RuntimeException( + request.getCabinetId() + "번 사물함이 존재하지 않습니다"));//TODO: 커스텀 예외 클래스 만들기 + + User findUser = userRepository.findById(request.getUserId()); + List lentHistoryList = lentHistoryRepository.findAll(); + + checkCabinetAvailabilityAndUserStatus(findCabinet, lentHistoryList, findUser); findCabinet.changeStatus(CabinetStatus.FULL); cabinetRepository.save(findCabinet); From bbb5223a2bb5bf6c09398af372a9209b581bb4f4 Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 17:22:21 +0900 Subject: [PATCH 5/8] =?UTF-8?q?FEAT=20:=20=EC=BB=A4=EC=8A=A4=ED=85=80=20?= =?UTF-8?q?=EC=98=88=EC=99=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/lent/LentServiceImpl.java" | 13 ++++++++----- .../exception/CabinetAlreadyLentException.java" | 10 ++++++++++ .../lent/exception/CabinetNotExistException.java" | 10 ++++++++++ .../example/lent/exception/ExceptionMessages.java" | 14 ++++++++++++++ .../lent/exception/UserAlreadyLentException.java" | 10 ++++++++++ .../lent/exception/UserBannedException.java" | 10 ++++++++++ 6 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" create mode 100644 "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" create mode 100644 "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" create mode 100644 "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" create mode 100644 "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" index 19239bf..f18aaa6 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" @@ -8,6 +8,10 @@ import com.example.lent.domain.User; import com.example.lent.dto.LentRequest; import com.example.lent.dto.LentResponse; +import com.example.lent.exception.CabinetAlreadyLentException; +import com.example.lent.exception.CabinetNotExistException; +import com.example.lent.exception.UserAlreadyLentException; +import com.example.lent.exception.UserBannedException; import com.example.lent.testutil.CabinetRepository; import com.example.lent.testutil.UserRepository; import java.util.List; @@ -26,7 +30,7 @@ private static void checkCabinetAvailabilityAndUserStatus(Cabinet findCabinet, User findUser) { // 사물함의 상태가 사용중인 경우 if (findCabinet.getCabinetStatus() == CabinetStatus.FULL) { - throw new RuntimeException("이미 사용 중인 사물함입니다."); + throw new CabinetAlreadyLentException(); } // 유저가 현재 사물함을 대여중인 경우 @@ -35,12 +39,12 @@ private static void checkCabinetAvailabilityAndUserStatus(Cabinet findCabinet, .filter(lentHistory -> lentHistory.getLentUserName() == findUser.getName()) .isPresent(); // TODO: 가독성이 안좋으니 메서드로 빼기? if (isUserLent) { - throw new RuntimeException("이미 대여 중인 유저입니다."); + throw new UserAlreadyLentException(); } // 사용 정지 상태인 유저인 경우 if (findUser.isBanned()) { - throw new RuntimeException("사용 정지상태인 유저입니다."); + throw new UserBannedException(); } } @@ -50,8 +54,7 @@ public LentResponse lent(LentRequest request) { .stream() .filter(cabinet -> cabinet.getCabinetId() == request.getCabinetId()) .findFirst() - .orElseThrow(() -> new RuntimeException( - request.getCabinetId() + "번 사물함이 존재하지 않습니다"));//TODO: 커스텀 예외 클래스 만들기 + .orElseThrow(() -> new CabinetNotExistException()); User findUser = userRepository.findById(request.getUserId()); List lentHistoryList = lentHistoryRepository.findAll(); diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" new file mode 100644 index 0000000..de5462c --- /dev/null +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" @@ -0,0 +1,10 @@ +package com.example.lent.exception; + +import static com.example.lent.exception.ExceptionMessages.CABINET_ALREADY_LENT; + +public class CabinetAlreadyLentException extends RuntimeException { + + public CabinetAlreadyLentException() { + super(CABINET_ALREADY_LENT.toString()); + } +} diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" new file mode 100644 index 0000000..65cbe98 --- /dev/null +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" @@ -0,0 +1,10 @@ +package com.example.lent.exception; + +import static com.example.lent.exception.ExceptionMessages.CABINET_NOT_EXIST; + +public class CabinetNotExistException extends RuntimeException { + + public CabinetNotExistException() { + super(CABINET_NOT_EXIST.toString()); + } +} diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" new file mode 100644 index 0000000..96ff5f7 --- /dev/null +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" @@ -0,0 +1,14 @@ +package com.example.lent.exception; + +public enum ExceptionMessages { + CABINET_ALREADY_LENT("이미 사용 중인 사물함입니다."), + USER_ALREADY_LENT("이미 대여 중인 유저입니다."), + USER_BANNED("사용 정지상태인 유저입니다."), + CABINET_NOT_EXIST("해당 사물함을 찾을 수 없습니다."); + + private final String message; + + ExceptionMessages(String message) { + this.message = message; + } +} diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" new file mode 100644 index 0000000..a754f17 --- /dev/null +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" @@ -0,0 +1,10 @@ +package com.example.lent.exception; + +import static com.example.lent.exception.ExceptionMessages.USER_ALREADY_LENT; + +public class UserAlreadyLentException extends RuntimeException { + + public UserAlreadyLentException() { + super(USER_ALREADY_LENT.toString()); + } +} diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" new file mode 100644 index 0000000..0f95a2b --- /dev/null +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" @@ -0,0 +1,10 @@ +package com.example.lent.exception; + +import static com.example.lent.exception.ExceptionMessages.USER_BANNED; + +public class UserBannedException extends RuntimeException { + + public UserBannedException() { + super(USER_BANNED.toString()); + } +} From 89995bad805eb1cf3864f712ec9682079c22ea56 Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 17:24:35 +0900 Subject: [PATCH 6/8] =?UTF-8?q?FIX=20:=20=EC=9C=A0=EC=A0=80=EA=B0=80=20?= =?UTF-8?q?=EB=8C=80=EC=97=AC=EC=A4=91=EC=9D=B8=EC=A7=80=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=ED=95=98=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/lent/LentServiceImpl.java" | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" index f18aaa6..f61786b 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" @@ -34,11 +34,7 @@ private static void checkCabinetAvailabilityAndUserStatus(Cabinet findCabinet, } // 유저가 현재 사물함을 대여중인 경우 - boolean isUserLent = lentHistoryList.stream() - .findFirst() - .filter(lentHistory -> lentHistory.getLentUserName() == findUser.getName()) - .isPresent(); // TODO: 가독성이 안좋으니 메서드로 빼기? - if (isUserLent) { + if (isUserLent(lentHistoryList, findUser)) { throw new UserAlreadyLentException(); } @@ -48,6 +44,13 @@ private static void checkCabinetAvailabilityAndUserStatus(Cabinet findCabinet, } } + private static boolean isUserLent(List lentHistoryList, User findUser) { + return lentHistoryList.stream() + .findFirst() + .filter(lentHistory -> lentHistory.getLentUserName() == findUser.getName()) + .isPresent(); + } + @Override public LentResponse lent(LentRequest request) { Cabinet findCabinet = cabinetRepository.findAll() From 9bddbfca0d214df2b8979e7de2d4c43615d5036f Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 17:26:29 +0900 Subject: [PATCH 7/8] =?UTF-8?q?FIX=20:=20=EC=9D=B4=EB=84=98=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=97=90=20getMessage()=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80.=20=EB=8B=A4=EC=8B=A0=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=95=88=ED=95=B4=EB=B3=B4?= =?UTF-8?q?=EA=B3=A0=20=EC=BB=A4=EB=B0=8B=20=EC=95=88=ED=95=98=EA=B2=A0?= =?UTF-8?q?=EC=8A=B5=EB=8B=88=EB=8B=A4..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/lent/exception/CabinetAlreadyLentException.java" | 2 +- .../com/example/lent/exception/CabinetNotExistException.java" | 2 +- .../java/com/example/lent/exception/ExceptionMessages.java" | 4 ++++ .../com/example/lent/exception/UserAlreadyLentException.java" | 2 +- .../java/com/example/lent/exception/UserBannedException.java" | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" index de5462c..7f11032 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetAlreadyLentException.java" @@ -5,6 +5,6 @@ public class CabinetAlreadyLentException extends RuntimeException { public CabinetAlreadyLentException() { - super(CABINET_ALREADY_LENT.toString()); + super(CABINET_ALREADY_LENT.getMessage()); } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" index 65cbe98..b4583ce 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/CabinetNotExistException.java" @@ -5,6 +5,6 @@ public class CabinetNotExistException extends RuntimeException { public CabinetNotExistException() { - super(CABINET_NOT_EXIST.toString()); + super(CABINET_NOT_EXIST.getMessage()); } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" index 96ff5f7..58d02d2 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/ExceptionMessages.java" @@ -11,4 +11,8 @@ public enum ExceptionMessages { ExceptionMessages(String message) { this.message = message; } + + public String getMessage() { + return message; + } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" index a754f17..86693c5 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserAlreadyLentException.java" @@ -5,6 +5,6 @@ public class UserAlreadyLentException extends RuntimeException { public UserAlreadyLentException() { - super(USER_ALREADY_LENT.toString()); + super(USER_ALREADY_LENT.getMessage()); } } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" index 0f95a2b..d651591 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/exception/UserBannedException.java" @@ -5,6 +5,6 @@ public class UserBannedException extends RuntimeException { public UserBannedException() { - super(USER_BANNED.toString()); + super(USER_BANNED.getMessage()); } } From c405e5e035dbeeb53646fe42cb6ec394b6b5712d Mon Sep 17 00:00:00 2001 From: lamodadite Date: Tue, 14 Jan 2025 18:11:05 +0900 Subject: [PATCH 8/8] =?UTF-8?q?RENAME=20:=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC,=20=EC=84=9C=EB=B9=84=EC=8A=A4,=20=EB=A6=AC=ED=8C=8C?= =?UTF-8?q?=EC=A7=80=ED=86=A0=EB=A6=AC=20=ED=8F=B4=EB=8D=94=20=EB=A7=8C?= =?UTF-8?q?=EB=93=A4=EA=B3=A0=20=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/lent/controller/LentController.java" | 3 ++- .../com/example/lent/repository/LentHistoryRepository.java" | 4 ++-- .../example/lent/repository/LentHistoryRepositoryImpl.java" | 2 +- .../src/main/java/com/example/lent/service/LentService.java" | 3 ++- .../main/java/com/example/lent/service/LentServiceImpl.java" | 3 ++- 5 files changed, 9 insertions(+), 6 deletions(-) rename "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" => "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/controller/LentController.java" (83%) rename "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepository.java" => "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepository.java" (83%) rename "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" => "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepositoryImpl.java" (94%) rename "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentService.java" => "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentService.java" (81%) rename "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" => "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentServiceImpl.java" (96%) diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/controller/LentController.java" similarity index 83% rename from "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" rename to "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/controller/LentController.java" index 748b106..7abec81 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentController.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/controller/LentController.java" @@ -1,7 +1,8 @@ -package com.example.lent; +package com.example.lent.controller; import com.example.lent.dto.LentRequest; import com.example.lent.dto.LentResponse; +import com.example.lent.service.LentService; import lombok.RequiredArgsConstructor; /*컨트롤러는 뭘까요?*/ diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepository.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepository.java" similarity index 83% rename from "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepository.java" rename to "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepository.java" index 534a121..7208fcf 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepository.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepository.java" @@ -1,10 +1,10 @@ -package com.example.lent; +package com.example.lent.repository; import com.example.lent.domain.LentHistory; - import java.util.List; public interface LentHistoryRepository { + LentHistory save(LentHistory lentHistory); List findAll(); diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepositoryImpl.java" similarity index 94% rename from "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" rename to "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepositoryImpl.java" index def5b8f..daf90a8 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentHistoryRepositoryImpl.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/repository/LentHistoryRepositoryImpl.java" @@ -1,4 +1,4 @@ -package com.example.lent; +package com.example.lent.repository; import com.example.lent.domain.LentHistory; import java.util.ArrayList; diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentService.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentService.java" similarity index 81% rename from "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentService.java" rename to "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentService.java" index 1892b70..fea3af2 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentService.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentService.java" @@ -1,8 +1,9 @@ -package com.example.lent; +package com.example.lent.service; import com.example.lent.dto.LentRequest; import com.example.lent.dto.LentResponse; public interface LentService { + LentResponse lent(LentRequest request); } diff --git "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentServiceImpl.java" similarity index 96% rename from "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" rename to "v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentServiceImpl.java" index f61786b..918e349 100644 --- "a/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/LentServiceImpl.java" +++ "b/v1/backend/SPRING_LV_2_\352\260\234\353\205\270\353\213\265_3\352\263\204\354\270\265/src/main/java/com/example/lent/service/LentServiceImpl.java" @@ -1,4 +1,4 @@ -package com.example.lent; +package com.example.lent.service; import static com.example.lent.domain.CabinetConfig.LENDING_PERIOD; @@ -12,6 +12,7 @@ import com.example.lent.exception.CabinetNotExistException; import com.example.lent.exception.UserAlreadyLentException; import com.example.lent.exception.UserBannedException; +import com.example.lent.repository.LentHistoryRepository; import com.example.lent.testutil.CabinetRepository; import com.example.lent.testutil.UserRepository; import java.util.List;