package com.jsowell.pile.mapper;

import com.jsowell.pile.domain.PileMerchantInfo;
import com.jsowell.pile.dto.QueryMerchantInfoDTO;
import com.jsowell.pile.vo.web.MerchantSettleInfoVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

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

	/**
	 * 通过appid查询充电桩运营商信息
	 * @param appId
	 * @return
	 */
	List<PileMerchantInfo> selectPileMerchantInfoByAppId(String appId);

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

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

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

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

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

	List<String> queryByMerchantDeptIds(@Param("merchantDeptIds") List<String> merchantDeptIds);

	/**
	 * 根据部门id查询基本信息
	 * @param deptId
	 * @return
	 */
	PileMerchantInfo queryInfoByDeptId(@Param("deptId") String deptId);

	/**
	 * 通过ids查询信息列表
	 * @param deptIds
	 * @return
	 */
	List<PileMerchantInfo> queryInfoListByIds(@Param("deptIds") List<String> deptIds);

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

	/**
	 * 根据appid查询对应一级运营商id
	 * @param appId
	 * @return
	 */
	PileMerchantInfo getFirstLevelMerchantByAppId(String appId);

	/**
	 * 通过appid查询运营商部门id
	 * @param appId
	 * @return
	 */
    List<String> getDeptIdsByAppId(@Param("appId") String appId);

	/**
	 * 后管财务中心页面运营商列表
	 * @param dto
	 * @return
	 */
	List<MerchantSettleInfoVO> queryMerchantSettleInfoList(@Param("dto") QueryMerchantInfoDTO dto);
}
