package com.bohuikeji.delivery.backstage.service;

import com.bohuikeji.delivery.backstage.entity.TConfig;
import com.bohuikeji.delivery.backstage.entity.TCustomerTemplate;
import com.bohuikeji.delivery.backstage.entity.TMerchantConfig;
import com.bohuikeji.frame.module.admin.base.ServiceBase;
import com.bohuikeji.frame.module.admin.entity.sys.SysConfig;

import java.util.List;


/**
 * 加盟商信息配置
 * @author 10552
 */
public interface ITMerchantConfigService extends ServiceBase<TMerchantConfig> {

    /**
     * 使用配置key查询配置项目
     * @param key
     * @return
     */
    TMerchantConfig getConfigByKey(String key,Integer franId);

    /**
     * 使用组key获取一组配置列表
     * @param groupKey
     * @return
     */
    List<TMerchantConfig> getListByGroup(String groupKey,Integer franId);

    /**
     * 查询B端溢价组
     * @param groupKey
     * @param franId
     * @return
     */
    public List<TMerchantConfig> getBListByGroup(String groupKey,Integer franId);


    /**
     * 使用配置KEY查询旧版配置
     * @param key
     * @param location
     * @return
     */
    SysConfig getSysConfigByKey(String key,String location);

    /**
     * 查询配置使用ID或者客户号
     * @param configId
     * @param customerId
     * @return
     */
    TMerchantConfig getByIdWithCustomer(Integer configId,Integer customerId);

    /**
     * 获取加盟商计费配置组，同时查询客户计费配置组
     * @param groupKey 配置组KEY
     * @param location 查询地区位置左边
     * @param customerId 客户ID
     * @return
     */
    List<TMerchantConfig> getFranConfigByGroupWithCustomer(String groupKey,String location,Integer customerId);

    /*List<TConfig> getFranConfigByGroupCustomer(String groupKey,Integer franId,Integer customerId);*/

    /**
     * 获取加盟计费规则组的默认规则
     * <p><span style="color: red;font-weight: 700;">【注意】</span>如未配置默认规则，则使用顺序第一条作为默认<p/>
     * <p>【场景】目前开放平台使用本系统下单功能，由于各个第三方系统业务逻辑及对接程度存在差异，暂时不提供选择计费项目功能，即只提供一种当地默认计费规则</p>
     * <p>【其他】对于定制计费的合作平台请使用客户模板方式绑定计费规则，未绑定按地区默认规则计费</p>
     * @param groupKey 计费配置组KEY
     * @param location 地区经纬度，通常是下单地址坐标
     * @return
     */
    List<TMerchantConfig> getFranConfigByGroup(String groupKey,String location);

    /**
     * 开放平台下单计费规则配置
     * <p><span style="color: red;font-weight: 700;">【注意】</span>如未配置默认规则，则使用顺序第一条作为默认<p/>
     * <p>【场景】目前开放平台使用本系统下单功能，由于各个第三方系统业务逻辑及对接程度存在差异，暂时不提供选择计费项目功能，即只提供一种当地默认计费规则</p>
     * <p>【其他】对于定制计费的合作平台请使用客户模板方式绑定计费规则，未绑定按地区默认规则计费</p>
     * @param groupKey 计费配置组KEY
     * @param location 地区经纬度，通常是下单地址坐标
     * @return
     */
    TMerchantConfig getOpenConfigByGroup(String confiogName,String groupKey,String location);

    /**
     * 获取大客户附加计费组配置
     * @param customerId 客户ID
     * @return
     */
    List<TCustomerTemplate> getBigCustomerAddList(Integer customerId);

}
