package com.cool.store.mapper;

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

import java.util.List;

/**
 * @author zhangchenbiao
 * @date 2023-06-07 02:07
 */
public interface RegionMapper {

    /**
     *
     * 默认更新方法，根据主键更新，不会把null值更新到数据库，避免覆盖之前有值的
     * dateTime:2023-06-07 02:07
     */
    int updateByPrimaryKeySelective(RegionDO record);

    /**
     * 批量新增或者更新
     * @param insertOrUpdateList
     * @return
     */
    int batchInsertOrUpdate(@Param("insertOrUpdateList") List<RegionDO> insertOrUpdateList);

    /**
     * 删除不存在的区域
     * @param regionIds
     * @return
     */
    int deleteNotExistRegion(@Param("regionIds")List<String> regionIds);

    /**
     * 根据regionIds获取region
     * @param regionIds
     * @return
     */
    List<RegionDO> getRegionByRegionIds(@Param("regionIds")List<String> regionIds);

    /**
     * 根据区域id获取名称
     * @param regionIds
     * @return
     */
    List<RegionDO> getRegionNameByRegionIds(@Param("regionIds")List<String> regionIds);

    /**
     * 获取区域基本信息
     * @return
     */
    List<RegionDO> getRegionBaseInfoList();

    /**
     * 获取区域信息
     * @param regionId
     * @return
     */
    RegionDO getRegionInfoByRegionId(@Param("regionId") String regionId);

    /**
     * 获取区域的子节点个数
     * @return
     */
    Integer getSubNodeCountByRegionId(@Param("regionId") String regionId);

    /**
     * 删除区域
     * @param regionId
     * @return
     */
    Integer deleteRegionByRegionId(@Param("regionId") String regionId);

    /**
     * 获取子节点
     * @param regionPathList
     * @return
     */
    List<String> getSubRegionIds(@Param("regionPathList") List<String> regionPathList);

    /**
     * 获取子部门
     * @param regionId
     * @return
     */
    List<RegionDO> getSubRegion(@Param("regionId") String regionId);
}