package com.cool.store.mapper;

import com.cool.store.dto.RegionNode;
import com.cool.store.entity.RegionDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author shoul
 */
@Mapper
public interface RegionMapper {

    /**
     * 获取所有的区域包含删除区域
     *
     * @return
     */
    List<RegionDO> getRegionsByEid( @Param("regionId") Long regionId);

    /**
     * 获取区域列表
     *
     * @param regionIds
     * @return
     */
    List<RegionDO> getRegionByRegionIdsForMap(  @Param("regionIds") List<String> regionIds);
    /**
     * 获取区域
     *
     * @param regionId
     * @return
     */
    RegionNode getRegionByRegionId( @Param("regionId") String regionId);

    /**
     * 获取区域列表（不包含删除）
     *
     * @param regionIds
     * @return
     */
    List<RegionDO> getRegionByRegionIds(  @Param("regionIds") List<String> regionIds);

    /**
     * 区域列表（包含删除）
     *
     * @param ids
     * @return
     */
    List<RegionDO> getByIds(@Param("list")List<Long> ids);

    List<RegionDO> getRegionPathByIds(@Param("list")List<Long> ids);

    RegionDO getByRegionId( @Param("regionId") Long regionId);

    List<RegionDO> getRegionsByParentId( @Param("parentId") Long parentId);

    List<RegionDO> listRegionByIds( @Param("regionIds") List<Long> regionIds);

    List<RegionDO> listRegionByRegionPath(@Param("regionPath") String regionPath);

    /**
     * 筛选删除状态的
     *
     * @param regionId
     * @return
     */
    RegionDO getByRegionIdExcludeDeleted( @Param("regionId") Long regionId);

    /**
     * 获取子区域
     *
     * @param parentId
     * @return
     */
    List<RegionDO> getSubRegion( @Param("parentId")Long parentId);
    /**
     * 获取区域范围内的区域id
     *
     * @param regionPaths
     * @return
     */
    List<String> getSubIdsByRegionIds( @Param("regionPaths")List<String> regionPaths);

    List<String> getSubRegionIdsByRegionIds( @Param("regionIds")List<String> regionIds);

    List<Long> getSubRegionIdsByRegionIdList( @Param("regionIds")List<Long> regionIds);

    List<String> getStoreIdsByRegionIds( @Param("regionIds")List<String> regionIds);

    List<String> getSubIdsByRegionpaths( @Param("regionPaths")List<String> regionPaths);

    List<String> getRegionPathByRegionIds( @Param("regionIds")List<String> regionIds);

    List<RegionDO> getCompRegionByRegionIds(@Param("compParentIdList") List<Long> compParentIdList);

    int countByRegionIdList(@Param("regionIdList") List<String> regionIdList);

    List<RegionDO> getRegionByParentIds(@Param("regionIdList") List<String> regionIdList);

    List<RegionDO> listByThirdRegionType(@Param("parentId")Long parentId, @Param("thirdRegionType")String thirdRegionType);


    RegionDO getRegionByStoreId(@Param("storeId") String storeId);

    RegionDO getBigRegionByRegionId(@Param("regionId") long regionId);

    List<RegionDO> getFightRegionByRegionIds(@Param("regionIds") List<String> regionIds);

    RegionDO getRegionInfoBySynDingDeptId(@Param("synDingDeptId") Long synDingDeptId);
}
