From a71803ca10a803d92d72790beb2468deceded602 Mon Sep 17 00:00:00 2001 From: psyeon1120 Date: Thu, 31 Aug 2023 01:49:25 +0900 Subject: [PATCH] =?UTF-8?q?#161=20hotfix:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20?= =?UTF-8?q?jpa=20=EC=BF=BC=EB=A6=AC=20->=20queryDSL=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../psr/psr/order/repository/OrderCustom.kt | 8 ++++++ .../psr/order/repository/OrderRepository.kt | 4 +-- .../order/repository/OrderRepositoryImpl.kt | 28 +++++++++++++++++++ .../com/psr/psr/order/service/OrderService.kt | 12 ++------ 4 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 src/main/kotlin/com/psr/psr/order/repository/OrderCustom.kt create mode 100644 src/main/kotlin/com/psr/psr/order/repository/OrderRepositoryImpl.kt diff --git a/src/main/kotlin/com/psr/psr/order/repository/OrderCustom.kt b/src/main/kotlin/com/psr/psr/order/repository/OrderCustom.kt new file mode 100644 index 0000000..17c24b6 --- /dev/null +++ b/src/main/kotlin/com/psr/psr/order/repository/OrderCustom.kt @@ -0,0 +1,8 @@ +package com.psr.psr.order.repository + +import com.psr.psr.order.entity.Order +import com.psr.psr.order.entity.OrderStatus + +interface OrderCustom { + fun find2MonthAgoOrders(orderStatus: OrderStatus): List +} \ No newline at end of file diff --git a/src/main/kotlin/com/psr/psr/order/repository/OrderRepository.kt b/src/main/kotlin/com/psr/psr/order/repository/OrderRepository.kt index 7950455..18b219e 100644 --- a/src/main/kotlin/com/psr/psr/order/repository/OrderRepository.kt +++ b/src/main/kotlin/com/psr/psr/order/repository/OrderRepository.kt @@ -7,15 +7,13 @@ import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository -import java.time.LocalDate @Repository -interface OrderRepository: JpaRepository { +interface OrderRepository: JpaRepository, OrderCustom { fun findByIdAndStatus(orderId: Long, status: String): Order? fun findByUserAndOrderStatusAndStatus(orderer: User, orderStatus: OrderStatus, status: String, pageable: Pageable): Page fun findByProductUserAndOrderStatusAndStatus(seller: User, orderStatus: OrderStatus, status: String, pageable: Pageable): Page fun findByUserAndStatus(orderer: User, status: String, pageable: Pageable): Page fun findByProductUserAndStatus(seller: User, status: String, pageable: Pageable): Page fun deleteByUser(user: User) - fun findByCreatedAt_DateAndOrderStatusAndStatus(date: LocalDate, orderStatus: OrderStatus, status: String): List } \ No newline at end of file diff --git a/src/main/kotlin/com/psr/psr/order/repository/OrderRepositoryImpl.kt b/src/main/kotlin/com/psr/psr/order/repository/OrderRepositoryImpl.kt new file mode 100644 index 0000000..a06e3a7 --- /dev/null +++ b/src/main/kotlin/com/psr/psr/order/repository/OrderRepositoryImpl.kt @@ -0,0 +1,28 @@ +package com.psr.psr.order.repository + +import com.psr.psr.global.Constant.UserStatus.UserStatus.ACTIVE_STATUS +import com.psr.psr.order.entity.Order +import com.psr.psr.order.entity.OrderStatus +import com.psr.psr.order.entity.QOrder.order +import com.querydsl.core.types.dsl.Expressions +import com.querydsl.jpa.impl.JPAQueryFactory +import org.springframework.stereotype.Component + +import java.time.LocalDate + +@Component +class OrderRepositoryImpl( + private val queryFactory: JPAQueryFactory +): OrderCustom { + override fun find2MonthAgoOrders(orderStatus: OrderStatus): List { + val dateTemplate = Expressions.dateTemplate(LocalDate::class.java, "date({0})", order.createdAt) + val date = LocalDate.now().minusMonths(2) + return queryFactory + .selectFrom(order) + .where(dateTemplate.eq(date) + .and(order.orderStatus.eq(orderStatus)) + .and(order.status.eq(ACTIVE_STATUS))) + .fetch() + } + +} \ No newline at end of file diff --git a/src/main/kotlin/com/psr/psr/order/service/OrderService.kt b/src/main/kotlin/com/psr/psr/order/service/OrderService.kt index 8bbdf72..f020b46 100644 --- a/src/main/kotlin/com/psr/psr/order/service/OrderService.kt +++ b/src/main/kotlin/com/psr/psr/order/service/OrderService.kt @@ -86,11 +86,7 @@ class OrderService( @Scheduled(cron = "0 0 13 * * ?", zone = "Asia/Seoul") fun notify2MonthOrders() { // 진행 중인 요청 - orderRepository.findByCreatedAt_DateAndOrderStatusAndStatus( - LocalDate.now(), - OrderStatus.PROGRESSING, - ACTIVE_STATUS - ) + orderRepository.find2MonthAgoOrders(OrderStatus.PROGRESSING) .forEach { notificationService.send2MonthOrderNoti( it.product.name, @@ -101,11 +97,7 @@ class OrderService( } // 대기중인 요청 - orderRepository.findByCreatedAt_DateAndOrderStatusAndStatus( - LocalDate.now(), - OrderStatus.ORDER_WAITING, - ACTIVE_STATUS - ) + orderRepository.find2MonthAgoOrders(OrderStatus.ORDER_WAITING) .forEach { notificationService.send2MonthOrderNoti( it.product.name,