package com.sonic.lion.service;

import com.sonic.common.rpc.Page;
import com.sonic.lion.domain.entity.AppleRefundRecord;
import com.sonic.lion.domain.entity.PayCallChannelRecord;
import com.sonic.lion.domain.entity.PayTrade;
import com.sonic.lion.domain.entity.ProcessingDispute;
import com.sonic.lion.domain.req.RefundQueryReq;

import java.time.LocalDateTime;

/**
 * 退款 服务
 * 主动查询退款 并记录
 */
public interface RefundService {

    /**
     * 拉取第三方 的争议数据 并写入 apple_refund_record 表中
     * @param startTime
     */
    void pull(LocalDateTime startTime);

    /**
     * 分页查询 退款的列表数据
     * @param refundQueryReq
     * @return
     */
    Page<AppleRefundRecord> list(RefundQueryReq refundQueryReq);

    /**
     * 已废弃
     * @param recordId
     */
    @Deprecated
    void paypalRefundByRecordId(Long recordId);

    /**
     * 尝试退款
     * @param payTrade
     * @param payCallChannelRecord
     */
    void tryRefund(PayTrade payTrade, PayCallChannelRecord payCallChannelRecord);

    /**
     * 扫描PayPal争议找不到渠道调用记录的数据 并写入apple_refund_record表中
     * 【在渠道表中找不到调用记录的数据会写到 t_processing_dispute 表中被定时扫描到】
     * @param processingDispute
     * @return
     */
    boolean processingDisupte(ProcessingDispute processingDispute);

}
