package com.ruoyi.dz.mapper;

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

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.dz.domain.DzClasses;
import org.apache.ibatis.annotations.Param;

/**
 * 学生班级Mapper接口
 *
 * @author ruoyi
 * @date 2025-09-29
 */
public interface DzClassesMapper
{
    List<JSONObject> selectClassesDirectedBuildStats(Map cond);
    List<JSONObject> selectClassesBuildStats(Map cond);
    List<JSONObject> getPaperStudentRecords(Map cond);
    List<JSONObject> selectClassesBuildStatsDetail(Map cond);

    public List<DzClasses> selectClassesByIds(@Param("ids") Collection<Long> ids);
    public List<DzClasses> selectClassesForTeacher(@Param("teacherId") Long teacherId);
    public List<DzClasses> selectDzClassesListBySchoolId(@Param("schoolId") Long schoolId);
    public List<DzClasses> selectDzClassesListByCampusId(@Param("campusId") Long campusId);
    public List<DzClasses> selectDzClassesBySchoolIds(@Param("schoolIds") Collection<Long> schoolIds);
    /**
     * 查询学生班级
     *
     * @param classId 学生班级主键
     * @return 学生班级
     */
    public DzClasses selectDzClassesByClassId(Long classId);

    /**
     * 查询学生班级列表
     *
     * @param dzClasses 学生班级
     * @return 学生班级集合
     */
    public List<DzClasses> selectDzClassesList(DzClasses dzClasses);

    /**
     * 新增学生班级
     *
     * @param dzClasses 学生班级
     * @return 结果
     */
    public int insertDzClasses(DzClasses dzClasses);

    /**
     * 修改学生班级
     *
     * @param dzClasses 学生班级
     * @return 结果
     */
    public int updateDzClasses(DzClasses dzClasses);

    /**
     * 删除学生班级
     *
     * @param classId 学生班级主键
     * @return 结果
     */
    public int deleteDzClassesByClassId(Long classId);

    /**
     * 批量删除学生班级
     *
     * @param classIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDzClassesByClassIds(Long[] classIds);

    /**
     * 校验班级名称在同一学校下是否唯一
     *
     * @param schoolId 学校ID
     * @param name 班级名称
     * @param classId 班级ID（修改时传入，新增时为null）
     * @return 结果（0表示唯一，大于0表示重复）
     */
    public int checkClassName(@Param("schoolId") Long schoolId, @Param("name") String name, @Param("classId") Long classId);
}
