package org.dromara.settlement.api;


import org.dromara.settlement.api.constant.SystemConfig;
import org.dromara.settlement.api.domain.*;

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


/**
 * 配置业务
 * @author 张涛
 * @date 2019年4月29日
 */
public interface RemoteConfigService {
	/**
	 * 验证服务是否能访问
	 * @author 张涛
	 * @date 2021年1月13日
	 * @param unitId 单位id
	 * @param key 访问权限唯一标识
	 * @return
	 */
	public Boolean valiServiceAccess(long unitId,String key);

	/**
	 * 获取配置项(单个)
	 * @author 张涛
	 * @date 2021年1月13日
	 * @param unitId 单位id
	 * @param key 配置项key
	 * @return
	 */
	public String getItem(long unitId,String key);

	/**
	 * 获取配置项(多个)
	 * @author 张涛
	 * @date 2021年1月13日
	 * @param unitId 单位id
	 * @param keys 配置项key
	 * @return
	 */
	public Map<String, String> getItems(long unitId,String... keys);

	/**
	 * 获取存储类型
	 * @author 张涛
	 * @date 2021年1月20日
	 * @param unitId 单位id
	 * @return
	 */
	public SystemConfig.StoreType getStoreType(long unitId);

	/**
	 * 获取上传图片的网络路径
	 *
	 * @return
	 */
	public String getUploadNetPath(long unitId);

	/**
	 * 获取上传图片的物理路径
	 *
	 * @return
	 */
	public String getUploadPhyPath(long unitId);


	/**
	 * 获取七牛上传凭证
	 *
	 * @return
	 */
	public String getQiNiuUptoken(long unitId);

	/**
	 * 获取七牛访问域名
	 *
	 * @return
	 */
	public String getQiNiuDomain(long unitId);

	/**
	 * Description: {获取企业大类信息}
	 * @param :
	 * @return :
	 * @throws :
	 * @see :com.tyy.service.user
	 * @author: dinghongbo
	 * @date :2021年1月27日
	 * Note: Nothing much.
	 */
	public Result<List<UnitConfClass>> getConfClass(Long unit_id, String unitType);

	/**
	 * Description: {获取大类下的组信息}
	 * @param :unit_id：企业id，class_alias：大类名称
	 * @return :
	 * @throws :
	 * @see :com.tyy.service.user
	 * @author: dinghongbo
	 * @date :2021年1月27日
	 * Note: Nothing much.
	 */
	public Result<List<UnitConfGroup>> getConfGroupByUnit(Long unit_id, String class_alias);

	/**
	 * Description: {获取组下的表单配置项}
	 * @param :unit_id：企业id，conf_group：组名称
	 * @return :
	 * @throws :
	 * @see :com.tyy.service.user
	 * @author: dinghongbo
	 * @date :2021年1月27日
	 * Note: Nothing much.
	 */
	public Result<List<UnitConfDetail>> getConfDetailByUnit(Long unit_id, String conf_group);

	/**
	 * Description: {编辑配置项}
	 * @param :配置项明细
	 * @return :
	 * @throws :
	 * @see :com.tyy.service.user
	 * @author: dinghongbo
	 * @date :2021年1月27日
	 * Note: Nothing much.
	 */
	public Result<Boolean> editConfDetail(List<UnitConfDetail> lendReco);

	/**
	 *
	 * Description: {获取七牛上传所需配置}
	 * @param :
	 * @return :
	 * @throws :
	 * @see :com.tyy.service.config
	 * @author: dinghongbo
	 * @date :2021年2月2日
	 * Note: Nothing much.
	 */
	public Result<QiNiuConfig> getQiniuConfg(Long unit_id);

	/**
	 * Description: {修改配置项目}
	 * @param :
	 * @return :
	 * @throws :
	 * @see :com.tyy.service.config
	 * @author: dinghongbo
	 * @date :2021年2月3日
	 * Note: Nothing much.
	 */
	public Result<Boolean> saveConfigById(Long unitId, String key,String value);

}
