package org.dromara.pay.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.pay.domain.bo.PayRefundBo;
import org.dromara.pay.domain.vo.PayRefundVo;
import java.util.Collection;
import java.util.List;

/**
 * 退款订单Service接口
 *
 * @author pengles
 */
public interface PayRefundService {

    /**
     * 查询退款订单
     */
    PayRefundVo queryById(Long id);

    /**
     * 查询退款订单列表
     */
    TableDataInfo<PayRefundVo> queryPageList(PayRefundBo bo, PageQuery pageQuery);

    /**
     * 查询退款订单列表
     */
    List<PayRefundVo> queryList(PayRefundBo bo);

    /**
     * 新增退款订单
     */
    Boolean insertByBo(PayRefundBo bo);

    /**
     * 修改退款订单
     */
    Boolean updateByBo(PayRefundBo bo);

    /**
     * 校验并批量删除退款订单信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
    
    /**
     * 创建并执行退款
     */
    Boolean createRefund(PayRefundBo bo);

    /**
     * 处理退款回调成功
     */
    void notifyRefundSuccess(String refundNo, String channelRefundNo);
}
