
package com.tmerclub.cloud.distribution.service;

import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.distribution.model.EnterprisePay;

import java.util.List;

/**
 * 商家转账
 *
 * @author tmerclub
 * @date 2023-02-22 15:58:50
 */
public interface EnterprisePayService {

    /**
     * 分页获取商家转账列表
     * @param pageDTO 分页参数
     * @return 商家转账列表分页数据
     */
    PageVO<EnterprisePay> page(PageDTO pageDTO);

    /**
     * 根据商家转账id获取商家转账
     *
     * @param entPayId 商家转账id
     * @return 商家转账
     */
    EnterprisePay getByEntPayId(Long entPayId);

    /**
     * 保存商家转账
     * @param enterprisePay 商家转账
     */
    void save(EnterprisePay enterprisePay);

    /**
     * 更新商家转账
     * @param enterprisePay 商家转账
     */
    void update(EnterprisePay enterprisePay);

    /**
     * 根据商家转账id删除商家转账
     * @param entPayId 商家转账id
     */
    void deleteById(Long entPayId);

    /**
     * 获取正在申请中的商家转账记录,最多一千条数据
     * @return 商家转账信息列表
     */
    List<EnterprisePay> listApplyEnterprisePay();

    /**
     * 商家批量转账
     * @param enterprisePayList 商家转账信息列表
     */
    void sendEnterprisePay(List<EnterprisePay> enterprisePayList);

    /**
     * 转账成功处理
     * @param enterprisePay 商家转账信息
     */
    void paySuccess(EnterprisePay enterprisePay);

    /**
     * 转账失败处理
     * @param enterprisePay 商家转账信息
     */
    void payFailed(EnterprisePay enterprisePay);

    /**
     * 发起转账后保存批次记录
     * @param enterprisePayList
     */
    void updateBatch(List<EnterprisePay> enterprisePayList);

    /**
     * 获取正在申请中的商家转账记
     * @return 商家转账信息列表
     */
    List<EnterprisePay> listEnterprisePay();
}
