package com.yida.data.mall.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yida.data.common.core.entity.mall.EduBillStudent;
import com.yida.data.mall.dto.BillStudentSelectPageDTO;
import com.yida.data.mall.dto.BillUserSaveDTO;
import com.yida.data.mall.vo.BillStudentInfoVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 缴费单缴费学生 Service接口
 *
 * @author ZYJ
 * @date 2021-12-30
 */
public interface EduBillStudentService extends IService<EduBillStudent> {

    /**
     * 查询账单人员分页列表
     *
     * @param dto 账单人员后台列表请求类
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.mall.vo.BillStudentInfoVO>
     * @author ZYJ
     * @date 2022/3/29 15:29
     */
    IPage<BillStudentInfoVO> listBillUserPage(BillStudentSelectPageDTO dto);

    /**
     * 查询账单人员列表
     *
     * @param billId 账单id
     * @return java.util.List<com.yida.data.mall.vo.BillStudentInfoVO>
     * @author ZYJ
     * @date 2022/3/30 15:01
     */
    List<BillStudentInfoVO> listBillUser(Long billId);

    /**
     * 添加缴费单人员
     *
     * @param billUserSaveDTO 添加缴费单人员请求类
     * @author ZYJ
     * @date 2022/3/30 16:11
     */
    void saveBillUser(BillUserSaveDTO billUserSaveDTO);

    /**
     * 删除账单人员
     *
     * @param billStudentId 账单人员id
     * @param studentId     学生id
     * @param billId        账单id
     * @author ZYJ
     * @date 2022/3/30 16:41
     */
    void deleteBillUser(Long billStudentId, Long studentId, Long billId);

    /**
     * 查询账单人员缴费明细
     *
     * @param billStudentSelectPageDTO 账单人员后台列表请求类
     * @return com.baomidou.mybatisplus.core.metadata.IPage<java.util.Map < java.lang.String, java.lang.String>>
     * @author ZYJ
     * @date 2022/4/2 15:34
     */
    IPage<Map<String, String>> listBillPayDetailPage(BillStudentSelectPageDTO billStudentSelectPageDTO);

    /**
     * 导出缴费明细数据
     *
     * @param billStudentSelectPageDTO 账单人员后台列表请求类
     * @param response                 response
     * @return java.lang.String
     * @author ZYJ
     * @date 2022/10/11 17:29
     */
    String exportBillPayData(BillStudentSelectPageDTO billStudentSelectPageDTO, HttpServletResponse response);
}
