🐛 fixed reservation service

This commit is contained in:
shinmj
2021-10-29 16:23:23 +09:00
parent fb1a95ebb1
commit 0fbecedef4
10 changed files with 126 additions and 28 deletions

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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);
}
/**