package com.zsElectric.boot.business.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zsElectric.boot.business.model.dto.StationDetailDTO;
import com.zsElectric.boot.business.model.dto.ThirdPartyEquipmentExportDTO;
import com.zsElectric.boot.business.model.dto.ConnectorTipsUpdateDTO;
import com.zsElectric.boot.business.model.query.ThirdPartyEquipmentInfoQuery;
import com.zsElectric.boot.business.model.query.ThirdPartyStationInfoQuery;
import com.zsElectric.boot.business.model.vo.PartyStationInfoVO;
import com.zsElectric.boot.business.model.vo.ThirdPartyEquipmentInfoVO;
import com.zsElectric.boot.business.model.vo.ThirdPartyStationInfoVO;
import com.zsElectric.boot.business.model.vo.StationDetailVO;
import com.zsElectric.boot.charging.vo.ChargingPricePolicyVO;
import com.zsElectric.boot.charging.vo.QueryStationsInfoVO;

import java.util.List;

/**
 * 第三方充电站/充电桩/价格策略统一服务接口
 *
 * @author system
 * @since 2025-12-15
 */
public interface ThirdPartyChargingService {

    /**
     * 获取充电站信息分页列表
     *
     * @param queryParams 查询参数
     * @return 充电站信息分页列表
     */
    IPage<ThirdPartyStationInfoVO> getStationInfoPage(ThirdPartyStationInfoQuery queryParams);

    /**
     * 获取充电桩信息分页列表
     *
     * @param queryParams 查询参数
     * @return 充电桩信息分页列表
     */
    IPage<ThirdPartyEquipmentInfoVO> getEquipmentInfoPage(ThirdPartyEquipmentInfoQuery queryParams);

    /**
     * 获取充电桩信息集合
     *
     * @return 充电站信息集合
     */
    List<PartyStationInfoVO> getPartyStationInfo();

    /**
     * 保存充电站信息到数据库
     *
     * @param queryStationsInfoVO 充电站信息
     */
    void saveStationsInfo(QueryStationsInfoVO queryStationsInfoVO);

    /**
     * 保存价格策略信息
     *
     * @param pricePolicyVO 价格策略信息
     */
    void savePricePolicyInfo(ChargingPricePolicyVO pricePolicyVO);

    /**
     * 获取充电站信息分页列表（策略列表）
     *
     * @param queryParams 查询参数
     * @return 充电站信息分页列表
     */
    IPage<ThirdPartyStationInfoVO> getStationInfoPageByEquipment(ThirdPartyStationInfoQuery queryParams);

    /**
     * 修改站点提示语
     *
     * @param stationId 站点ID
     * @param stationTips 站点提示语
     * @return 操作结果
     */
    boolean updateStationTips(Long stationId, String stationTips);

    /**
     * 查询站点详情信息（banner、提示语、营业时间、客服电话）
     *
     * @param stationId 站点ID
     * @return 站点详情信息
     */
    StationDetailVO getStationDetail(Long stationId);

    /**
     * 修改站点详情信息（banner、提示语、营业时间、客服电话）
     *
     * @param dto 站点详情修改DTO
     * @return 操作结果
     */
    boolean updateStationDetail(StationDetailDTO dto);

    /**
     * 导出充电桩信息列表
     *
     * @param queryParams 查询参数
     * @return 充电桩导出列表
     */
    List<ThirdPartyEquipmentExportDTO> listExportEquipments(ThirdPartyEquipmentInfoQuery queryParams);

    /**
     * 修改充电桩提示语
     *
     * @param dto 修改参数
     * @return 影响行数
     */
    int updateConnectorTips(ConnectorTipsUpdateDTO dto);
}
