package com.ruoyi.hezhi.mapper;

import com.ruoyi.hezhi.domain.TbRegion;
import org.apache.ibatis.annotations.Param;

import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Map;

/**
 * 行政区域Mapper接口
 *
 * @author ruoyi
 * @date 2024-10-21
 */
public interface TbRegionMapper
{
    /**
     * 查询行政区域
     *
     * @param id 行政区域主键
     * @return 行政区域
     */
    public TbRegion selectTbRegionById(Long id);

    //查询省id
    public Long selectIdByName1(String name);
    //查询市id
    public Long selectIdByName2(String name);
    //查询区id
    public Long selectIdByName3(@Param("name") String name,@Param("pid") Long pid);

    /**
     * 查询行政区域列表
     *
     * @param tbRegion 行政区域
     * @return 行政区域集合
     */
    public List<TbRegion> selectTbRegionList(TbRegion tbRegion);

    /**
     * 查询所有省份及其下级（使用JOIN）
     *
     * @param tbRegion 行政区域
     * @return 行政区域集合
     */
    public List<TbRegion> findAllRegions(TbRegion tbRegion);

    // 根据类型查询区域
    List<TbRegion> findByType(@Param("type") Integer type);

    // 根据父ID查询子区域
    List<TbRegion> findByPid(@Param("pid") Long pid);

    /**
     * 新增行政区域
     *
     * @param tbRegion 行政区域
     * @return 结果
     */
    public int insertTbRegion(TbRegion tbRegion);

    /**
     * 修改行政区域
     *
     * @param tbRegion 行政区域
     * @return 结果
     */
    public int updateTbRegion(TbRegion tbRegion);

    /**
     * 删除行政区域
     *
     * @param id 行政区域主键
     * @return 结果
     */
    public int deleteTbRegionById(Long id);

    /**
     * 批量删除行政区域
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbRegionByIds(Long[] ids);

    /**
     * 查询行政区域列表
     *
     * @param params 参数
     * @return 行政区域集合
     */
    public List<TbRegion> getRegionList(Map<String, Object> params);

    /**
     * 查询行政区域列表省
     *
     * @return 行政区域集合
     */
    public List<TbRegion> selectRegionProvinceList();

    /**
     * 查询行政区域列表省
     *
     * @return 行政区域集合
     */
    public List<TbRegion> selectRegionCityOrAreaList(Integer id);

    /**
     * @param nativePlace id 集合
     * @return
     */
    List<TbRegion> getRegionListByIds(@Param("nativePlace") List<String> nativePlace);
}
