🐛 fixed reservation service
This commit is contained in:
@@ -84,7 +84,8 @@ public class ReserveApiController {
|
||||
@PostMapping("/api/v1/requests")
|
||||
@ResponseStatus(HttpStatus.CREATED)
|
||||
public Mono<ReserveResponseDto> save(@RequestBody Mono<ReserveSaveRequestDto> saveRequestDtoMono) {
|
||||
return saveRequestDtoMono.flatMap(saveRequestDto -> {
|
||||
return saveRequestDtoMono
|
||||
.flatMap(saveRequestDto -> {
|
||||
if (Category.EDUCATION.isEquals(saveRequestDto.getCategoryId())) {
|
||||
return reserveService.saveForEvent(saveRequestDto);
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ public class ReserveRepositoryImpl implements ReserveRepositoryCustom {
|
||||
.matching(Query.query(where("reserve_item_id").is(reserveItemId)
|
||||
.and ("reserve_start_date").lessThanOrEquals(endDate)
|
||||
.and("reserve_end_date").greaterThanOrEquals(startDate)
|
||||
.and("reserve_status_id").not(ReserveStatus.CANCEL.getKey())
|
||||
))
|
||||
.count();
|
||||
}
|
||||
|
||||
@@ -278,20 +278,34 @@ public class ReserveService extends ReactiveAbstractService {
|
||||
}
|
||||
|
||||
long between = ChronoUnit.DAYS.between(startDate, endDate);
|
||||
|
||||
if (between == 0) {
|
||||
return reserveFlux.map(reserve -> {
|
||||
if (startDate.isAfter(reserve.getReserveStartDate())
|
||||
|| startDate.isBefore(reserve.getReserveEndDate())
|
||||
|| startDate.isEqual(reserve.getReserveStartDate()) || startDate.isEqual(reserve.getReserveEndDate())) {
|
||||
return reserve.getReserveQty();
|
||||
}
|
||||
return 0;
|
||||
}).reduce(0, (x1, x2) -> x1 + x2);
|
||||
}
|
||||
|
||||
return Flux.fromStream(IntStream.iterate(0, i -> i + 1)
|
||||
.limit(between)
|
||||
.mapToObj(i -> startDate.plusDays(i)))
|
||||
.flatMap(localDateTime ->
|
||||
reserveFlux.map(findReserve -> {
|
||||
if (localDateTime.isAfter(findReserve.getReserveStartDate())
|
||||
|| localDateTime.isBefore(findReserve.getReserveEndDate())) {
|
||||
|| localDateTime.isBefore(findReserve.getReserveEndDate())
|
||||
|| localDateTime.isEqual(findReserve.getReserveStartDate()) || localDateTime.isEqual(findReserve.getReserveEndDate())
|
||||
) {
|
||||
return findReserve.getReserveQty();
|
||||
}
|
||||
return 0;
|
||||
}).reduce(0, (x1, x2) -> x1 + x2))
|
||||
.groupBy(integer -> integer)
|
||||
.flatMap(group -> group.reduce((x1,x2) -> x1 > x2?x1:x2))
|
||||
.last();
|
||||
.last(0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.egovframe.cloud.reserverequestservice.api;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
|
||||
import org.egovframe.cloud.common.domain.Role;
|
||||
import org.egovframe.cloud.reserverequestservice.api.dto.ReserveResponseDto;
|
||||
|
||||
Reference in New Issue
Block a user