From 96cc2f8be9d5fd04aa8c8b78e139fd8dc6793927 Mon Sep 17 00:00:00 2001 From: ji-won-2 Date: Thu, 15 May 2025 15:37:59 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8C=80=EC=86=8C=EB=AC=B8=EC=9E=90=20?= =?UTF-8?q?=EC=B0=A8=EC=9D=B4=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/entity/enums/CarStatus.java | 10 ++++ .../core/domain/entity/enums/CarType.java | 11 ++++ .../core/domain/entity/enums/RentStatus.java | 10 ++++ .../trackyweb/car/application/CarService.java | 4 +- .../dto/request/CarSearchByFilterRequest.java | 12 ++++- .../car/presentation/CarController.java | 6 +-- .../request/RentSearchByFilterRequest.java | 7 ++- .../repository/RentRepositoryCustomImpl.java | 5 +- .../application/ReservationService.java | 52 ------------------- .../repo/LocationDomainRepository.java | 9 ---- .../repo/ReservationCarRepository.java | 11 ---- .../repo/ReservationDriveRepository.java | 13 ----- .../repo/ReservationRentRepository.java | 11 ---- .../presentation/dto/CarResponse.java | 23 -------- .../dto/ReservationDrivingsResponse.java | 29 ----------- .../presentation/dto/ReservationResponse.java | 30 ----------- .../dto/ReservationWithCarResponse.java | 13 ----- .../presentation/rentUserController.java | 33 ------------ 18 files changed, 54 insertions(+), 235 deletions(-) delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/application/ReservationService.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/LocationDomainRepository.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationCarRepository.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationDriveRepository.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationRentRepository.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/CarResponse.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationDrivingsResponse.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationResponse.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationWithCarResponse.java delete mode 100644 tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/rentUserController.java diff --git a/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarStatus.java b/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarStatus.java index d1baabee..0b55d3cd 100644 --- a/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarStatus.java +++ b/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarStatus.java @@ -15,4 +15,14 @@ public enum CarStatus { CarStatus(String label) { this.label = label; } + + public static CarStatus from(String value) { + if (value == null || value.isBlank()) + return null; + try { + return CarStatus.valueOf(value.toUpperCase()); + } catch (IllegalArgumentException e) { + return null; + } + } } diff --git a/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarType.java b/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarType.java index 83f7d7d4..5bf794e1 100644 --- a/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarType.java +++ b/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/CarType.java @@ -18,4 +18,15 @@ public enum CarType { CarType(String label) { this.label = label; } + + public static CarType from(String value) { + if (value == null || value.isBlank()) + return null; + try { + return CarType.valueOf(value.toUpperCase()); + } catch (IllegalArgumentException e) { + return null; + } + } + } diff --git a/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/RentStatus.java b/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/RentStatus.java index fe570589..ae33183c 100644 --- a/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/RentStatus.java +++ b/tracky-core/src/main/java/kernel360/trackycore/core/domain/entity/enums/RentStatus.java @@ -15,4 +15,14 @@ public enum RentStatus { RentStatus(String label) { this.label = label; } + + public static RentStatus from(String value) { + if (value == null || value.isBlank()) + return null; + try { + return RentStatus.valueOf(value.toUpperCase()); + } catch (IllegalArgumentException e) { + return null; + } + } } diff --git a/tracky-web/src/main/java/kernel360/trackyweb/car/application/CarService.java b/tracky-web/src/main/java/kernel360/trackyweb/car/application/CarService.java index ddf5f802..795d6fa9 100644 --- a/tracky-web/src/main/java/kernel360/trackyweb/car/application/CarService.java +++ b/tracky-web/src/main/java/kernel360/trackyweb/car/application/CarService.java @@ -63,8 +63,8 @@ public ApiResponse> getAllBySearchFilter(String bizUuid, Page cars = carDomainProvider.searchCarByFilter( bizUuid, carSearchByFilterRequest.search(), - carSearchByFilterRequest.status(), - carSearchByFilterRequest.carType(), + carSearchByFilterRequest.toCarStatus(), + carSearchByFilterRequest.toCarType(), carSearchByFilterRequest.toPageable()); Page carResponses = cars.map(CarResponse::from); diff --git a/tracky-web/src/main/java/kernel360/trackyweb/car/application/dto/request/CarSearchByFilterRequest.java b/tracky-web/src/main/java/kernel360/trackyweb/car/application/dto/request/CarSearchByFilterRequest.java index 3042d968..4a9f966a 100644 --- a/tracky-web/src/main/java/kernel360/trackyweb/car/application/dto/request/CarSearchByFilterRequest.java +++ b/tracky-web/src/main/java/kernel360/trackyweb/car/application/dto/request/CarSearchByFilterRequest.java @@ -8,8 +8,8 @@ public record CarSearchByFilterRequest( String search, - CarStatus status, - CarType carType, + String status, + String carType, Integer page, Integer size ) { @@ -18,4 +18,12 @@ public Pageable toPageable() { int safeSize = size != null ? size : 10; return PageRequest.of(safePage, safeSize); } + + public CarStatus toCarStatus() { + return CarStatus.from(status); + } + + public CarType toCarType() { + return CarType.from(carType); + } } diff --git a/tracky-web/src/main/java/kernel360/trackyweb/car/presentation/CarController.java b/tracky-web/src/main/java/kernel360/trackyweb/car/presentation/CarController.java index 8224e5f8..f0b7ec54 100644 --- a/tracky-web/src/main/java/kernel360/trackyweb/car/presentation/CarController.java +++ b/tracky-web/src/main/java/kernel360/trackyweb/car/presentation/CarController.java @@ -61,7 +61,7 @@ public ApiResponse searchOne( return carService.searchOne(mdn); } - @PostMapping("") + @PostMapping() public ApiResponse create( @RequestBody CarCreateRequest carCreateRequest, @Schema(hidden = true) @AuthenticationPrincipal MemberPrincipal memberPrincipal @@ -69,14 +69,14 @@ public ApiResponse create( return carService.create(memberPrincipal.bizUuid(), carCreateRequest); } - @PatchMapping("") + @PatchMapping() public ApiResponse update( @RequestBody CarUpdateRequest carUpdateRequest ) { return carService.update(carUpdateRequest); } - @DeleteMapping("") + @DeleteMapping() public ApiResponse delete( @RequestBody CarDeleteRequest carDeleteRequest ) { diff --git a/tracky-web/src/main/java/kernel360/trackyweb/rent/application/dto/request/RentSearchByFilterRequest.java b/tracky-web/src/main/java/kernel360/trackyweb/rent/application/dto/request/RentSearchByFilterRequest.java index e986ba2b..d8cfcee6 100644 --- a/tracky-web/src/main/java/kernel360/trackyweb/rent/application/dto/request/RentSearchByFilterRequest.java +++ b/tracky-web/src/main/java/kernel360/trackyweb/rent/application/dto/request/RentSearchByFilterRequest.java @@ -11,7 +11,7 @@ public record RentSearchByFilterRequest( String rentUuid, String search, - RentStatus status, + String status, @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate rentDate, Integer page, @@ -22,4 +22,9 @@ public Pageable toPageable() { int safeSize = size != null ? size : 10; return PageRequest.of(safePage, safeSize); } + + public RentStatus toRentStatus() { + return RentStatus.from(status); + } + } diff --git a/tracky-web/src/main/java/kernel360/trackyweb/rent/infrastructure/repository/RentRepositoryCustomImpl.java b/tracky-web/src/main/java/kernel360/trackyweb/rent/infrastructure/repository/RentRepositoryCustomImpl.java index 1bc1e39b..e3a815e0 100644 --- a/tracky-web/src/main/java/kernel360/trackyweb/rent/infrastructure/repository/RentRepositoryCustomImpl.java +++ b/tracky-web/src/main/java/kernel360/trackyweb/rent/infrastructure/repository/RentRepositoryCustomImpl.java @@ -1,6 +1,5 @@ package kernel360.trackyweb.rent.infrastructure.repository; -import static kernel360.trackycore.core.domain.entity.QCarEntity.*; import static kernel360.trackycore.core.domain.entity.QRentEntity.*; import java.time.LocalDate; @@ -71,9 +70,9 @@ public Page searchRentByFilter(RentSearchByFilterRequest request, St BooleanBuilder builder = new BooleanBuilder() .and(rentEntity.car.biz.bizUuid.eq(bizUuid)) .and(isContainsRentUuid(request.rentUuid())) - .and(isEqualRentStatus(request.status())) + .and(isEqualRentStatus(request.toRentStatus())) .and(isOverlapRentDate(request.rentDate())) - .and(isNotDeleted(request.status())); + .and(isNotDeleted(request.toRentStatus())); JPAQuery query = queryFactory .selectFrom(rentEntity) diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/application/ReservationService.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/application/ReservationService.java deleted file mode 100644 index c37903dd..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/application/ReservationService.java +++ /dev/null @@ -1,52 +0,0 @@ -package kernel360.trackyweb.reservation.application; - -import java.util.List; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import kernel360.trackycore.core.common.api.ApiResponse; -import kernel360.trackycore.core.domain.entity.CarEntity; -import kernel360.trackycore.core.domain.entity.DriveEntity; -import kernel360.trackycore.core.domain.entity.LocationEntity; -import kernel360.trackycore.core.domain.entity.RentEntity; -import kernel360.trackyweb.reservation.infrastructure.repo.ReservationDriveRepository; -import kernel360.trackyweb.reservation.infrastructure.repo.ReservationRentRepository; -import kernel360.trackyweb.reservation.presentation.dto.CarResponse; -import kernel360.trackyweb.reservation.presentation.dto.ReservationDrivingsResponse; -import kernel360.trackyweb.reservation.presentation.dto.ReservationResponse; -import kernel360.trackyweb.reservation.presentation.dto.ReservationWithCarResponse; -import lombok.RequiredArgsConstructor; - -@Service -@RequiredArgsConstructor -public class ReservationService { - - private final ReservationRentRepository rentRepository; - private final ReservationDriveRepository driveRepository; - - @Transactional(readOnly = true) - public ApiResponse searchRentWithCarByUuid(String uuid) { - RentEntity rentEntity = rentRepository.findByRentUuid(uuid); //렌트 테이블 매핑 - CarEntity carEntity = rentEntity.getCar(); //차량 테이블 매핑 - - ReservationResponse reservationDto = ReservationResponse.fromEntity(rentEntity); - CarResponse carDto = CarResponse.fromEntity(carEntity); - - return ApiResponse.success(ReservationWithCarResponse.of(reservationDto, carDto)); - } - - @Transactional(readOnly = true) - public ApiResponse> searchDrivingsByUuid(String uuid) { - List driveEntities = driveRepository.findAllByRent_RentUuid(uuid); - - List result = driveEntities.stream() - .map(drive -> { - LocationEntity location = drive.getLocation(); - return ReservationDrivingsResponse.fromEntity(drive, location); - }) - .toList(); - return ApiResponse.success(result); - } - -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/LocationDomainRepository.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/LocationDomainRepository.java deleted file mode 100644 index 73ef3a16..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/LocationDomainRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package kernel360.trackyweb.reservation.infrastructure.repo; - -import org.springframework.stereotype.Repository; - -import kernel360.trackycore.core.infrastructure.repository.LocationRepository; - -@Repository -public interface LocationDomainRepository extends LocationRepository { -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationCarRepository.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationCarRepository.java deleted file mode 100644 index 9b265059..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationCarRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package kernel360.trackyweb.reservation.infrastructure.repo; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import kernel360.trackycore.core.domain.entity.CarEntity; - -@Repository -public interface ReservationCarRepository extends JpaRepository { - -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationDriveRepository.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationDriveRepository.java deleted file mode 100644 index f76cbd8f..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationDriveRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package kernel360.trackyweb.reservation.infrastructure.repo; - -import java.util.List; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import kernel360.trackycore.core.domain.entity.DriveEntity; - -@Repository -public interface ReservationDriveRepository extends JpaRepository { - List findAllByRent_RentUuid(String uuid); -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationRentRepository.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationRentRepository.java deleted file mode 100644 index a22bd534..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/infrastructure/repo/ReservationRentRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package kernel360.trackyweb.reservation.infrastructure.repo; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import kernel360.trackycore.core.domain.entity.RentEntity; - -@Repository -public interface ReservationRentRepository extends JpaRepository { - RentEntity findByRentUuid(String rentUuid); -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/CarResponse.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/CarResponse.java deleted file mode 100644 index 75d04c5f..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/CarResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package kernel360.trackyweb.reservation.presentation.dto; - -import kernel360.trackycore.core.domain.entity.CarEntity; -import kernel360.trackycore.core.domain.entity.enums.CarStatus; -import kernel360.trackycore.core.domain.entity.enums.CarType; - -public record CarResponse( - String carPlate, //번호판 - CarType carType, //차종 - String carYear, //연식 - String purpose, //용도 - CarStatus status //상태 -) { - public static CarResponse fromEntity(CarEntity entity) { - return new CarResponse( - entity.getCarPlate(), - entity.getCarType(), - entity.getCarYear(), - entity.getPurpose(), - entity.getStatus() - ); - } -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationDrivingsResponse.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationDrivingsResponse.java deleted file mode 100644 index d7a9b8e1..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationDrivingsResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -package kernel360.trackyweb.reservation.presentation.dto; - -import java.time.LocalDateTime; - -import kernel360.trackycore.core.domain.entity.DriveEntity; -import kernel360.trackycore.core.domain.entity.LocationEntity; - -public record ReservationDrivingsResponse( - LocalDateTime driveOnTime, //주행 시작시간 - LocalDateTime driveOffTim, //주행 종료 시간 - Double driveDistance, //주행 별 거리 - int driveStartLon, //시작 위도 - int driveStartLat, //시작 경도 - int driveEndLon, //종료 위도 - int driveEndLat //종료 경도 - -) { - public static ReservationDrivingsResponse fromEntity(DriveEntity driveEntity, LocationEntity locationEntity) { - return new ReservationDrivingsResponse( - driveEntity.getDriveOnTime(), - driveEntity.getDriveOffTime(), - driveEntity.getDriveDistance(), - locationEntity.getDriveStartLon(), - locationEntity.getDriveStartLat(), - locationEntity.getDriveEndLon(), - locationEntity.getDriveEndLat() - ); - } -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationResponse.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationResponse.java deleted file mode 100644 index 000a6c23..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -package kernel360.trackyweb.reservation.presentation.dto; - -import java.time.LocalDateTime; - -import kernel360.trackycore.core.domain.entity.RentEntity; - -public record ReservationResponse( - String rentUuid, //예약 아이디 - String renterName, //예약자 명 - String renterPhone, //연락처 - String purpose, //목적 - LocalDateTime rentStime, //대여시간 - LocalDateTime rentEtime, //반납시간 - String rentLoc, //대여위치 - String returnLoc //반납위치 -) { - public static ReservationResponse fromEntity(RentEntity rentEntity) { - return new ReservationResponse( - rentEntity.getRentUuid(), - rentEntity.getRenterName(), - rentEntity.getRenterPhone(), - rentEntity.getPurpose(), - rentEntity.getRentStime(), - rentEntity.getRentEtime(), - rentEntity.getRentLoc(), - rentEntity.getReturnLoc() - ); - } - -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationWithCarResponse.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationWithCarResponse.java deleted file mode 100644 index b9c4d673..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/dto/ReservationWithCarResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package kernel360.trackyweb.reservation.presentation.dto; - -public record ReservationWithCarResponse( - ReservationResponse reservation, - CarResponse car -) { - public static ReservationWithCarResponse of( - ReservationResponse reservation, - CarResponse car - ) { - return new ReservationWithCarResponse(reservation, car); - } -} diff --git a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/rentUserController.java b/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/rentUserController.java deleted file mode 100644 index 411e7f73..00000000 --- a/tracky-web/src/main/java/kernel360/trackyweb/reservation/presentation/rentUserController.java +++ /dev/null @@ -1,33 +0,0 @@ -package kernel360.trackyweb.reservation.presentation; - -import java.util.List; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import kernel360.trackycore.core.common.api.ApiResponse; -import kernel360.trackyweb.reservation.application.ReservationService; -import kernel360.trackyweb.reservation.presentation.dto.ReservationDrivingsResponse; -import kernel360.trackyweb.reservation.presentation.dto.ReservationWithCarResponse; -import lombok.RequiredArgsConstructor; - -@RestController -@RequestMapping("/api/reservation") -@RequiredArgsConstructor -public class rentUserController { - - private final ReservationService reservationService; - - @GetMapping("/{uuid}") - public ApiResponse searchRentWithCarByUuid(@PathVariable String uuid) { - return reservationService.searchRentWithCarByUuid(uuid); - } - - @GetMapping("/{uuid}/drivings") - public ApiResponse> searchDrivingsByUuid(@PathVariable String uuid) { - return reservationService.searchDrivingsByUuid(uuid); - } - -}