package com.jsowell.pile.mapper;

import com.jsowell.pile.domain.ClearingBillInfo;
import com.jsowell.pile.dto.GetClearingBillDTO;
import com.jsowell.pile.vo.web.MerchantClearingBillVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ClearingBillInfoMapper {
    /**
     * delete by primary key
     *
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
    int insert(ClearingBillInfo record);

    int insertOrUpdate(ClearingBillInfo record);

    int insertOrUpdateSelective(ClearingBillInfo record);

    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
    int insertSelective(ClearingBillInfo record);

    /**
     * select by primary key
     *
     * @param id primary key
     * @return object by primary key
     */
    ClearingBillInfo selectByPrimaryKey(Integer id);

    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(ClearingBillInfo record);

    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(ClearingBillInfo record);

    int updateBatch(List<ClearingBillInfo> list);

    int updateBatchSelective(List<ClearingBillInfo> list);

    int batchInsert(@Param("list") List<ClearingBillInfo> list);

    List<ClearingBillInfo> selectByMerchantId(@Param("merchantId") String merchantId, @Param("billStatus") String billStatus, @Param("tradeDate") String tradeDate);

    void updateStatus(@Param("clearingBillIds") List<Integer> clearingBillIds, @Param("billStatus") String billStatus, @Param("withdrawCode") String withdrawCode);

    /**
     * 后管用 查询运营商账单列表
     *
     * @param dto
     * @return
     */
    List<MerchantClearingBillVO> getMerchantClearingBillList(GetClearingBillDTO dto);

    List<ClearingBillInfo> selectByWithdrawCode(@Param("withdrawCode") String withdrawCode);
}