package com.jsowell.pile.service;

import com.jsowell.pile.domain.ThirdPartyStationRelation;
import com.jsowell.pile.dto.ThirdPartyStationRelationDTO;
import com.jsowell.pile.vo.base.MerchantInfoVO;
import com.jsowell.pile.vo.base.StationInfoVO;
import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO;

import java.util.List;

/**
 * 站点、第三方推送平台配置对应Service接口
 *
 * @author jsowell
 * @date 2023-06-06
 */
public interface ThirdPartyStationRelationService {
    // 保存到数据库
    int insertInfo2DataBase(String thirdPartyType, String stationId);
    /**
     * 查询站点、第三方推送平台配置对应
     *
     * @param id 站点、第三方推送平台配置对应主键
     * @return 站点、第三方推送平台配置对应
     */
    public ThirdPartyStationRelation selectThirdPartyStationRelationById(Long id);

    /**
     * 查询站点、第三方推送平台配置对应列表
     *
     * @param thirdPartyStationRelation 站点、第三方推送平台配置对应
     * @return 站点、第三方推送平台配置对应集合
     */
    public List<ThirdPartyStationRelation> selectThirdPartyStationRelationList(ThirdPartyStationRelation thirdPartyStationRelation);

    List<ThirdPartyStationRelation> selectRelationListByStationId(String stationId);

    List<ThirdPartyStationRelation> selectThirdPartyStationRelationList(String thirdPlatformType);

    /**
     * 通过站点id查询相关配置信息
     * @param stationId 站点id String类型
     * @return 相关配置信息
     */
    ThirdPartyStationRelationVO selectRelationInfo(String stationId);

    /**
     * 通过站点id查询相关配置信息
     * @param stationId 站点id Long类型
     * @return 相关配置信息
     */
    ThirdPartyStationRelationVO selectRelationInfo(long stationId);

    /**
     * 查询站点、第三方推送平台配置
     * @param thirdPartyStationRelation
     * @return
     */
    ThirdPartyStationRelationVO selectRelationInfo(ThirdPartyStationRelation thirdPartyStationRelation);

    /**
     * 通过站点id查询该站点对接了哪些第三方平台
     * @param stationId
     * @return
     */
    List<ThirdPartyStationRelationVO> getRelationInfoList(String stationId);

    /**
     * 新增站点、第三方推送平台配置对应
     *
     * @param thirdPartyStationRelation 站点、第三方推送平台配置对应
     * @return 结果
     */
    public int insertThirdPartyStationRelation(ThirdPartyStationRelation thirdPartyStationRelation);

    /**
     * 修改站点、第三方推送平台配置对应
     *
     * @param dto 站点、第三方推送平台配置对应
     * @return 结果
     */
    public int updateThirdPartyStationRelation(ThirdPartyStationRelationDTO dto);

    /**
     * 批量删除站点、第三方推送平台配置对应
     *
     * @param ids 需要删除的站点、第三方推送平台配置对应主键集合
     * @return 结果
     */
    public int deleteThirdPartyStationRelationByIds(Long[] ids);

    /**
     * 删除站点、第三方推送平台配置对应信息
     *
     * @param id 站点、第三方推送平台配置对应主键
     * @return 结果
     */
    public int deleteThirdPartyStationRelationById(Long id);

    int updateRelationDelFlag(String stationId, List<String> types);

    /**
     * 根据第三方平台类型查询对接第三方平台的运营商列表
     * @param thirdPlatformType
     * @return
     */
    List<MerchantInfoVO> selectMerchantList(String thirdPlatformType);

    /**
     * 根据第三方平台类型查询对接第三方平台的站点列表
     * @param thirdPlatformType
     * @return
     */
    List<StationInfoVO> selectStationList(String thirdPlatformType);
}
