package com.ruoyi.project.business.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.business.domain.TbCountry;
import com.ruoyi.project.business.domain.vo.country.CountryLanguageVo;

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

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

    /***根据ids批量查找国家缩写
     *
     * @param ids
     * @return
     */
    public Map<Long,String> selectCountryAbbr(List<Long> ids);

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

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

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

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

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

    /**
     * 查询所有国家列表
     * @return 结果
     */
    List<CountryLanguageVo> getAllNationNeedLanguageList(String language);

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

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

    /**
     * 所有国家 map 带缓存
     */
    Map<Long, TbCountry> allCountryMap();
}
