package com.red.circle.other.infra.database.mongo.service.user.region;

import com.red.circle.other.infra.database.mongo.entity.user.region.SysRegionConfig;
import com.red.circle.other.inner.model.cmd.user.SysRegionConfigQryCmd;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 区域.
 *
 * @author pengshigang on 2022/12/5.
 */
public interface SysRegionConfigService {

  void add(SysRegionConfig config);

  void update(SysRegionConfig config);

  void deleteById(String id, Long updateUser);

  List<SysRegionConfig> listByCondition(SysRegionConfigQryCmd query);

  Map<String, String> mapRegionName(Set<String> regionIds);

  String getRegionName(String regionId);

  SysRegionConfig getById(String id);

  Map<String, String> mapRegionName(String sysOrigin);

  Boolean existRegionCode(String regionCode, String notId);

  Boolean existRegionCode(String regionCode, String notId, String sysOrigin);

  /**
   * 获取系统,可用区域.
   */
  List<SysRegionConfig> listAvailable(String sysOrigin);

  /**
   * 获取,可用区域.
   */
  List<SysRegionConfig> listAvailable(Set<String> ids);

  /**
   * 获取,可用区域.
   */
  Map<String, SysRegionConfig> mapAvailable(Set<String> ids);

  SysRegionConfig getByRegionCode(String regionCode, String sysOrigin);

  /**
   * 通过语言查询区域
   * @return
   */
  List<SysRegionConfig> getRegionCodeByLangeCodes(String langeCodes);

}
