diff --git a/src/main/kotlin/upbrella/be/rent/dto/request/HistoryFilterRequest.kt b/src/main/kotlin/upbrella/be/rent/dto/request/HistoryFilterRequest.kt index 994208b1..b795d85c 100644 --- a/src/main/kotlin/upbrella/be/rent/dto/request/HistoryFilterRequest.kt +++ b/src/main/kotlin/upbrella/be/rent/dto/request/HistoryFilterRequest.kt @@ -1,5 +1,7 @@ package upbrella.be.rent.dto.request data class HistoryFilterRequest( - val refunded: Boolean? = null + val refunded: Boolean? = null, + val storeId: Long? = null, + val paid: Boolean? = null ) \ No newline at end of file diff --git a/src/main/kotlin/upbrella/be/rent/repository/RentRepositoryImpl.kt b/src/main/kotlin/upbrella/be/rent/repository/RentRepositoryImpl.kt index fd2dabc3..d6b121a9 100644 --- a/src/main/kotlin/upbrella/be/rent/repository/RentRepositoryImpl.kt +++ b/src/main/kotlin/upbrella/be/rent/repository/RentRepositoryImpl.kt @@ -23,7 +23,11 @@ class RentRepositoryImpl( .join(history.umbrella, umbrella).fetchJoin() .join(history.rentStoreMeta, storeMeta).fetchJoin() .leftJoin(history.returnStoreMeta, storeMeta).fetchJoin() - .where(filterRefunded(filter)) + .where( + filterRefunded(filter), + filterPaid(filter), + filterStore(filter) + ) .orderBy(history.id.desc()) .offset(pageable.offset) .limit(pageable.pageSize.toLong()) @@ -57,7 +61,11 @@ class RentRepositoryImpl( .join(history.umbrella, umbrella) .join(history.rentStoreMeta, storeMeta) .leftJoin(history.returnStoreMeta, storeMeta) - .where(filterRefunded(filter)) + .where( + filterRefunded(filter), + filterPaid(filter), + filterStore(filter) + ) .orderBy(history.id.desc()) .offset(pageable.offset) .limit(pageable.pageSize.toLong()) @@ -67,7 +75,11 @@ class RentRepositoryImpl( override fun countAll(filter: HistoryFilterRequest, pageable: Pageable): Long { return queryFactory .selectFrom(history) - .where(filterRefunded(filter)) + .where( + filterRefunded(filter), + filterPaid(filter), + filterStore(filter) + ) .fetch() .size.toLong() } @@ -96,4 +108,20 @@ class RentRepositoryImpl( return history.refundedAt.isNull } + + private fun filterPaid(filter: HistoryFilterRequest): BooleanExpression? { + if (filter.paid == null) { + return null + } + + return if (filter.paid == true) { + history.paidAt.isNotNull + } else { + history.paidAt.isNull + } + } + + private fun filterStore(filter: HistoryFilterRequest): BooleanExpression? { + return filter.storeId?.let { history.rentStoreMeta.id.eq(it) } + } }