package com.ruoyi.project.business.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.project.business.domain.TbCountry;
import com.ruoyi.project.business.domain.dto.TbCountryDto;
import com.ruoyi.project.business.domain.vo.country.CountryLanguageVo;
import org.apache.ibatis.annotations.Param;

/**
 * 国家Mapper接口
 * 
 * @author ruoyi
 * @date 2024-04-15
 */
public interface TbCountryMapper extends BaseMapper<TbCountry>
{
    /**
     * 查询国家
     * 
     * @param countryId 国家主键
     * @return 国家
     */
    public TbCountry selectTbCountryByCountryId(Long countryId);

    /**
     * 查询国家列表
     * 
     * @param tbCountry 国家
     * @return 国家集合
     */
    public List<TbCountry> selectTbCountryList(TbCountry tbCountry);

    /**
     * 新增国家
     * 
     * @param tbCountry 国家
     * @return 结果
     */
    public int insertTbCountry(TbCountry tbCountry);

    /**
     * 修改国家
     * 
     * @param tbCountry 国家
     * @return 结果
     */
    public int updateTbCountry(TbCountry tbCountry);

    /**
     * 删除国家
     * 
     * @param countryId 国家主键
     * @return 结果
     */
    public int deleteTbCountryByCountryId(Long countryId);

    /**
     * 批量删除国家
     * 
     * @param countryIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbCountryByCountryIds(Long[] countryIds);

    /**
     * 查询所有国家列表
     * @return 结果
     */
    List<TbCountry> getAllNationList();

    /**
     * 查询所有国家列表(需要语言)
     *
     * @return 结果
     */
    public List<CountryLanguageVo> getAllNationNeedLanguageList(@Param("language") String language);

    /**
     * 根据地区id查询国家列表
     * @param areaId 地区id
     */
    List<TbCountry> selectCountryByAreaId(Long areaId);

    /**
     * 根据国家名称查询国家数量
     * @param countryName 国家名称
     * @param countryId 国家id
     * @return
     */
    int selectTbCountryByCountryName(String countryName, Long countryId);

    List<TbCountry> selectCountryByAreaIds(Long[] areaIds);

    List<TbCountryDto> selectTbCountryByCountryIds(List<Long> ids);
}
