package com.xinelu.manage.mapper.trainingorderitemdirectory;

import com.xinelu.manage.domain.trainingorderitemdirectory.TrainingOrderItemDirectory;
import com.xinelu.manage.vo.trainingorderitemdirectory.TrainingOrderItemDirectoryInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 学习培训订单明细章节，记录视频学习和直播课程的章节信息Mapper接口
 *
 * @author xinyilu
 * @date 2023-04-20
 */
public interface TrainingOrderItemDirectoryMapper {
    /**
     * 查询学习培训订单明细章节，记录视频学习和直播课程的章节信息
     *
     * @param id 学习培训订单明细章节，记录视频学习和直播课程的章节信息主键
     * @return 学习培训订单明细章节，记录视频学习和直播课程的章节信息
     */
    TrainingOrderItemDirectory selectTrainingOrderItemDirectoryById(Long id);

    /**
     * 查询学习培训订单明细章节，记录视频学习和直播课程的章节信息列表
     *
     * @param trainingOrderItemDirectory 学习培训订单明细章节，记录视频学习和直播课程的章节信息
     * @return 学习培训订单明细章节，记录视频学习和直播课程的章节信息集合
     */
    List<TrainingOrderItemDirectory> selectTrainingOrderItemDirectoryList(TrainingOrderItemDirectory trainingOrderItemDirectory);

    /**
     * 新增学习培训订单明细章节，记录视频学习和直播课程的章节信息
     *
     * @param trainingOrderItemDirectory 学习培训订单明细章节，记录视频学习和直播课程的章节信息
     * @return 结果
     */
    int insertTrainingOrderItemDirectory(TrainingOrderItemDirectory trainingOrderItemDirectory);

    /**
     * 修改学习培训订单明细章节，记录视频学习和直播课程的章节信息
     *
     * @param trainingOrderItemDirectory 学习培训订单明细章节，记录视频学习和直播课程的章节信息
     * @return 结果
     */
    int updateTrainingOrderItemDirectory(TrainingOrderItemDirectory trainingOrderItemDirectory);

    /**
     * 删除学习培训订单明细章节，记录视频学习和直播课程的章节信息
     *
     * @param id 学习培训订单明细章节，记录视频学习和直播课程的章节信息主键
     * @return 结果
     */
    int deleteTrainingOrderItemDirectoryById(Long id);

    /**
     * 批量删除学习培训订单明细章节，记录视频学习和直播课程的章节信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTrainingOrderItemDirectoryByIds(Long[] ids);

    /**
     * 批量新增学习培训订单明细章节，记录视频学习和直播课程的章节信息
     *
     * @param trainingOrderItemDirectoryList 学习培训订单明细章节信息集合，记录视频学习和直播课程的章节信息
     * @return int
     **/
    int insertTrainingOrderItemDirectoryList(List<TrainingOrderItemDirectory> trainingOrderItemDirectoryList);

    /**
     * 修改学习培训订单明细章节，记录视频学习和直播课程的章节信息
     *
     * @param trainingItemDirectoryId  培训项目章节表id
     * @param trainingOrderNo          订单编号
     * @param itemDirectoryWatchStatus 视频状态
     * @return int
     **/
    int updatePersonTrainingOrderItemDirectory(@Param("trainingItemDirectoryId") Long trainingItemDirectoryId, @Param("trainingOrderNo") String trainingOrderNo, @Param("itemDirectoryWatchStatus") String itemDirectoryWatchStatus);

    /**
     * 查询订单表章节是否购买过
     *
     * @param nurseStationPersonId        护理站人员id
     * @param trainingItemId              培训项目表id
     * @param trainingItemDirectoryIdList 培训项目章节表id集合
     * @param trainingOrderStatus         订单状态，待付款：WAIT_PAY，已付款：PAY，退款中：WAIT_REFUND，已退款：REFUNDED，已取消：CANCEL',
     * @return com.xinyilu.base.vo.trainingorderitemdirectory.TrainingOrderItemDirectoryInfoVO
     **/
    List<TrainingOrderItemDirectoryInfoVO> getTrainingOrderItemDirectoryList(@Param("nurseStationPersonId") Long nurseStationPersonId,
                                                                             @Param("trainingItemId") Long trainingItemId,
                                                                             @Param("trainingItemDirectoryIdList") List<Long> trainingItemDirectoryIdList,
                                                                             @Param("trainingOrderStatus") String trainingOrderStatus);
}