package com.ruoyi.ss.transfer.service;

import com.ruoyi.ss.transfer.domain.Transfer;
import com.ruoyi.ss.transfer.domain.TransferQuery;
import com.ruoyi.ss.transfer.domain.TransferVO;

import java.util.List;

/**
 * 转账Service接口
 *
 * @author ruoyi
 * @date 2024-08-09
 */
public interface TransferService
{
    /**
     * 查询转账
     *
     * @param batchId 转账主键
     * @return 转账
     */
    public TransferVO selectTransferByBatchId(Long batchId);

    /**
     * 查询转账列表
     *
     * @param transfer 转账
     * @return 转账集合
     */
    public List<TransferVO> selectTransferList(TransferQuery transfer);

    /**
     * 新增转账
     *
     * @param transfer 转账
     * @return 结果
     */
    public int insertTransfer(Transfer transfer);

    /**
     * 修改转账
     *
     * @param transfer 转账
     * @return 结果
     */
    public int updateTransfer(Transfer transfer);

    /**
     * 批量删除转账
     *
     * @param batchIds 需要删除的转账主键集合
     * @return 结果
     */
    public int deleteTransferByBatchIds(Long[] batchIds);

    /**
     * 删除转账信息
     *
     * @param batchId 转账主键
     * @return 结果
     */
    public int deleteTransferByBatchId(Long batchId);

    /**
     * 插入数据，包含明细
     */
    int insertWithDetail(TransferVO vo);

    /**
     * 发起转账
     * @param batchNo 批次单号
     * @return 是否发起成功
     */
    boolean requestTransfer(String batchNo);

    /**
     * 根据批次单号查询
     * @param batchNo
     */
    TransferVO selectByBatchNo(String batchNo);

    /**
     * 根据查询条件更新
     */
    int updateByQuery(Transfer data, TransferQuery query);

    /**
     * 刷新转账单状态
     */
    int refreshTransferStatus(TransferVO transfer);

    /**
     * 刷新转账状态
     */
    int refreshTransferStatus(Long batchId);
}
