package com.ningdatech.pmapi.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.pmapi.sys.model.entity.Region;
import com.ningdatech.pmapi.sys.model.dto.RegionDTO;

import java.util.List;

/**
 * <p>
 * 地域管理 服务类
 * </p>
 *
 * @author zpf
 * @since 2023-1-18
 */
public interface IRegionService extends IService<Region> {

    /**
     * 查询所有区域
     *
     * @return 所有区域
     */
    List<RegionDTO> all();

    /**
     * 查询区域
     *
     * @param regionCode  区域编码
     * @param regionLevel 区域层级
     * @return {@link Region}
     */
    Region getOne(String regionCode, int regionLevel);

    /**
     * 查询大于等与该级别的所有区域
     *
     * @param regionLevel
     * @return 区域集合
     */
    List<RegionDTO> listGeLevel(int regionLevel);

    /**
     * 是否为父节点
     *
     * @param regionId 区域ID
     * @return boolean
     **/
    boolean isParentRegion(Long regionId);

    /**
     * 获取当前区域的本级
     *
     * @param parentId   区域ID
     * @param regionCode 区域code
     * @return 区域ID
     **/
    Long getRegionIdByParentIdWithSameRegionCode(Long parentId, String regionCode);

}
