Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

Commit

Permalink
refactor: [#82] Rental Domain 코틀린 변환
Browse files Browse the repository at this point in the history
  • Loading branch information
Habist committed Jul 24, 2021
1 parent ad0e04e commit b51b43c
Show file tree
Hide file tree
Showing 11 changed files with 203 additions and 378 deletions.
93 changes: 38 additions & 55 deletions src/main/java/com/campool/controller/RentalController.kt
Original file line number Diff line number Diff line change
@@ -1,80 +1,63 @@
package com.campool.controller;
package com.campool.controller

import com.campool.service.RentalService
import com.campool.service.BookingService
import com.campool.annotation.LoginValidation
import javax.validation.Valid
import com.campool.model.RentalRegisterRequest
import com.campool.model.CampingGear
import com.campool.annotation.LoginUserId
import com.campool.model.RentalsRequestByLocation
import com.campool.model.Rental
import com.campool.model.RentalDetailsResponse
import org.springframework.transaction.annotation.Transactional
import com.campool.model.RentalCompleteRequest
import org.springframework.web.bind.annotation.*

import com.campool.annotation.LoginUserId;
import com.campool.annotation.LoginValidation;
import com.campool.model.BookingInfo;
import com.campool.model.CampingGear;
import com.campool.model.Rental;
import com.campool.model.RentalCompleteRequest;
import com.campool.model.RentalDetailsResponse;
import com.campool.model.RentalInfo;
import com.campool.model.RentalRegisterRequest;
import com.campool.model.RentalsRequestByLocation;
import com.campool.service.BookingService;
import com.campool.service.RentalService;
import java.util.List;
import javax.validation.Valid;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RequiredArgsConstructor
@RestController
public class RentalController {

@NonNull
private final RentalService rentalService;

@NonNull
private final BookingService bookingService;

class RentalController(
private val rentalService: RentalService,
private val bookingService: BookingService
) {
@LoginValidation
@PostMapping("/rentals")
public void registerRental(@Valid RentalRegisterRequest rentalRegisterRequest,
@RequestBody List<CampingGear> gears, @LoginUserId String id) {
rentalService.register(id, rentalRegisterRequest, gears);
fun registerRental(
@Valid request: RentalRegisterRequest,
@RequestBody gears: List<CampingGear>, @LoginUserId id: String
) {
rentalService.register(id, request, gears)
}

@LoginValidation
@GetMapping("/rentals")
public List<Rental> getRentalsByLocation(
@Valid RentalsRequestByLocation rentalsRequestByLocation) {
return rentalService.getRentalsByLocation(rentalsRequestByLocation);
}
fun getRentalsByLocation(@Valid request: RentalsRequestByLocation): List<Rental> =
rentalService.getRentalsByLocation(request)

@LoginValidation
@GetMapping("/rentals/{id}")
public RentalDetailsResponse getRentalInfoById(@PathVariable long id) {
RentalInfo rentalInfo = rentalService.getRentalById(id);
List<CampingGear> gears = rentalService.getGearsByRentalId(id);
return new RentalDetailsResponse(rentalInfo, gears);
fun getRentalInfoById(@PathVariable id: Long): RentalDetailsResponse {
val rentalInfo = rentalService.getRentalById(id)
val gears = rentalService.getGearsByRentalId(id)
return RentalDetailsResponse(rentalInfo, gears)
}

@LoginValidation
@PatchMapping("/rentals/{rentalId}/rent")
public void rentCampingGears(@PathVariable long rentalId, @LoginUserId String userId) {
rentalService.updateStatusToRented(rentalId, userId);
fun rentCampingGears(@PathVariable rentalId: Long, @LoginUserId userId: String) {
rentalService.updateStatusToRented(rentalId, userId)
}

@LoginValidation
@PostMapping("/rentals/complete")
@Transactional
public void completeRental(@Valid RentalCompleteRequest request, @LoginUserId String userId) {
BookingInfo bookingInfo = bookingService.getBookingInfoById(request.getBookingId());
rentalService.completeRental(request.getRentalId(), bookingInfo, userId);
fun completeRental(@Valid request: RentalCompleteRequest, @LoginUserId userId: String) {
val bookingInfo = bookingService.getBookingInfoById(request.bookingId)
rentalService.completeRental(request.rentalId, bookingInfo, userId)
}

@LoginValidation
@DeleteMapping("/rentals/{rentalId}")
public void deleteRental(@PathVariable long rentalId, @LoginUserId String userId) {
rentalService.deleteRental(rentalId, userId);
fun deleteRental(@PathVariable rentalId: Long, @LoginUserId userId: String) {
rentalService.deleteRental(rentalId, userId)
}

}
}
12 changes: 3 additions & 9 deletions src/main/java/com/campool/enumeration/RentalStatus.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
package com.campool.enumeration;
package com.campool.enumeration

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@Getter
public enum RentalStatus {
enum class RentalStatus(val message: String) {
TRADEABLE("거래 가능"),
TRADING("거래 중"),
RENTED("대여 중"),
TRADE_COMPLETED("거래 완료");
private final String message;
}
}
44 changes: 20 additions & 24 deletions src/main/java/com/campool/mapper/RentalMapper.kt
Original file line number Diff line number Diff line change
@@ -1,33 +1,29 @@
package com.campool.mapper;

import com.campool.enumeration.RentalStatus;
import com.campool.model.CampingGear;
import com.campool.model.Rental;
import com.campool.model.RentalInfo;
import com.campool.model.RentalRegisterRequest;
import com.campool.model.RentalsRequestByLocation;
import java.time.LocalDate;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
package com.campool.mapper

@Mapper
public interface RentalMapper {

void insertRental(String userId, RentalRegisterRequest rental, RentalStatus status);
import com.campool.model.RentalRegisterRequest
import com.campool.enumeration.RentalStatus
import com.campool.model.CampingGear
import com.campool.model.RentalInfo
import com.campool.model.RentalsRequestByLocation
import com.campool.model.Rental
import org.apache.ibatis.annotations.Mapper
import java.time.LocalDate

void insertGears(List<CampingGear> gears);
@Mapper
interface RentalMapper {
fun insertRental(userId: String, rental: RentalRegisterRequest, status: RentalStatus)

RentalInfo findRentalInfoById(long id);
fun insertGears(gears: List<CampingGear>)

List<CampingGear> findGearsByRentalId(long rentalId);
fun findRentalInfoById(id: Long): RentalInfo?

List<Rental> findRentalsByLocation(RentalsRequestByLocation rental, RentalStatus status,
String polygon);
fun findGearsByRentalId(rentalId: Long): List<CampingGear>

Integer findCostByIdAndDate(long id, LocalDate startDate, LocalDate endDate);
fun findRentalsByLocation(rental: RentalsRequestByLocation, status: RentalStatus, polygon: String): List<Rental>

void updateStatusById(long id, RentalStatus status);
fun findCostByIdAndDate(id: Long, startDate: LocalDate, endDate: LocalDate): Int?

void deleteById(long id);
fun updateStatusById(id: Long, status: RentalStatus)

}
fun deleteById(id: Long)
}
63 changes: 21 additions & 42 deletions src/main/java/com/campool/model/BookingInfo.kt
Original file line number Diff line number Diff line change
@@ -1,42 +1,21 @@
package com.campool.model;

import com.campool.enumeration.RentalStatus;
import java.time.LocalDate;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

@Getter
@RequiredArgsConstructor
@ToString
public class BookingInfo {

private final long bookingId;

private final LocalDate startDate;

private final LocalDate endDate;

private final int amount;

private final long rentalId;

private final String title;

private final String description;

private final RentalStatus rentalStatus;

private final double longitude;

private final double latitude;

private final String userId;

private final String name;

private final String email;

private final String telephone;

}
package com.campool.model

import java.time.LocalDate
import com.campool.enumeration.RentalStatus

data class BookingInfo(
val bookingId: Long,
val startDate: LocalDate,
val endDate: LocalDate,
val amount: Int,
val rentalId: Long,
val title: String,
val description: String,
val rentalStatus: RentalStatus,
val longitude: Double,
val latitude: Double,
val userId: String,
val name: String,
val email: String,
val telephone: String
)
43 changes: 14 additions & 29 deletions src/main/java/com/campool/model/Rental.kt
Original file line number Diff line number Diff line change
@@ -1,29 +1,14 @@
package com.campool.model;

import java.time.LocalDate;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

@Getter
@RequiredArgsConstructor
@ToString
public class Rental {

private final int rentalId;

private final String title;

private final String userId;

private final LocalDate startDate;

private final LocalDate endDate;

private final int cost;

private final double longitude;

private final double latitude;

}
package com.campool.model

import java.time.LocalDate

data class Rental(
val rentalId: Int,
val title: String,
val userId: String,
val startDate: LocalDate,
val endDate: LocalDate,
val cost: Int,
val longitude: Double,
val latitude: Double
)
23 changes: 5 additions & 18 deletions src/main/java/com/campool/model/RentalCompleteRequest.kt
Original file line number Diff line number Diff line change
@@ -1,19 +1,6 @@
package com.campool.model;
package com.campool.model

import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

@Getter
@RequiredArgsConstructor
@ToString
public class RentalCompleteRequest {

@NonNull
private final long rentalId;

@NonNull
private final long bookingId;

}
class RentalCompleteRequest(
val rentalId: Long,
val bookingId: Long
)
22 changes: 5 additions & 17 deletions src/main/java/com/campool/model/RentalDetailsResponse.kt
Original file line number Diff line number Diff line change
@@ -1,18 +1,6 @@
package com.campool.model;
package com.campool.model


import java.util.List;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

@Getter
@RequiredArgsConstructor
@ToString
public class RentalDetailsResponse {

private final RentalInfo rentalInfo;

private final List<CampingGear> gears;

}
class RentalDetailsResponse(
val rentalInfo: RentalInfo,
val gears: List<CampingGear>
)
Loading

0 comments on commit b51b43c

Please sign in to comment.