package com.yn.bftl.thirdparty.modules.unionpay.repository;

import com.yn.bftl.common.modules.order.entity.TopUpOrder;
import com.yn.bftl.common.modules.order.enums.PayStatus;
import com.yn.bftl.common.modules.order.enums.SyncState;
import com.yn.bftl.common.modules.order.enums.TopUpOrderType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

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

/**
 * 充值订单Repository
 *
 * @author huabiao
 * @create 2023/3/7  14:40
 **/
@Repository
public interface TopUpOrderRepository extends JpaRepository<TopUpOrder, Long> {

    /**
     * 根据订单号查询
     *
     * @param sn
     * @return
     */
    TopUpOrder findBySn(String sn);

    /**
     * 根据转账订单号查询
     *
     * @param transferSn
     * @return
     */
    TopUpOrder findByTransferSn(String transferSn);

    /**
     * 根据订单类型、支付状态、同步状态以及支付时间小于查询，按支付时间升序排序（已退款的不查询）
     *
     * @param orderType
     * @param paymentStatus
     * @param syncState
     * @param dateTime
     * @return
     */
    List<TopUpOrder> findByOrderTypeAndPaymentStatusAndSyncStateInAndPayTimeLessThanAndRefundedIsFalseOrderByPayTime(
            TopUpOrderType orderType, PayStatus paymentStatus, List<SyncState> syncState, LocalDateTime dateTime);
}
