package com.yiqi.recharge.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yiqi.recharge.domain.RechargeCardBatchRecord;
import com.yiqi.recharge.domain.dto.RechargeBatchCardDetailListQueryDTO;
import com.yiqi.recharge.domain.dto.RechargeBatchCommonCardAddDTO;
import com.yiqi.recharge.domain.dto.RechargeBatchDirectCardAddDTO;
import com.yiqi.recharge.domain.dto.RechargeBatchUseRecordListQueryDTO;
import com.yiqi.recharge.domain.vo.RechargeBatchCardDetailListQueryVO;
import com.yiqi.recharge.domain.vo.RechargeBatchUseRecordListQueryVO;

import java.util.List;

/**
 * @author xiaohei
 * @date 2024/1/6
 */
public interface IRechargeCardBatchRecordService extends IService<RechargeCardBatchRecord> {

    /**
     * 同批次充值卡的消费记录列表
     * @param rechargeBatchUseRecordListQueryDTO
     * @return
     */
    public List<RechargeBatchUseRecordListQueryVO> listCardUseRecordByBatchNo(RechargeBatchUseRecordListQueryDTO rechargeBatchUseRecordListQueryDTO);

    /**
     * 同批次充值卡的消费记录列表总数
     * @param rechargeBatchUseRecordListQueryDTO
     * @return
     */
    public int countCardUseRecordByBatchNo(RechargeBatchUseRecordListQueryDTO rechargeBatchUseRecordListQueryDTO);

    /**
     * 同批次充值卡明细列表
     * @param rechargeBatchCardDetailListQueryDTO
     * @return
     */
    public List<RechargeBatchCardDetailListQueryVO> listCardDetailByBatchNo(RechargeBatchCardDetailListQueryDTO rechargeBatchCardDetailListQueryDTO);

    /**
     * 同批次充值卡明细列表总数
     * @param rechargeBatchCardDetailListQueryDTO
     * @return
     */
    public int countCardDetailByBatchNo(RechargeBatchCardDetailListQueryDTO rechargeBatchCardDetailListQueryDTO);

    /**
     * 批次号明细详情-充值卡删除
     * @param rechargeCardId
     */
    void deleteCardByCardId(Long rechargeCardId);

    /**
     * 批次号直充-充值卡新增
     * @param rechargeBatchDirectCardAddDTO
     */
    void addOneCardByDirect(RechargeBatchDirectCardAddDTO rechargeBatchDirectCardAddDTO, RechargeCardBatchRecord rechargeCardBatchRecord);

    /**
     * 批次号普通导入-充值卡新增
     * @param rechargeBatchCommonCardAddDTO
     */
    void addOneCardByCommon(RechargeBatchCommonCardAddDTO rechargeBatchCommonCardAddDTO, RechargeCardBatchRecord rechargeCardBatchRecord);
}
