package com.pangu.base.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pangu.base.domain.Region;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 区域Mapper接口
 * @author pangu
 */
@Mapper
public interface RegionMapper extends BaseMapper<Region> {

    /**
     * 查询区域列表
     */
    List<Region> selectRegionList(Region region);

    /**
     * 根据ID查询区域
     */
    Region selectRegionById(Long regionId);

    /**
     * 新增区域
     */
    int insertRegion(Region region);

    /**
     * 修改区域
     */
    int updateRegion(Region region);

    /**
     * 删除区域（软删除）
     */
    int deleteRegionById(Long regionId);

    /**
     * 查询子区域数量
     */
    @Select("SELECT COUNT(*) FROM pg_region WHERE parent_id = #{parentId} AND del_flag = '0'")
    int countChildByParentId(Long parentId);

    /**
     * 查询指定层级的最大编码
     */
    @Select("SELECT MAX(region_code) FROM pg_region WHERE level = #{level} AND del_flag = '0'")
    String selectMaxCodeByLevel(Integer level);

    /**
     * 查询指定父级下的最大编码
     */
    @Select("SELECT MAX(region_code) FROM pg_region WHERE parent_id = #{parentId} AND del_flag = '0'")
    String selectMaxCodeByParent(Long parentId);

    /**
     * 获取区域路径（如：湖北省-武汉市-武昌区）
     * @param regionId 区域ID
     * @return 区域路径
     */
    String selectRegionPath(@Param("regionId") Long regionId);
}
