package com.ruoyi.dz.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.criteria.CardCriteria;
import com.ruoyi.dz.domain.DzCards;
import com.ruoyi.dz.dto.CardStatisticsDTO;
import org.apache.ibatis.annotations.Param;

/**
 * 学习卡Mapper接口
 * 
 * @author ruoyi
 * @date 2025-09-12
 */
public interface DzCardsMapper 
{
    /**
     * 查询学习卡
     * 
     * @param cardId 学习卡主键
     * @return 学习卡
     */
    public DzCards selectDzCardsByCardId(Long cardId);

    /**
     * 查询学习卡列表
     * 
     * @param dzCards 学习卡
     * @return 学习卡集合
     */
    public List<DzCards> selectDzCardsList(DzCards dzCards);
    public List<DzCards> selectDzCardsList2(DzCards dzCards);
    public List<com.ruoyi.dz.dto.CardStudentDTO> selectDzCardsList3(DzCards dzCards);

    public DzCards selectOneECard();
    /**
     * 新增学习卡
     * 
     * @param dzCards 学习卡
     * @return 结果
     */
    public int insertDzCards(DzCards dzCards);

    /**
     * 修改学习卡
     * 
     * @param dzCards 学习卡
     * @return 结果
     */
    public int updateDzCards(DzCards dzCards);

    public int updateDzCardsWithAssign(DzCards dzCards);

    public int updateDzCardsByNo(DzCards dzCards);
    /**
     * 删除学习卡
     * 
     * @param cardId 学习卡主键
     * @return 结果
     */
    public int deleteDzCardsByCardId(Long cardId);

    /**
     * 批量删除学习卡
     * 
     * @param cardIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDzCardsByCardIds(Long[] cardIds);

    public List<DzCards> selectListByCond(CardCriteria cond);

    public List<DzCards> selectCardsByCardIds(Long[] cardIds);

    public Long selectMaxNo(@Param("type") Integer type);

    /**
     * 统计学习卡数据
     * 
     * @param params 查询参数（deptId, agentId, openTimeBegin, openTimeEnd）
     * @return 统计结果列表
     */
    public List<CardStatisticsDTO> statisticCards(Map<String, Object> params);
}
