package cn.fateverse.admin.service;

import cn.fateverse.common.core.entity.Dept;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author Clay
 * @date 2022/11/2
 */
public interface DeptService extends IService<Dept> {

    /**
     * 查询部门树形结构数据
     *
     * @param deptName 部门名称
     * @param state    部门状态
     * @return 部门集合
     */
    List<Dept> list(String deptName, Integer state);

    /**
     * 获取排除自身的部门树形结构
     *
     * @param deptId 部门id
     * @return 部门树形选择对象
     */
    List<Dept> searchExcludeTree(Long deptId);

    /**
     * 通过ids获取到部门数据
     *
     * @param deptIds 部门id列表
     * @return 部门集合对象
     */
    List<Dept> searchByIds(List<Long> deptIds);

    /**
     * 校验部门名称是否唯一
     *
     * @param dept 部门对象
     */
    void checkNameUnique(Dept dept);

    /**
     * 是否存在部门子节点
     *
     * @param deptId 部门ID
     * @return 结果
     */
    boolean hasChildById(Long deptId);

    /**
     * 按id选择子代
     *
     * @param deptId 部门id
     * @return {@link List }<{@link Dept }>
     */
    List<Dept> selectChildrenById(Long deptId);

    /**
     * 按部门父级id选择列表
     *
     * @param deptId 部门id
     * @return {@link List }<{@link Dept }>
     */
    List<Dept> selectListByDeptParentId(Long deptId);

}
