package com.sptg.permissions.biz.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.sptg.common.core.beans.PageBean;
import com.sptg.permissions.api.dto.OrgDto;
import com.sptg.permissions.api.entity.Organization;

import java.util.List;

/**
 * title: OrgServiceInterface
 * package: com.sptg.permissions.biz.security
 * description: 机构-服务接口
 *
 *                  
 *                 
 */
public interface OrgServiceInterface extends IService<Organization> {

    /**
     * 功能描述: 查询所有子机构列表
     * @param position 机构位置
     * @return List<Organization>
     *                  
     *                       
     */
    List<Organization> selectByPosition(String position);

    /**
     * 功能描述: 根据上级机构Id获取子机构
     * @param pid 上级机构Id
     * @return List<Organization>
     *                  
     *                      
     */
    List<Organization> selectByPid(Long pid);

    /**
     * 功能描述: 查询所有子机构
     * @param dto
     * {
     *      position    :   必填
     *      isQueryDept :   默认查询部门
     *      excludeOwn  :   是否过滤自己,默认过滤
     * }
     * @return List<Organization>
     *                  
     *                      
     */
    List<Organization> selecSubList(OrgDto dto);

    /**
     * 功能描述:获取机构数量
     * @param dto
     * @return int
     *                
     *                      
     */
    int selectCount(OrgDto dto);

    /**
     * 校验机构名称是否已存在
     * @param name 机构名称
     * @return boolean
     */
    boolean checkNameIsExist(String name);
    
    /**
     * 功能描述:分页查询机构
     * @param pageBean 查询条件
     * @return Page<Organization>
     *             
     *                      
     */
    Page<Organization> showOrgList(PageBean<Organization,OrgDto> pageBean);
}
