package com.qmth.teachcloud.common.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qmth.teachcloud.common.bean.params.BasicClazzParams;
import com.qmth.teachcloud.common.bean.result.BasicClazzResult;
import com.qmth.teachcloud.common.bean.result.ClazzDatasourceResult;
import com.qmth.teachcloud.common.entity.BasicClazz;
import com.qmth.teachcloud.common.entity.SysUser;
import org.springframework.util.LinkedMultiValueMap;

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

/**
 * @Description: 基础班级service
 * @Author: CaoZixuan
 * @Date: 2021-08-28
 */
public interface BasicClazzService extends IService<BasicClazz> {
    /**
     * 班级基础信息分页查询
     *
     * @param queryParams 查询参数（班级号或名称）
     * @param pageNumber  分页页码
     * @param pageSize    分页容量
     * @return 分页结果
     */
    IPage<BasicClazzResult> basicClazzPage(String queryParams, int pageNumber, int pageSize);

    /**
     * 新增/编辑 学生基础信息
     *
     * @param basicClazzParams 基础学生信息参数
     * @param sysUser          创建人信息
     * @return 新增或编辑的班级id
     */
    Long saveBasicClazz(BasicClazzParams basicClazzParams, SysUser sysUser) throws IllegalAccessException;

    /**
     * 批量删除班级基本信息（逻辑）
     *
     * @param idList 要删除的班级主键集合
     * @return 是否删除成功
     */
    Boolean removeBasicClazzBatch(List<Long> idList);

    /**
     * 执行批量导入班级逻辑
     *
     * @param finalList 基础班级数据集合
     * @param map       参数
     * @return 结果
     */
    Map<String, Object> executeBasicClazzImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws IllegalAccessException;

    /**
     * 查询班级下拉数据源
     *
     * @return 班级数据源
     */
    List<ClazzDatasourceResult> findClazzDatasource(Long campusId);
}
