package com.yida.data.mall.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yida.data.common.core.entity.mall.EduBill;
import com.yida.data.common.core.entity.user.EduStudent;
import com.yida.data.mall.dto.BillOrderSelectPageDTO;
import com.yida.data.mall.dto.BillSelectPageDTO;
import com.yida.data.mall.dto.h5.H5BillInfoDTO;
import com.yida.data.mall.dto.h5.H5BillSelectDTO;
import com.yida.data.mall.vo.BillOrderSelectPageVO;
import com.yida.data.mall.vo.BillSelectPageVO;
import com.yida.data.mall.vo.h5.H5BillSelectVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 缴费账单表 Mapper
 *
 * @author ZYJ
 * @date 2021-12-24 09:47:02
 */
public interface EduBillMapper extends BaseMapper<EduBill> {

    /**
     * 查询缴费账单列表数据
     *
     * @param page              分页信息
     * @param billSelectPageDTO 账单后台列表请求类
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.mall.vo.BillSelectPageVO>
     * @author ZYJ
     * @date 2021/12/24 11:27
     */
    IPage<BillSelectPageVO> listBillPage(Page<EduBill> page,
                                         @Param("dto") BillSelectPageDTO billSelectPageDTO);

    /**
     * 查询前台账单列表
     *
     * @param h5BillSelectDTO 账单前端列表请求类
     * @return java.util.List<com.yida.data.mall.vo.h5.H5BillSelectVO>
     * @author ZYJ
     * @date 2022/3/30 20:28
     */
    List<H5BillSelectVO> listH5Bill(@Param("dto") H5BillSelectDTO h5BillSelectDTO);

    /**
     * 查询前台账单详情
     *
     * @param h5BillInfoDTO 前端账单详情请求类
     * @return com.yida.data.mall.vo.h5.H5BillSelectVO
     * @author ZYJ
     * @date 2022/3/31 14:17
     */
    H5BillSelectVO getH5BillInfo(@Param("dto") H5BillInfoDTO h5BillInfoDTO);

    /**
     * 查询账单订单列表数据
     *
     * @param page        分页信息
     * @param dto         账单订单后台列表请求类
     * @param studentList 学生列表
     * @return java.util.List<com.yida.data.mall.vo.BillOrderSelectPageVO>
     * @author ZYJ
     * @date 2022/6/29 15:10
     */
    List<BillOrderSelectPageVO> listBillOrderPage(Page page,
                                                  @Param("dto") BillOrderSelectPageDTO dto,
                                                  @Param("studentList") List<EduStudent> studentList);

    /**
     * 查询已开始未结束的账单
     *
     * @return java.util.List<com.yida.data.common.core.entity.mall.EduBill>
     * @author ZYJ
     * @date 2022/7/28 17:31
     */
    List<EduBill> selectNeedStatisticsBill();

    /**
     * 查询已开始的账单
     *
     * @return java.util.List<com.yida.data.common.core.entity.mall.EduBill>
     * @author ZYJ
     * @date 2022/10/12 9:49
     */
    List<EduBill> selectStartBill();
}
