package com.sptg.permissions.biz.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.sptg.permissions.api.dto.RegionAuthorizeDto;
import com.sptg.permissions.api.entity.Organization;
import com.sptg.permissions.api.entity.Region;
import com.sptg.permissions.api.entity.RegionAuthorize;

import java.util.List;


/**
 * title: RegionAuthorizeServiceInterface
 * package: com.sptg.permissions.biz.security
 * description: 区域授权-服务层接口
 *
 *                  
 *                 
 */
public interface RegionAuthorizeServiceInterface extends IService<RegionAuthorize> {

    /**
     * 功能描述: 根据机构的position或小区的Id删除授权小区
     * @param position 机构位置
     * @param residentialId 小区Id
     *                  
     *                      
     */
    void deleteByOrgPositionOrResidentialId(String position,Long residentialId);

    /**
     * 功能描述: 获取某机构的授权区域列表
     * @param position 机构位置
     * @return List<Region>
     *                  
     *                     
     */
    List<Region> selectAuthorizeRegionList(String position);

    /**
     * 功能描述: 获取某用户的授权区域列表（包括此机构的下级）
     * @param dto
     * {
     *  orgPosition     :   必填,用户所属的机构位置,用来做筛选
     *  groupBy         :   必填,分组条件{ 1：省，2：市，3：区 }
     *  pid             :   选填
     * }
     * @return List<Region>
     *                  
     *                       
     */
    List<Region> selectAuthorizeRegion(RegionAuthorizeDto dto);

    /**
     * 功能描述: 分页查询授权列表
     * @param dto 查询条件
     * @param page 分页信息
     * @return List<RegionAuthorize>
     *                  
     *                      
     */
    Page<RegionAuthorize> pagingQuery(RegionAuthorizeDto dto,Page<RegionAuthorize> page);

    /**
     * 功能描述: 查询授权小区和上级机构列表
     * @param dto
     * {
     *      orgPosition     :   必填,用户所属的机构位置,用来做筛选
     *      isSelectParent  :   选填,是否查询父级
     *      pid             :   选填,指定某机构的的数据
     * }
     * @return List<Organization>
     *                  
     *                       
     */
    List<Organization> selectAuthorizeOrgList(RegionAuthorizeDto dto);

    /**
     * 功能描述:查询授权小区和上级机构列表(排除关联设备授权的小区条件)
     * @param dto
     * {
     *     orgPosition     :   必填,用户所属的机构位置,用来做筛选
     *     pid             :   选填,指定某机构的的数据
     * }
     * @return List<Organization>
     *                
     *                     
     */
    List<Organization> selectAuthorizeOrgListTwo(RegionAuthorizeDto dto);

    /**
     * 功能描述: 分页查询授权小区列表
     * @param dto 查询条件
     * @param page 分页信息
     * @return Page<Organization>
     *                  
     *                       
     */
    Page<Organization> pagingQueryAuthorizeOrg(RegionAuthorizeDto dto,Page<RegionAuthorize> page);

    /**
     * 功能描述: 根据小区Id查询
     * @param xqId 小区Id
     * @return List<RegionAuthorize>
     *                  
     *                       
     */
    List<RegionAuthorize> selectListByXqId(Long xqId);
}
