
package com.tmerclub.cloud.distribution.mapper;

import com.tmerclub.cloud.distribution.model.EnterprisePay;
import org.apache.ibatis.annotations.Param;

import java.util.List;

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

    /**
     * 获取商家转账列表
     *
     * @return 商家转账列表
     */
    List<EnterprisePay> list();

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

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

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

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

    /**
     * 批量获取商家转账信息列表,最多一千条
     *
     * @return 商家转账信息列表
     */
    List<EnterprisePay> listApplyEnterprisePay();

    /**
     * 批量获取商家转账信息列表
     *
     * @return 商家转账信息列表
     */
    List<EnterprisePay> listEnterprisePay();

    /**
     * 支付成功后根据商家转账订单号更新商家转账信息的状态为已完成
     *
     * @param entPayOrderNo 商家转账订单号
     * @param version       版本号
     * @return 成功更新条数
     */
    int paySuccess(@Param("entPayOrderNo") Long entPayOrderNo, @Param("version") Integer version);

    /**
     * 支付失败后根据商家转账订单号更新商家转账信息的状态为已失败
     *
     * @param entPayOrderNo 商家转账订单号
     * @param version       版本号
     * @return 成功更新条数
     */
    int payFailed(@Param("entPayOrderNo") Long entPayOrderNo, @Param("version") Integer version);

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