package com.ruoyi.hezhi.service;

import com.ruoyi.hezhi.domain.TbMajorClass;

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

/**
 * 专业分类Service接口
 *
 * @author ruoyi
 * @date 2024-10-16
 */
public interface ITbMajorClassService
{
    /**
     * 查询专业分类
     *
     * @param majorId 专业分类主键
     * @return 专业分类
     */
    public TbMajorClass selectTbMajorClassByMajorId(Long majorId);

    /**
     * 查询专业分类列表
     *
     * @param tbMajorClass 专业分类
     * @return 专业分类集合
     */
    public List<TbMajorClass> selectTbMajorClassList(TbMajorClass tbMajorClass);

    /**
     * 查询专业分类列表
     *
     * @return 专业分类集合
     */
    public List<TbMajorClass> getAllMajorClassList();

    /**
     * 新增专业分类
     *
     * @param tbMajorClass 专业分类
     * @return 结果
     */
    public int insertTbMajorClass(TbMajorClass tbMajorClass);

    /**
     * 修改专业分类
     *
     * @param tbMajorClass 专业分类
     * @return 结果
     */
    public int updateTbMajorClass(TbMajorClass tbMajorClass);

    /**
     * 批量删除专业分类
     *
     * @param majorIds 需要删除的专业分类主键集合
     * @return 结果
     */
    public int deleteTbMajorClassByMajorIds(Long[] majorIds);

    /**
     * 删除专业分类信息
     *
     * @param majorId 专业分类主键
     * @return 结果
     */
    public int deleteTbMajorClassByMajorId(Long majorId);

    /**
     * 专业分类列表
     *
     * @param params 参数
     * @return 专业分类列表
     */
    public List<Map<String, Object>> selectTbMajorClassMapList(Map<String, Object> params);

    /**
     * 专业分类树列表
     *
     * @return 专业分类树列表
     */
    public List<TbMajorClass> selectTbMajorClassTreeList();

    /**
     * 树列表
     *
     * @param treeList 专业分类列表
     * @param pid 父级ID
     * @return 专业分类集合
     */
    public List<TbMajorClass> toTree(List<TbMajorClass> treeList, Long pid);

    /**
     * 专业课程列表
     *
     * @param params 参数
     * @return 专业课程列表
     */
    public List<Map<String, Object>> getMajorCourseList(Map<String, Object> params);

    /**
     * 获取机构专业分类
     * @param evaluateAgencyId 机构ID
     * @return 专业课程列表
     */
    public List<Map<String, Object>> getEvaluateAgencyMajorClass(Long evaluateAgencyId);

    /**
     * 专业课程详情
     *
     * @param params 参数
     * @return 专业课程详情
     */
    public Map<String, Object> getMajorCourseInfo(Map<String, Object> params);

    /**
     * 课程师资列表
     *
     * @param params 参数
     * @return 课程师资列表
     */
    public List<Map<String, Object>> getCourseTeacherList(Map<String, Object> params);

    /**
     * 查询专业分类列表-下拉框树列表
     *
     * @return 专业分类集合
     */
    public List<Map<String,Object>> getTbMajorClassTreeList();

    /**
     * 专业课程视频列表
     *
     * @param params 参数
     * @return 专业课程视频列表
     */
    public List<Map<String, Object>> getMajorCourseVideoList(Map<String, Object> params);
}
