package com.jsowell.pile.service;

import com.jsowell.pile.domain.PileMerchantInfo;
import com.jsowell.pile.dto.CreateMerchantDTO;
import com.jsowell.pile.dto.QueryMerchantInfoDTO;
import com.jsowell.pile.vo.base.MerchantInfoVO;
import com.jsowell.pile.vo.web.MerchantSettleInfoVO;

import java.util.List;

/**
 * 充电桩运营商信息Service接口
 *
 * @author jsowell
 * @date 2022-08-27
 */
public interface IPileMerchantInfoService {
	/**
	 * 查询充电桩运营商信息
	 *
	 * @param id 充电桩运营商信息主键
	 * @return 充电桩运营商信息
	 */
	public PileMerchantInfo selectPileMerchantInfoById(Long id);

    PileMerchantInfo selectPileMerchantInfoById(String merchantId);

    /**
	 * 查询充电桩运营商信息列表
	 *
	 * @param pileMerchantInfo 充电桩运营商信息
	 * @return 充电桩运营商信息集合
	 */
	List<PileMerchantInfo> selectPileMerchantInfoListWithAuth(PileMerchantInfo pileMerchantInfo);

    List<PileMerchantInfo> selectPileMerchantInfoList(PileMerchantInfo pileMerchantInfo);

    /**
	 * 新增充电桩运营商信息
	 *
	 * @param pileMerchantInfo 充电桩运营商信息
	 * @return 结果
	 */
	public int insertPileMerchantInfo(CreateMerchantDTO pileMerchantInfo);

	/**
	 * 修改充电桩运营商信息
	 *
	 * @param pileMerchantInfo 充电桩运营商信息
	 * @return 结果
	 */
	public int updatePileMerchantInfo(PileMerchantInfo pileMerchantInfo);

	/**
	 * 批量删除充电桩运营商信息
	 *
	 * @param ids 需要删除的充电桩运营商信息主键集合
	 * @return 结果
	 */
	public int deletePileMerchantInfoByIds(Long[] ids);

	/**
	 * 删除充电桩运营商信息信息
	 *
	 * @param id 充电桩运营商信息主键
	 * @return 结果
	 */
	public int deletePileMerchantInfoById(Long id);

    PileMerchantInfo getFirstLevelMerchantByAppId(String appId);

    /**
	 * 通过微信小程序appId查询一级运营商merchantId
	 * @param appId 微信小程序appId
	 * @return 一级运营商merchantId
	 */
	String getFirstLevelMerchantIdByAppId(String appId);

	MerchantInfoVO getMerchantInfo(String merchantId);

	/**
	 * 根据运营商部门ids 查询所有站点id
	 * @param merchantDeptIds
	 * @return
	 */
	List<String> queryByMerchantDeptIds(List<String> merchantDeptIds);

	PileMerchantInfo queryInfoByDeptId(String deptId);

	/**
	 * 通过ids查询信息列表
	 * @param dto
	 * @return
	 */
	List<MerchantSettleInfoVO> queryMerchantInfoListByAuth(QueryMerchantInfoDTO dto);

	/**
	 * 查询一级运营商列表
	 * @return
	 */
    List<PileMerchantInfo> queryFirstLevelMerchantList();

    String queryAppIdByMerchantId(String merchantId);

	/**
	 * 通过appid获取运营商部门id
	 * @param appId
	 * @return
	 */
	List<String> getDeptIdsByAppId(String appId);

    String getDelayModeByWechatAppId(String wechatAppId);

    String getDelayModeByMerchantId(String merchantId);

    /**
	 * 通过merchantId获取一级运营商信息
	 */
	PileMerchantInfo getFirstLevelMerchantByMerchantId(String merchantId);

	/**
	 * 通过merchantId获取一级运营商id
	 */
	String getFirstLevelMerchantIdByMerchantId(String merchantId);
}
