Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import site.campingon.campingon.camp.dto.CampSiteListResponseDto;
import site.campingon.campingon.camp.dto.CampSiteResponseDto;
import site.campingon.campingon.camp.service.CampSiteReserveService;
import site.campingon.campingon.camp.service.CampSiteService;

import java.time.LocalDateTime;
import java.time.LocalDate;
import java.util.List;


Expand All @@ -27,11 +28,11 @@ public class CampSiteController {
@GetMapping("/{campId}/available")
public ResponseEntity<List<CampSiteListResponseDto>> getAvailableCampSites(@PathVariable("campId") Long campId,
@RequestParam(value = "checkin")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
LocalDateTime checkin,
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate checkin,
@RequestParam(value = "checkout")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
LocalDateTime checkout) {
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate checkout) {

return ResponseEntity.ok(campSiteReserveService.getAvailableCampSites(campId, checkin, checkout));
}
Expand All @@ -41,11 +42,11 @@ public ResponseEntity<List<CampSiteListResponseDto>> getAvailableCampSites(@Path
public ResponseEntity<CampSiteResponseDto> getCampSite(@PathVariable("campId") Long campId,
@PathVariable("siteId") Long siteId,
@RequestParam(value = "checkin")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
LocalDateTime checkin,
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate checkin,
@RequestParam(value = "checkout")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
LocalDateTime checkout) {
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate checkout) {

return ResponseEntity.ok(campSiteService.getCampSite(campId, siteId, checkin, checkout));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package site.campingon.campingon.camp.dto;


import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import site.campingon.campingon.camp.entity.Induty;

import java.time.LocalDateTime;
import java.time.LocalTime;

@ToString
@Getter
Expand All @@ -18,9 +17,12 @@ public class CampSiteListResponseDto {
private Integer price;
private Induty siteType;
private String indoorFacility;

@Builder.Default
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
private LocalDateTime checkinTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
private LocalDateTime checkoutTime;
private LocalTime checkinTime = LocalTime.of(15, 0);

@Builder.Default
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
private LocalTime checkoutTime = LocalTime.of(11, 0);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
import lombok.*;
import site.campingon.campingon.camp.entity.Induty;

import java.time.LocalTime;
import java.time.LocalDateTime;

@ToString
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CampSiteResponseDto {
Expand All @@ -17,10 +17,15 @@ public class CampSiteResponseDto {
private Integer price;
private Induty siteType;
private String indoorFacility;

@Builder.Default
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
private LocalDateTime checkinTime;
private LocalTime checkinTime = LocalTime.of(15, 0);

@Builder.Default
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
private LocalDateTime checkoutTime;
private LocalTime checkoutTime = LocalTime.of(11, 0);

CampSimpleDto campSimpleDto;

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import site.campingon.campingon.common.exception.GlobalException;

import java.time.LocalDateTime;
import java.time.LocalDate;
import java.util.List;
import java.util.stream.Collectors;

Expand All @@ -28,12 +29,16 @@ public class CampSiteReserveService {

// 캠핑장의 예약 가능한 SiteType 별 캠핑지 조회
@Transactional(readOnly = true)
public List<CampSiteListResponseDto> getAvailableCampSites(Long campId, LocalDateTime checkin, LocalDateTime checkout) {
public List<CampSiteListResponseDto> getAvailableCampSites(Long campId, LocalDate checkinDate, LocalDate checkoutDate) {

if (checkin == null || checkout == null) {
if (checkinDate == null || checkoutDate == null) {
throw new GlobalException(ErrorCode.REQUIRED_RESERVATION_DATE);
}

// LocalDate(JSON) -> LocalDateTime(DB)
LocalDateTime checkin = checkinDate.atTime(15, 0);
LocalDateTime checkout = checkoutDate.atTime(11, 0);

campRepository.findById(campId)
.orElseThrow(() -> new GlobalException(ErrorCode.CAMP_NOT_FOUND_BY_ID));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import site.campingon.campingon.common.exception.ErrorCode;
import site.campingon.campingon.common.exception.GlobalException;

import java.time.LocalDateTime;
import java.time.LocalDate;
import java.util.List;

@Service
Expand Down Expand Up @@ -84,7 +84,7 @@ public CampSiteResponseDto getCampSite(Long campId, Long siteId) {

// 예약가능한 특정 캠핑지 조회
@Transactional(readOnly = true)
public CampSiteResponseDto getCampSite(Long campId, Long siteId, LocalDateTime checkin, LocalDateTime checkout) {
public CampSiteResponseDto getCampSite(Long campId, Long siteId, LocalDate checkin, LocalDate checkout) {

if (checkin == null || checkout == null) {
throw new GlobalException(ErrorCode.REQUIRED_RESERVATION_DATE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Getter
Expand All @@ -15,11 +16,9 @@ public class ReservationCreateRequestDto {

private Long campSiteId;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
private LocalDateTime checkin;
private LocalDate checkin;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
private LocalDateTime checkout;
private LocalDate checkout;

private int guestCnt;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package site.campingon.campingon.reservation.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import site.campingon.campingon.reservation.entity.ReservationStatus;

Expand All @@ -14,8 +15,10 @@ public class ReservationResponseDto {

private Long id;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime checkin;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime checkout;

private int guestCnt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import site.campingon.campingon.review.entity.Review;
import site.campingon.campingon.user.entity.User;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

@Entity
Expand Down Expand Up @@ -62,9 +64,20 @@ public void cancel(String reason) {
this.cancelReason = reason;
}

public void setDefaultCheckTime(LocalDateTime checkinDate, LocalDateTime checkoutDate) {
this.checkin = checkinDate.withHour(15).truncatedTo(ChronoUnit.HOURS);
this.checkout = checkoutDate.withHour(11).truncatedTo(ChronoUnit.HOURS);
// 체크인 체크아웃 시간 고정 설정
public void setDefaultCheckTime(LocalDateTime checkin, LocalDateTime checkout) {
this.checkin = checkin.withHour(15).truncatedTo(ChronoUnit.HOURS);
this.checkout = checkout.withHour(11).truncatedTo(ChronoUnit.HOURS);
}


// json 반환 시 파싱해서 반환
public String[] parseDateTime(LocalDateTime checkin, LocalDateTime checkout) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
return new String[] {
checkin.format(formatter),
checkout.format(formatter)
};
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import site.campingon.campingon.reservation.utils.ReservationValidate;
import site.campingon.campingon.user.entity.User;

import java.time.LocalDateTime;

@Service
@RequiredArgsConstructor
public class ReservationServiceImpl implements ReservationService {
Expand Down Expand Up @@ -67,16 +69,20 @@ public void createReservation(Long userId, ReservationCreateRequestDto requestDt

Camp camp = reservationValidate.validateCampById(requestDto.getCampId());

// LocalDate(JSON) -> LocalDateTime(DB)
LocalDateTime checkin = requestDto.getCheckin().atTime(15, 0);
LocalDateTime checkout = requestDto.getCheckout().atTime(11, 0);

Reservation reservation = reservationMapper.toEntity(requestDto)
.toBuilder()
.user(user)
.camp(camp)
.campSite(campSite)
.checkin(checkin)
.checkout(checkout)
.status(ReservationStatus.RESERVED)
.build();

reservation.setDefaultCheckTime(requestDto.getCheckin(), requestDto.getCheckout());

reservationRepository.save(reservation);
}

Expand Down
Loading