package com.ruoyi.mall.mapper;

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

import com.ruoyi.mall.domain.MallMajorClass;
import com.ruoyi.mall.domain.Vo.FacultyMajorVO;
import org.apache.ibatis.annotations.Param;

/**
 * 专业分类Mapper接口
 *
 * @author LCL
 * @date 2023-10-18
 */
public interface MallMajorClassMapper
{
    /**
     * 查询专业分类
     *
     * @param majorId 专业分类主键
     * @return 专业分类
     */
    public MallMajorClass selectMallMajorClassByMajorId(Long majorId);

    /**
     * 分类名和父id查询
     * @param majorName
     * @param parentId
     * @return
     */
    public MallMajorClass selectMajorClassByName(@Param("majorName") String majorName, @Param("parentId")Long parentId);

    /**
     * 专业名查询专业
     * @param majorName 专业名
     * @return 结果
     */
    public MallMajorClass selectMallMajorClassByMajorName(@Param("majorName") String majorName);

    /**
     * 查询专业分类列表
     *
     * @param mallMajorClass 专业分类
     * @return 专业分类集合
     */
    public List<MallMajorClass> selectMallMajorClassList(MallMajorClass mallMajorClass);

    /**
     * 新增专业分类
     *
     * @param mallMajorClass 专业分类
     * @return 结果
     */
    public int insertMallMajorClass(MallMajorClass mallMajorClass);

    /**
     * 修改专业分类
     *
     * @param mallMajorClass 专业分类
     * @return 结果
     */
    public int updateMallMajorClass(MallMajorClass mallMajorClass);

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

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

    /**
     * 查询一级、二级专业分类列表
     *
     * @param majorId 专业分类ID
     * @return 专业分类集合
     */
    public List<Map<String, Object>> selectOneOrTwoMallMajorClassList(Long majorId);

    /**
     * 专业列表带学校数量

     * @return 结果
     */
    public List<Map<String, Object>> selectMajorListWithSchoolNum(Integer type);



    /**
     * 硕士点研究方向专业分类列表
     * @param majorId
     * @return
     */
    public List<Map<String, Object>> selectOneOrTwoMallMajorClassListByMaster(@Param("majorId") Long majorId);

    /**
     * 根据专业ID查询相关联的职业列表
     *
     * @param majorId 专业分类ID
     * @return 专业分类集合
     */
    public List<Map<String, Object>> selectRelatedCareerListByMajorId(Long majorId);

    /**
     * 根据职业ID查询相关联的专业列表
     *
     * @param careerId 职业ID
     * @return 职业分类集合
     */
    public List<Map<String, Object>> selectRelatedMajorListByCareerId(Long careerId);

    /**
     * 查询学院专业名称
     * @param majorIds 专业id
     * @return 结果
     */
    public List<FacultyMajorVO> selectMajorShortInfoByMajorId(@Param("majorIds")String majorIds);

    /**
     * 查询二级专业分类列表
     *
     * @return 专业分类集合
     */
    public List<Map<String, Object>> selectAllTwoMallMajorClassList();

    /**
     * 根据上级id查询列表
     * @param pid 上级id
     * @return 结果
     */
    public List<MallMajorClass> selectMajorListByPid(@Param("pid")Long pid);

    /**
     * 所有专业列表
     * @return
     */
    public List<MallMajorClass> selectAllMajorList();

    /**
     * 所有二级专业列表
     * @return 结果
     */
    public List<MallMajorClass> selectMajorListByLevel2();

    /**
     * 专业名字集合
     * @return 结果
     */
    public List<String> selectMajorStr(@Param("majorIds")String majorIds);
}
